[笔记] Java基础入门(25天) 毕向东day 01 (3.29) ------------------------先写注释, 再写代码. (现有思路
[笔记] Java基础入门(25天) 毕向东
day 01 (3.29) ------------------------先写注释, 再写代码. (现有思路, 在用语言表达.) /*需求: asdasd思路: 1. 2. 步骤: 1. 2. */------------------------day 02 (3.29)------------------------1. 标识符:由26个英文字母大小写, 数字和'_', '$'组成. 数字不能开头. 不能用关键字. 2. 逻辑运算符: &且, |或, ^异或, !非, &&短路且, ||短路或. 位运算符: <<左移, >>右移, >>>无符号右移, &按位与, |按位或, ^按位异或(xor), ~按位取反. 3. 所有类型与字符串用'+'连接都变成字符串. 4. 一个数异或另一个数两次还得原数. 5. 不引入新变量, 交换两书的值. a = a + b; b = a - b; a = a - b; // 如果a和b是大数, 可能超过整型的最大范围. 或 a = a ^ b; b = a ^ b; a = a ^ b;------------------------day 03 (3.30)------------------------------------------------day 04(3.30)------------------------1. int[] arr = {1,21,3,4}System.out.println(arr)输出: [I@15093f1意义: [ 表示数组的那个中括号, I 表示Integer. @后面表示内存地址. 这个的意思是: 地址为 15093f1 的指向Int型的引用------------------------day 05(3.30)------------------------------------------------day 06(3.30)------------------------1. javadoc作用于public和protected权限的类、方法等. 2. 一个类默认有一个空参数的构造函数. 这个默认的构造函数的权限和所属类一致. ------------------------day 07(3.31)------------------------------------------------day 08(3.31)------------------------------------------------day 09(3.31)------------------------1. 内部类定义在局部(如定义在方法中)时, 内部类可以访问外部类的成员, 但是不能访问内部类所在局部中的变量, 除非此变量用final修饰. 2. 匿名内部类必须有继承父类或实现接口. 格式: new 父类构造器(形参列表){...}; 或 new 实现接口{...};.------------------------day 10(3.31)------------------------1. 源码中使用package指定包的情况下, 编译时需用-d参数指定包路径. (javac -d . Test.java 会在当前路径下生成新的包文件夹并将对应.class文件放在里面; javac Test.java直接将.class文件放在当前路径. )运行时用java pack.PackageDemo命令运行当前路径下的pack文件夹中的PackageDemo.class(即使当前路径位于pack文件夹中, 运行时也要java pack.PackageDemo不能直接java PackageDemo).2. jar 看help.------------------------day 11(4.1) --> pass------------------------------------------------day 12(4.1) --> pass------------------------------------------------day 13(4.1)------------------------1. String类型初始化后不能修改, StringBuffer类型的可以. 区别:
其实很简单,就是一个变量和常量的关系
StringBuffer对象的内容可以修改
而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象
比较
StringBuffer str = new StringBuffer("a");
str.append("bc");
String str2 = "a";
str2 = str2 + "bc";
str引用的一直是同一对象
而str2引用的在两句中是完全不同的对象来源: <http://zhidao.baidu.com/question/217331590.html>
------------------------ day 14(4.1)------------------------------------------------day 15(4.1)------------------------------------------------day 16(4.1)------------------------------------------------day 17(4.1)------------------------1. for用法.for(数据类型 变量名 : 被便利的集合(Collection)或者数组){...}2. 静态导入. import static java.util.Arrays.*; // 导入的是Arrays这个类中的所有静态成员. (有重名时还是要指定所属的对象或类. )------------------------day 18(4.2)------------------------1. 字节流 和 字符流: stream结尾的都是字节流, reader和writer结尾的都是字符流. 区别是读写是一个按字节读写, 一个按字符. ------------------------day 19(4.3)------------------------1. Ctrl+c结束 对应ASCII的3, 表示"文本结束".2. StringBuffer线程同步, StringBuilder线程不同步. 其他一样. ------------------------day 20(4.3)------------------------1. 读取键盘输入BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));读取文件输入BufferedReader bufr = new BufferedReader(new FileReader(file));
// 获取键盘输入, 并输出至控制台. 遇over停止.
BufferedReader bufr =
new BufferedReader(
new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!= null)
{
if("over".equals(line))
break;
byte[] buf = line.getBytes();
System.out.println(line);
}------------------------day 21(4.3)------------------------------------------------day 22(4.4)------------------------1. Java为GUI提供的对象都存在java.Awt和javax.Swing包里. java.Awt, abstract window tookit, 抽象窗口工具包. 调用本地系统方法实现功能, 属重量级控件. javax.Swing, 在AWT基础上, 简历的一淘图形界面系统, 有更多组件. 完全由Java实现, 增强了移植性, 轻量级控件. 2. **重量级调用系统方法, 与系统更相关. 轻量级与系统依赖性弱, 移植性强. 3.
![[札记] Java基础入门(25天) 毕向东](//img.reader8.net/uploadfile/jiaocheng/20140140/2720/201401271620505034.png)
4. 容器中的组件的排放方式, 是布局. 常见布局管理器:1. FlowLayout(流式布局管理器): 从左到右的顺序排列. Panel默认的布局管理器. 2. BorderLayout(边界布局管理器): 东南西北中. Frame默认的布局管理器. 3. GridLayout(网格布局管理器): 规则的矩阵. 4. GridBagLayout(网格包式布局管理器): 非规则的矩阵(可以用n个网格表示一个组件) . 5. CardLayout(卡片布局管理器): 选项卡. 5.
import java.awt.*;
import java.awt.event.*;
public class MouseAndKeyEvent
{
private Frame f;
private Button but;
public MouseAndKeyEvent()
{
init();
}
public void init()
{
f =
new Frame("my frame");
f.setBounds(300,100,600,500);
f.setLayout(
new FlowLayout());
but =
new Button("my button");
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
/*but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("button do it");
System.exit(0);
}
});*/
but.addMouseListener(
new MouseAdapter()
{
private int count = 1;
private int clickCount = 1;
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标进入该组件" + count++);
}
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount() == 2)
System.out.println("双击动作 " + clickCount++);
}
});
but.addKeyListener(
new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
});
}
public static void main(String[] args)
{
new MouseAndKeyEvent();
}
}6. 先画界面再加事件. ------------------------day 23(4.7)------------------------1. 网络通讯要素:1. IP地址: InetAddress对象.2. 端口号: 0~65535.3. 传输协议: TCP, UDP.a. UDP:面向无连接(不管有没有连接, 就是发. 收不到拉到), 速度快, 不可靠. . 每个数据报最大64k. b. TCP: 建立连接, 效率低. 通过三次握手完成连接, 可靠协议. 进行大数据量传输. 2. 每种协议都有不同的建立Socket的方式. 3. ip地址: *.*.*.255 是广播地址, 向此网段的所有机器发送广播. 4. UDP分发送端和接收端, TCP分客户端和服务端. 5. UDP相关类DatagramSocket, DatagramPacket. TCP的Socket, ServerSocket. 6. java.io.PrintWriter对象不抛出IO异常, 调用println,printf,format方法后自动刷新(flush), println会使用不同平台的换行符. 因此, 有时候比BufferedWriter对象方便.------------------------day 24(4.9)------------------------1. public static void main(String[] args): 用java AsdClass paramater1 paramater2 命令运行时, args = {paramater1, paramater2 }------------------------day 25(4.9)------------------------<正则表达式> java.lang.String和java.util.regex1. 匹配功能: String.matches()方法. \\ 代表\\n 代表换行...等等...[abc] 代表a或b或c (可以是数字)[^abc] 代表除a,b,c以外的[a-zA-Z] 代表a到z和A到Z并集. 代表任意字符\d 数字[0-9]\D 除0到9\s 代表空白字符, [ \t\n\x0B\f\r]\S 非空白字符\w 单词字符[a-zA-Z0-9]\W 代表[^\w]X? 代表X出现一次或没有X*? 出现零次或多次X+? 代表X出现一次或多次 X{n} 出现n次X{n,} 出现最少n次X{n,m} 出现n到m次(包括)2. 切割功能: String的split()方法.(.)\1 用小括号括起来表示组, 编号从左到右从1开始(组0代表整个表达式). \1表示第一组所匹配过的再次出现. 例如: "sdfqqKjljkksdzz".split("(.)\\1") 可以将字符串从qq,kk,zz处分割. 3. 替换功能: String的replaceAll()方法和replaceFirst()."abccdeffg".replaceAll("(.)\\1", "$1"); 得到"abcdefg"字符串. $符号表示取前一个正则表达式的组. 4. 获取功能: a. 将正则表达式封装成对象, b. 让正则对象和字符串关联, c. 关联后, 获取正则匹配引擎, 4. 通过引擎对符合规则的字串进行操作, 比如取出使用java.util.Matcher的group()方法取出, 使用group()取出之前需要先用find()方法查找一下.
import java.util.regex.*;
class RegexDemo2
{
public static void main(String[] args)
{
getDemo();
}
// 获取长为三的单词.
public static void getDemo()
{
String str = "ming tian jiu yao fang jia le ,da jia. ";
String reg = "\\b[a-zA-Z]{3}\\b";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
while(m.find())
{
System.out.println(m.group());
System.out.println(m.start()+"...."+m.end());
}
}
}