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

写在前面:
大家好,我是 花狗Fdog ,来自内蒙古的一个小城市,目前在泰州读书。
很感谢能有这样一个平台让我能够在这里分享所学所感。
我喜欢编程,喜欢代码,喜欢去做一个程序员。
努力学习,争取多年后,给亲人更好的生活。
QQ/WX:2506897252 欢迎交流。



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()方法强制启动垃圾回收器。


若有错误,欢迎指正批评,欢迎讨论。
每文一句:人最大的困难是认识自己,最容易的也是认识自己。很多时候,我们认不清自己,只因为我们把自己放在了一个错误的位置,给了自己一个错觉。所以,不怕前路坎坷,只怕从一开始就走错了方向。

发布了42 篇原创文章 · 获赞 72 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Fdog_/article/details/104180491