java基础9
Object
- 顶级父类。
- 任何一个类都将Object作为父类,也就意味着任何一个对象都可以赋值给Object对象。
- Object类也是Java中唯一的一个没有父类的类。
- Object:顶级父类。任何一个类都将Object作为父类使用,也因此所有的对象都可以赋值给Object对象 -Lambda表达式不能直接赋值给Object
- getClass:获取对象的实际类型;
- equals:比较两个对象是否相等。比较的时候默认是比较的两个对象的地址,但是实际中往往要重写(地址、参数、类型、属性);
- toString:当打印对象的时候最底层往往是调用对象的toString
重要方法 - clone() — 如果一个对象要想被克隆,那么这个对象所对应的 类必须实现接口— Cloneable —这个接口中没有任何的方法和属性仅仅起标志性的作用
- 克隆之后的对象的属性值和原对象的属性值一样
- finalize() — 通知GC回收垃圾,GC不一定启动
String
- 最终类,常量,代表字符串的类,所有的字符串都是String的对象。
- 字符串是一个常量,定义好之后不可改变。
- 底层是依靠字符数组来存储数据并且该字符数组定义好之后不可变
- 只要是值一致的字符串在方法区中用的一定是同一个
- 因为字符串是一个常量,所以它是被共享的 — 只要值相同,用的都是同一个字符串
- 字符串本质上是一个不可变的字符数组
- 操作不改变原字符串
- 注意:在String中提供了一系列操作而不改变原字符串的方法,大部分都是产生了一个新的字符串
如果拼接的字符串个数比较多,建议使用StringBuilder;如果个数比较少的话可以使用+
String str = “abc”; --- 1
String str = new String(“abc”); --- 2
String str = “a”; --- 1
str = str + “b”; ->
str = new StringBuilder(str).append(“b”).toString(); - 4
String[] strs = {/* 100个元素 */};
// 将字符串数组中的所有元素进行拼接
// 使用+进行拼接 --- 整个过程要产生301个对象
String str = “”; // 1
for(String s : strs)
str += s; // 每拼接1次要额外产生3个对象,拼接100次要额外产生300个对象
// 使用StringBuilder进行拼接 --- 整个过程中要额外产生102个对象
StringBuilder sb = new StringBuilder(); // 1
for(String s : strs)
sb.append(s); // 每拼接1次要额外产生1个对象(因为拼接后就是一个对象),拼接100次要额外产生100个对象
String str = sb.toString(); // 1
如果拼接的字符串个数比较多,建议使用StringBuilder;如果个数比较少的话可以使用+
方法
-
instanceof — 判断对象和类的关系的 只要前边的对象是后边的类/子类/接口/子接口产生的实例,就返回一个true
-
获取的是对象的实际类型 – o.getClass()
-
底层默认使用==进行比较 — 比较两个对象的地址是否一样System.out.println(p1.equals(p2));
可以重写equal方法,比较属性值(内容)是否相同 -
表示获取从1970-01-01 00:00:00到现在的毫秒值 long begin =
System.currentTimeMillis();