初识Java(Java类和对象-对象的引用) 2022-05-26 02:43 234阅读 0赞 ### 一、对象的引用 ### 在 Java 语言中尽管一切都可以看做对象,但真正的操作标识符实质上是一个引用,那么引用在 Java 中是如何体现的呢? 语法 :类名 对象引用名称 eg : Book book; 通常一个引用不一定需要有一个对象相关联。 引用与对象相关联的语法 : Book book = new Book(); Book :类名 book :对象 new :创建对象操作符 引用只是存放一个对象的内存地址,并非存放一个对象,严格地说引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说 book 是 Book 类的一个对象,而事实上应该是 book 包含 Book 对象的一个引用。 ### 二、对象的比较 ### 在 Java 语言中由两种对象的比较方法,分别为 “ == ”运算符与 equals() 方法。实质上这两种方式有着本质区别。 eg :创建类,说明“ == ”运算符 与 equals() 方法的区别 public class Compare { public static void main(String[] args){ String c1 = new String("abc"); //创建 String 型对象引用 c1 String c2 = new String("abc"); //创建 String 型对象引用 c2 String c3=c1; //将 c1 对象引用赋予 c3 //使用 " == " 运算符比较 c2 与 c3 System.out.println("c2==c3的运算结果为:"+(c2 == c3)); //使用 " == " 运算符比较 c1 与 c3 System.out.println("c1 == c3 的运算结果为:"+(c1 == c3)) //使用 equals() 方法比较 c2 与 c3 System.out.println("c2.equals(c3)的运算结果为:"+(c2.equals(c3))); } } 运行结果为 : c2 == c3 的运算结果为:false c1 == c3 的运算结果为:true c2.equals(c3) 的运算结果为:true 结果中可以看出,“ == ”运算符和 equals() 方法比较的内容是不同的, equals() 方法是 String 类中的方法,它用于比较两个对象引用所指的内容是否相等;而“ == ”运算符比较的是两个对象引用的地址是否相等。由于 c1 与 c2 是两个不同的对象引用,两者在内存中的位置不同,而 String c3 = c1 ; 语句将 c1 的引用赋给 c3 ,所以 c1 与 c3 这两个对象引用是相等的,也就是打印 c1 == c3 这样的语句将返回 true 值。 ### 三、对象的销毁 ### 每个对象独有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收。在其他语言中西药手动回收废弃对象,但是 Java 拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器将回收无用的但占用内存的资源。 主要有两种情况下的对象会被 Java 虚拟机视为垃圾: ( 1 )对象引用超过其作用范围,这个对象将被视为垃圾; 如 : { Example e = new Example(); } //在这个大括号外引用对象 e ( 2 )将对象赋值为 null 。 如 : { Example e = new Example(); e = null; //当对象被置为 null 时,将消亡 } 虽然垃圾回收机制已经很完善,但垃圾回收器只能回收那些由 new 操作符创建的对象,如果某些对象不是通过 new 操作符在内存中获取一块内存区域,这种对象可能不能被垃圾回收机制所识别,所以在 Java 中提供了一个 finalize() 方法。这个方法时 Object 类的方法,它被声明为 protectd ,用户可以在自已的类中定义这个方法。如果用户在类中定义了 finalize() 方法,在垃圾回收时会首先调用该方法,在下一次垃圾回收动作发生时,才能真正回收被对象占用的内存。 垃圾回收或 finalize() 方法不保证一定发生,如 Java 虚拟机内存损耗待尽时,它是不会执行垃圾回收的。 由于垃圾回收不受人为控制,具体执行期间也不确定,所以 finalize() 方法也就无法执行,为此,Java 提供了 System.gc() 方法强制启动垃圾回收器,告知垃圾回收器进行清理。
相关 JavaScript对象及初识面向对象 第一题 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <tit 谁践踏了优雅/ 2021年11月23日 04:10/ 0 赞/ 226 阅读
相关 初识类和对象 python中一切皆为对象,类型的本质就是类。 类的相关知识 def functionName(args): '函文档字符串' ''' class类名 灰太狼/ 2021年12月24日 10:19/ 0 赞/ 259 阅读
相关 C++类与对象初识 引入:在我们编程语言中,想必大家都应该听说过面向过程编程与面向对象编程,那么到底什么是面向过程编程什么是面向对象编程呢?对于这个问题我想大家都应该听我们的老师讲过一个生动而又形 青旅半醒/ 2022年02月03日 04:13/ 0 赞/ 375 阅读
相关 初识Java(Java类和对象-对象) 一、对象 Java 是一门面向对象的程序设计语言,对象时由类抽象出来的,所有的问题都通过对象来处理,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生、操作和消 亦凉/ 2022年05月25日 23:48/ 0 赞/ 286 阅读
相关 初识Java(Java类和对象-对象的引用) 一、对象的引用 在 Java 语言中尽管一切都可以看做对象,但真正的操作标识符实质上是一个引用,那么引用在 Java 中是如何体现的呢? 语法 :类名 对象引用名 朱雀/ 2022年05月26日 02:43/ 0 赞/ 235 阅读
相关 初识Java(Java类和对象-类的构造方法) 一、类的构造方法 在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时 浅浅的花香味﹌/ 2022年05月26日 20:00/ 0 赞/ 181 阅读
相关 初识Java(Java类和对象-面向对象概述) 一、面向对象概述 面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有相应的属性以及展示这些对象的行为,已解决这些对象面临的一些实 悠悠/ 2022年05月27日 07:28/ 0 赞/ 226 阅读
相关 初识Java(Java类和对象-类) 一、类 类是封装对象的属性和行为的载体,而在 Java 语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。 1.1 成员变量 在 Java 向右看齐/ 2022年05月27日 08:58/ 0 赞/ 241 阅读
相关 初识kotlin—4、方法和对象 前言:今年谷歌宣布kotlin(以下简称为kt)已经成为安卓的官方开发语言,kt的重要性可想而知。就我大约接触一个月的时间来看(中间有事情耽误了),16年的时候以为kt还比较新 ゝ一世哀愁。/ 2022年06月08日 03:56/ 0 赞/ 175 阅读
相关 类对象的指针和引用 使用类对象的指针和引用——特别是引用,在面向对象编程和函数形参说明方面——特别是后者,非常重要。类对象可能涉及相当多的数据,因此使用按值传递机制(将函数形参指定为对象)可能非常 た 入场券/ 2022年08月27日 06:56/ 0 赞/ 57 阅读
还没有评论,来说两句吧...