1.对象的打印操作
打印对象的时候,打印出来的效果,sevant@3294e4f4.(类的名称 @ 十六进制的hashcode).
其实,我们打印对象往往关心的是对象里的数据,object的toString方法.
2.对象的比较操作
==号对于基本数据类型来说,比较的是值,对于引用数据类型来说,比较的是内存中的地址.
每次使用new关键字,都表示在堆中开辟一块内存空间,不同的内存空间地址值不同.
需求:如果对象拥有相同的数据,我就想让他们相等,object的equals方法.
3.对象的生命周期
对象什么时候出生:每次使用new关键字的时候,就会在内存开辟新空间,此时对象就存在.
对象的结束:当堆中的对象没有任何变量引用,此时对象就成了垃圾,就等着垃圾回收器(gc)来回收该垃圾。回收垃圾的目的是为了释放更多的内存空间。
4.匿名对象
创建对象之后没有赋值给变量.
new Servant();因为没有名称,该对象只能使用一次。
例如:new servant().name="a"
new servant().name="b"
当new一次就创建一个对象,所以这是两个对象.
一般的,把匿名对象作为方法的实参传递.
学生缴费案例
public class studentFee {
String name;
boolean isFee;
void fees() {
isFee = true;
}
public static void main(String[] args) {
studentFee s1=new studentFee();
s1.name="lily";
s1.isFee=true;
studentFee s2=new studentFee();
s2.isFee=false;
s2.name="wang";
studentFee s3=new studentFee();
s3.name="ming";
s3.isFee=false;
studentFee s4=new studentFee();
s4.name="kai";
s4.isFee=true;
studentFee arr[]=new studentFee[]{s1,s2,s3,s4};
for(int k=0;k<arr.length;k++)
{
if(!arr[k].isFee){
arr[k].fees();
}
}
}