java学习之路:15.对象的创建,属性,行为,引用,比较,销毁

时间:2022-07-28
本文章向大家介绍java学习之路:15.对象的创建,属性,行为,引用,比较,销毁,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.对象的创建

和数组一样,在Java中使用new来调用构造方法来创建对象,学到这里倒是让我想到了C++,果然有了C和C++的基础,学习java会很快。言归正传,语法如下: 类名 对象名 = new 类名(参数) 这里的参数指构造方法的参数,如构造方法无参,则不用写。 当创建对象时,自动调用构造方法,也就是说在java中初始化与创建是被捆绑在一起的。 每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成垃圾,由java虚拟机自带的垃圾回收机制处理,不能再被使用。

2.访问对象的属性和行为

创建出对象后,可以使用对象.类成员来获取对象的属性和行为,也就是成员变量和成员方法,这些在前文提到过。所以对象获取类成员就是获取属性和行为。 编写代码:

package number;
public class Book {
    int i=666;
    public void Pr()
    {
     System.out.println(i);
    }
}
//首先在项目中创建一个类,并定义一个成员变量
public class Xuexi {
 public static void main(String[] args) {
    Book book1 =new Book();  //创建一个对象
    book1.i=999;
    Book book2 =new Book();  //创建一个对象
    book1.Pr();
    book2.Pr();
 }
}
//在主方法中创建两个Book对象

运行结果如下:

通过结果,我们可以很好的证明每个对象是独立的,我们改变了book1中i的值,但是boo2中的i值还是原来的。接下来,我们把i修改为静态变量,看一看效果如何:

package number;
public class Book {
    static int i=666;
    public void Pr()
    {
     System.out.println(i);
    }
}

结果如下:

可以看到声明了静态的变量是可以被共用的。

3.对象的引用

在Java语言中一切都可以看作对象,单正在的操作标识符实质上是一个引用,引用在Java中的语法如下: 类名 对象引用名称 Book book;这边是引用 Book book=newBook();这边是引用与对象相关联 引用只是存放一个对象的内存地址,并非存放一个对象。严格地说,引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说book是Book的一个对象,而事实上应该是book包含Book对象的一个引用。

4.对象的比较

Java语言中有两种对象的比较方法,分别为“==”运算符和equals()方法。

equals()方法是String类中的方法,它用于比较两个对象引用所指的内容是否相等

而”==“运算符比较的是两个对象引用的地址是否相等。

package number;
public class Xuexi {
 public static void main(String[] args) {
String c1=new String("huagou");
String c2=new String("huagou");
System.out.println("==       c1和c2运算结果"+(c1==c2));
System.out.println("equals   c1和c2运算结果"+c1.equals(c2));
 }
}

运行结果:

5.对象的销毁

每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收。在其他语言中需要手动回收废弃的对象,但是Java拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器将回收无用的但占用内存的资源。 Java将下面两种情况视为垃圾: 1.对象引用超过作用范围。 2.将对象赋值为null。

回收机制只能回收使用new创建的对象,如果不是通过new在内存中获取了一块内存,这种对象可能不被垃圾回收机制所识别,所以java提供了一个finalize()方法,这个方法是Object类的方法,它被声明为protected,用户可以在自己的类中定义这个方法,如果在类中定义了这个方法,在垃圾回收时,会首先调用该方法,在下一次垃圾回收动作发生时,才能真正回收内存。

java还提供了System.gc()方法强制启动垃圾回收器。