1:Object类(掌握) (1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。 (2)Object类的构造方法有一个,并且是无参构造 这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造 (3)要掌握的方法: A:toString() 返回对象的字符串表示,默认是由类的全路径+’@’+哈希值的十六进制表示。 这个表示其实是没有意义的,一般子类都会重写该方法。 如何重写呢?过程我也讲解过了,基本上就是要求信息简单明了。 但是最终还是自动生成。 B:equals() 比较两个对象是否相同。默认情况下,比较的是地址值是否相同。 而比较地址值是没有意义的,所以,一般子类也会重写该方法。 重写过程,我也详细的讲解和分析了。 但是最终还是自动生成。 (4)要了解的方法: A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。 B:getClass() 返回对象的字节码文件对象,反射中我们会详细讲解 C:finalize() 用于垃圾回收,在不确定的时间 D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。 (5)两个注意问题; A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。 B:面试题 ==和equals()的区别? A:== 基本类型:比较的是值是否相同 引用类型:比较的是地址值是否相同 B:equals() 只能比较引用类型。默认情况下,比较的是地址值是否相同。 但是,我们可以根据自己的需要重写该方法。
/* * public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。 * 这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法。 * 怎么重写呢? * 一般都是用来比较对象的成员变量值是否相同。 * 重写的代码优化:提高效率,提高程序的健壮性。 * 最终版: * 其实还是自动生成。 * * 看源码: * public boolean equals(Object obj) { * //this - s1 * //obj - s2 * return (this == obj); * } * * ==: * 基本类型:比较的就是值是否相同 * 引用类型:比较的就是地址值是否相同 * equals: * 引用类型:默认情况下,比较的是地址值。 * 不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同 */public class StudentDemo { public static void main(String[] args) { Student s1 = new Student("林青霞", 27); Student s2 = new Student("林青霞", 27); System.out.PRintln(s1 == s2); // false Student s3 = s1; System.out.println(s1 == s3);// true System.out.println("---------------"); System.out.println(s1.equals(s2)); // obj = s2; //false System.out.println(s1.equals(s1)); // true System.out.println(s1.equals(s3)); // true Student s4 = new Student("风清扬",30); System.out.println(s1.equals(s4)); //false Demo d = new Demo(); System.out.println(s1.equals(d)); //ClassCastException }}class Demo {}2:Math(掌握) (1)针对数学运算进行操作的类 (2)常见方法(自己补齐) A:绝对值 B:向上取整 C:向下取整 D:两个数据中的大值 E:a的b次幂 F:随机数 G:四舍五入 H:正平方根
package cn.itcast_01;/* * Math:用于数学运算的类。 * 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * public static double ceil(double a):向上取整 * public static double floor(double a):向下取整 * public static int max(int a,int b):最大值 (min自学) * public static double pow(double a,double b):a的b次幂 * public static double random():随机数 [0.0,1.0) * public static int round(float a) 四舍五入(参数为double的自学) * public static double sqrt(double a):正平方根 */public class MathDemo { public static void main(String[] args) { // public static final double PI System.out.println("PI:" + Math.PI); // public static final double E System.out.println("E:" + Math.E); System.out.println("--------------"); // public static int abs(int a):绝对值 System.out.println("abs:" + Math.abs(10)); System.out.println("abs:" + Math.abs(-10)); System.out.println("--------------"); // public static double ceil(double a):向上取整 System.out.println("ceil:" + Math.ceil(12.34)); System.out.println("ceil:" + Math.ceil(12.56)); System.out.println("--------------"); // public static double floor(double a):向下取整 System.out.println("floor:" + Math.floor(12.34)); System.out.println("floor:" + Math.floor(12.56)); System.out.println("--------------"); // public static int max(int a,int b):最大值 System.out.println("max:" + Math.max(12, 23)); // 需求:我要获取三个数据中的最大值 // 方法的嵌套调用 System.out.println("max:" + Math.max(Math.max(12, 23), 18)); // 需求:我要获取四个数据中的最大值 System.out.println("max:" + Math.max(Math.max(12, 78), Math.max(34, 56))); System.out.println("--------------"); // public static double pow(double a,double b):a的b次幂 System.out.println("pow:" + Math.pow(2, 3)); System.out.println("--------------"); // public static double random():随机数 [0.0,1.0) System.out.println("random:" + Math.random()); // 获取一个1-100之间的随机数 System.out.println("random:" + ((int) (Math.random() * 100) + 1)); System.out.println("--------------"); // public static int round(float a) 四舍五入(参数为double的自学) System.out.println("round:" + Math.round(12.34f)); System.out.println("round:" + Math.round(12.56f)); System.out.println("--------------"); //public static double sqrt(double a):正平方根 System.out.println("sqrt:"+Math.sqrt(4)); }}(3)案例: A:猜数字小游戏package cn.itcast_02;import java.util.Scanner;/* * 需求:请设计一个方法,可以实现获取任意范围内的随机数。 * * 分析: * A:键盘录入两个数据。 * int strat; * int end; * B:想办法获取在start到end之间的随机数 * 我写一个功能实现这个效果,得到一个随机数。(int) * C:输出这个随机数 */public class MathDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入开始数:"); int start = sc.nextInt(); System.out.println("请输入结束数:"); int end = sc.nextInt(); for (int x = 0; x < 100; x++) { // 调用功能 int num = getRandom(start, end); // 输出结果 System.out.println(num); } } /* * 写一个功能 两个明确: 返回值类型:int 参数列表:int start,int end */ public static int getRandom(int start, int end) { // 回想我们讲过的1-100之间的随机数 // int number = (int) (Math.random() * 100) + 1; // int number = (int) (Math.random() * end) + start; // 发现有问题了,怎么办呢? int number = (int) (Math.random() * (end - start + 1)) + start; return number; }} B:获取任意范围的随机数新闻热点
疑难解答