相关标签:
Java
Object的toString方法
- 我们在打印一个类的时候,默认调用其父类Object的toString方法,输出其字节码对象和哈希码
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
- 如果该类重写了其父类的toString方法,则按照其重写的输出
System.out.println(Object); System.out.println(Object.toString()); //这两个语句在子类没有重写toString方法的时候是等效的
- 本质上来说,是由于System.out是一个PrintStream,其println方法中的定义:
public void println(Object x) { String s = String.valueOf(x); synchronized (this) { print(s); newLine(); } }
- 而对应的String类的 valueOf() 方法中:
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
- 所以输出时总会调用对象的toString方法
获取字节码对象的方式
- 通过其父类定义的getClass方法来获取其字节码:
Object o = new Object(); Class c = o.getClass();
- 通过类名调用属性class来获取:
Class c = Student.class(); //此处Student是一个类
- 通过Class类的静态方法 forName() 来获取:
Class c = Class.forName("类名"); //需要抛出ClassNotFoundException异常
Object的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
- 从Object类中的定义看出, equals 方法默认比较两个引用对象的地址值是否一致
- 其他类由于是Object类的子类,可以重写其父类的equals方法而设定其本身的“相等”的含义
System类的概述
- 系统类,由于其构造方法被私有化,故不能创建对象,可以看作一个工具类
System类的arraycopy方法测试
这是一个native方法
public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
// 目标数组 复制起点 目标数组 粘贴起点 粘贴个数
- 调用这个方法后直接对Object dest进行修改
System类的其他方法
- currentTimeMillis() 方法
- 获取当前时间的毫秒值,该毫秒值以1970年1月1日0时0分为起点
- 由于时差,调用时各时区可能会得到不同的结果
- exit(int status) 方法
- 其中status表示退出状态,0表示正常退出,非0表示异常退出
- 应用:异常码
- 其中status表示退出状态,0表示正常退出,非0表示异常退出
Date类的概述和构造
- 快要过时的一个类,用于表示时间
- 时间的起点为1970年1月1日0时0分,通常为毫秒值
Date类的常用方法
- 构造方法
Date d = new Date(); //此时d引用所指向的对象是代表d被创建时的系统时间,仍然是long类型的毫秒值,以1970年1月1日0时0分为起点 Date d1 = new Date(long time); //此时d引用所指向的对象仍然代表一个时间,为以1970年1月1日0时0分为起点之后time毫秒的时间点
- getTime() 方法
Date d = new Date(); long time = d.getTime(); //返回一个long类型的值,为Date对象所代表的时间
- setTime() 方法
Date d = new Date(); d.setTime(long time); //该方法无返回值,需提供一个long类型的参数,将Date对象所代表的时间设置为该值
SimpleDateFormat的概述
- 抽象类DateFormat的子类
Calendar的概述和测试
- 用于替换过时类Date
- Calender是抽象类,无法创建对象
Calender c = Calender.getInstence(); //根据时区创建一个Calendar的子类对象,用Calendar的引用接收(多态)
Calendar类的常用方法
- get(Calender.YEAR) 方法
- 返回一个int值,该值在Calender对象中代表年份,月份等其他信息由其他的字段对应,也都有相应的get方法
- 在获取或设置月份时,Calendar.MONTH所对应的字段一月是从0开始的,也就是说这个字段的取值范围是0 ~ 11而不是1 ~ 12
- set(int field, int value);
- 无返回值,将Calendar对象中对应的字段改为value,起到设置Calendar表示的时间的作用
- add(int field, int amount);
- 无返回值,将Calendar对象中对应的字段增加amount的值,起到修改Calendar表示的时间的作用
- 该方法的作用与set(int field,get(field)+amount) 相同
- 如果amount的值为负,则表示将其对应的时间回退
包装类的概述和基本使用
- 对于基本数据类型,Java对其都有相应的包装类,也就是说每一个基本数据类型都可以对应一个类,从而更方便我们对基本数据类型进行一些操作
//以Integer为例: //将int转换为String类型: String s = 1+""; //利用字符串加减的特性 String s1 = Integer.toString(1); //调用Integer类的方法 //将String转换为int类型: int i = Integer.parseInt("123"); //调用Integer类的方法
自动装箱和拆箱
- 自动装箱
- 将基本数据类型转换为其对应的包装类
Integer i = 10;
- 将基本数据类型转换为其对应的包装类
- 自动拆箱
- 将基本数据类型对应包装类的对象转换为基本数据类型
int i = 10; Integer i1 = i + 10;
- 将基本数据类型对应包装类的对象转换为基本数据类型
正则表达式的概述
- 就是字符串, 但这个字符串有一定的规则
- 规则:
y:就代表y \\ [abc] :a或b或c [123] :1或2或3 [a-z] : 是小写字母吗 [a-zA-Z]: 是字母吗 [A-Z]:是大写字母吗 . :任意的字符 \\. : .字符 \\d : digit [0-9] \\D : \\w : word 符合 [a-zA-Z_0-9] \\W: \\s: space \\S: str = str.replace(/[\s\.]/g,""); \\d{5}: .{5-10} \\w{5,} [123]* *表示零次或多次 [abc]+ +表示1次或多次
- 规则: