文章目录
Object类
概念:
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。所有的类都直接或者间接的继承自Object类。该类的设计也符合面向对象中“万事万物皆对象”的思想。
构造方法 :
public Object()
任何一个类都会调用这个方法,访问子类构造方法的首先会先访问父类无参的构造方法。
clone方法
protected Object clone()
创建并返回此对象的一个副本。
public class ObjectDemo {
public static void main(String[] args) throws CloneNotSupportedException {
Student s1 = new Student("张飞", 20);
Student s2 = new Student("曹操", 30);
Object s1Clone = s1.clone();
Student s3 = (Student)s1Clone;
System.out.println(s3.getName() + "|" + s3.getAge());
Student s4 = s1;
System.out.println(s1 == s4); // true
System.out.println(s1 == s3); // false
s3.setName("刘备");
s3.setAge(30);
System.out.println(s1.getName() + "|" + s1.getAge());
System.out.println(s3.getName() + "|" + s3.getAge());
}
}
public class Student extends Object implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public interface Cloneable {
}
finalize()方法
当垃圾回收器确定不存在对该对象的更多引用时,
由对象的垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。
public class ObjectDemo {
public static void main(String[] args) throws Throwable {
Student s1 = new Student();
s1.finalize();
s1 = null;
}
}
public class Student{
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
String类
概念 : 多个字符组成的字符序列,也可以理解为字符数组。
特点:
1.Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
2.字符串是常量,它们的值在创建之后不能更改;字符串缓冲区支持可变的字符串,因为 String 对象是不可变的,所以可以共享。
3.所有的常量在内存的方法区的常量池中
4.频繁的字符串拼接操作会导致常量池容器增加,浪费内存资源
5.字符串缓冲区【StringBuffer,StringBuilder】支持可变的字符串
6.Java在编译时期会针对字符串的拼接操作使用StringBuilder改进,提高效率,节约内存资源
s = (new StringBuilder(String.valueOf(s))).append(“efg”).toString();
System.out.println((new StringBuilder(“s:”)).append(s).toString());
7.因为 String 对象是不可变的,所以可以共享
8.字符串本质是字符数组
String类构造方法
字符串常用方法1
-
public String()
-
public String(String original)
-
public String(char[] value)
-
public String(char[] value, int offset, int count)
-
public String(byte[] bytes)
-
public String(byte[] bytes, int offset, int length)
-
String(byte[] bytes, String charsetName)
public class StringDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String s1 = "";
String s2 = new String();
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
// public String(String original)
String s3 = new String("abc");
System.out.println(s3);
// public String(char[] value)
char[] chs = {
'a', 'b', 'c', 'd'};
String s4 = new String(chs);
System.out.println(s4);
// public String(char[] value, int offset, int count)
String s5 =