Object类
1)java.lang.Object 类,是所有类的根父类
2)Object类仅有一个空参的构造器 public Object(){ }
3)关于方法:
① equals(Object obj)
基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,反之返回false
注:两端数据类型可以不同,在不同的情况下,也可以返回true。
引用数据类型:比较引用类型变量的地址值是否相等
像String 包装类 File类 Date类这些重写Object类的equals()方法,比较是两个对象的"实体内容"是否完全相同。equals(Object obj)方法
② toString()方法
当我们输出一个对象的引用时,会调用toString()方法。
当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置
一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。
4)包装类
基本数据类型由于不是类,不能够使用java类库里提供的大量的方法。所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。这些类即为包装类(wrapper 或封装类)
简易版:1.基本数据类型与对应的包装类有自动装箱、自动拆箱如:
<code>int i = 10;
Integer i1 = i;//自动装箱
int j = i1;//自动拆箱</code>
2.基本数据类型、包装类---->String类:调用String类的重载的valueOf(Xxx xx);String类---->基本数据类型、包装类:调用相应的包装的parseXxx(String str)
注意:String str = "123";int i = (int)str;是错误的转法
static关键字
1)static:静态的,可以用来修饰属性、方法、代码块(或初始化块)、内部类
2)static修饰属性(类变量):
1.由类创建的所有的对象,都共用这一个属性
2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。vs 实例变量(非static修饰的属性,各个对象各自拥有一套副本)
3.类变量随着类的加载而加载的,而且独一份
4.静态的变量可以直接通过“类.类变量”的形式来调用
5.类变量的加载是要早于对象。所以当有对象以后,可以“对象.类变量”使用。但是"类.实例变量"是不行的。
6.类变量存在于静态域中。
2)static修饰方法(类方法):
1.随着类的加载而加载,在内存中也是独一份
2.可以直接通过“类.类方法”的方式调用
3.内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法是可以调用静态的属性或静态的方法
静态的方法内是不可以有this或super关键字的
静态的结构(static的属性、方法、代码块、内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构