java实例对象

article/2025/8/30 19:48:29

应用程序想要完成具体的功能,仅有类是远远不够的,还需要想据类创建实例对象。在Java程序中,可以使思new关键字来创建对象,具体语法格式如下:类名 对象名称 = new 类名();
例如,创建Person类的实例对象代码如下:Person p = new Person0);
上面的代码中,“new Person()”用于创建Person类的一个实例对象,“Person p”则是声明了一个Person类型的变量p,中间的等号用于将Person对象在内存中的地址赋值给变量p,这样变量p便持有了对象的引用。为了便于描述,本书接下来的章节,通常会将变量p引用的对象简称为p对象。在内存中变呈p和对象之间的引用关系如图1所示。
在这里插入图片描述从图1可以看出,在创建Person对象时,程序会占用两块内存区域,分别是栈内存和堆内存。其中Person类型的变量p被存放在栈内存中,它是一个引用,会指向真正的对象;通过new Person()创建的对象则放在堆内存中,这才是真正的对象。
小提示:
Java将内存分为两种,即栈内存和堆内存。其中栈内存用于存放基本类型的变量和对象的引用变量(如Person p),堆内存用于存放由new创建的对象和数组。
在创建Person对象后,可以通过对象的引用来访问对象所有的成员,具体格式如下:对象引用.对象成员接下来通过一个案例来学习如何访问对象的成员,如文件1所示。

ExampleO2.javapublic class Example02{public static void main(String[] args){Person p1 = new Person();//创建第一个Person类对象Person p2 = new Person();//创建第二个Person类对象p1.age = 18;//为age属性赋值p1.speak();//调用对象的方法p2.speak();}
}

文件1中,p1、p2分别引用了Person类的两个实例对象。从图2可以看出, p1和p2对象在调用speak()方法时,打印的age值不同。这是因为p1对象和p2对象是两个完全独立的个体,它们分别拥有各自的age属性,对p1对象的age属性进行赋值并不会影响到p2对象age属性的值。程序运行期间p1、p2引用的对象在内存中的状态如图3所示。
在这里插入图片描述图3P1、P2对象在内存中的状态小提示:
在实际情况下,除了可以使用文件3-2中介绍的对象引用来访问对象成员外,还可以直接使用创建的对象本身来引用对象成员,具体格式如下: new类名().对象成员
这种方式是在通过new关键字创建实例对象的同时就访问了对象的某个成员,并且在创建后只能访问其中某一个成员,而不能像对象引用那样可以访问多个对象成员。同时,由于没有对象引用的存在,在完成某一个对象成员的访问后,该对象就会变成垃圾对象。所以,在实际开发中,创建实例对象时多数会使用对象引用。
在文件1中,通过“p1.age=18”将p1对象的age属性赋值为18,但并没有对p2对象的age属性进行赋值,按理说p2对象的age属性应该是没有值的。但从图2可以看出,p2对象的age属性也是有值的,其值为O。这是因为在实例化对象时,Java虚拟机会自动为成员变量进行初始化,针对不同类型的成员变量赋予不同的初始值,如表1所示。
表1成员变量的初始化值
z当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员。需要注意的是,当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。接下来通过两段程序代码来分析对象是如何成为垃圾的。
第一段程序代码:{
Person pl = new Person(); ……]
上面的代码中,使用变量p1引用了一个Person类型的对象。当这段代码运行完毕时,变量p1就会超出其作用域而被销毁,这时Person类型的对象将因为没有被任何变量所引用而变成垃圾。
第二段程序代码:{
Person p2 = new Person0;
p2 = null; …}

上面的代码中,使用变量p2引用了一个Person类型的对象,接着将变量p2的值置为null,则表示该变量不指向任何一个对象,被p2所引用的Person对象就会失去引用,成为垃圾对象,过程如图4所示。在这里插入图片描述


http://chatgpt.dhexx.cn/article/9ZHwcTDV.shtml

相关文章

JAVA实例

JAVA实例 1. 类(class)与对象(object)      Class类注释对于Class的定义: Class 类的实例表示正在运行的 Java 应用程序中的类和接口。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用…

CH2-Java编程基础(7个案例实现)

【案例2-1】 库房出入货物程序设计 【案例介绍】 任务描述 ​ 现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,可以在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息以及所有商品的总库存数和库…

SQL关键字模糊查询

在对应的需要模糊查询的字段前将去除 改为like %${et.questionContent}%即可 本例中用et.questionContent举例

SQL模糊查询(Like, Regexp)

先创建一张表 drop table if exists samplelike; CREATE TABLE samplelike ( strcol VARCHAR(6) NOT NULL PRIMARY KEY); -- DML :插入数据 START TRANSACTION; -- 开始事务 INSERT INTO samplelike (strcol) VALUES (abcddd); INSERT INTO samplelike (strcol) VA…

sql模糊查询like并使用concat拼接

模糊查询insure_company,左起0104开头,右边模糊匹配。(like 搭配%表示模糊匹配,concat拼接),claim_date同。 放入mapper.xml文件中时,只需用#{ 参数名 } 代替sql查询中的具体数据即可。

mysql 模糊查询时间段_关于SQL模糊查询日期时间的方法

展开全部 有以下三种方法: 1、Convert转成String,在用Like查询 select * from table1 where convert(varchar,yourtime,120) like 2017-06-30% 2、Between select * from table1 where yourtime between 2017-06-30 0:00:00 and 2017-06-30 24:59:59…

SQL 模糊查询后按匹配度排序 CASE WHEN THEN

表如下: SELECT * FROM "table1" where name like %玉米% 很明显这个会返回所有的行,因为每行都满足条件 若我想在模糊查询后,进行排序,完全匹配的放在最前面,其余的放后面,可以使用case…

动态SQL 模糊查询 联表查询

1. 正文 1. set标签 和 foreach标签 trim标签 sql片段 2. mybatis映射文件处理特殊字符. 3. mybatis完成模糊查询。 4. 联表查询 2. 动态sql 2.1 set标签 这个配合if标签一起用,一般用在修改语句。如果传递的参数值为null,那么应该不修改该列的值…

动态sql模糊查询和分页

文章目录 动态sql模糊查询查询返回结果集的处理分页 动态sql BookMapper xml bookservice 测试: MapperSql.test 运行: 模糊查询 BookMapper BookMapper.xml Bookservice StringUtiles 测试: 一共介绍了三种模糊查询的方法&#…

每日一课 | SQL模糊查找

07. SQL模糊查找 大家好,我是小C,上期给大家分享——通过查询条件实现数据过滤(完结篇) 本期分享内容:SQL模糊查找 本期小C邀请的是董旭阳老师(资深数据库架构师)为我们分享《SQL从入门到精通》…

设置 MYSQL 数据库编码为 utf8mb4

utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,java程序中将报SQL异常: java.sql.SQLException: Inc…

utf8mb4 字符集(4字节 UTF-8 Unicode 编码)

最近做项目遇到APP评论中有 emoji 表情符号,结果导致插入 MySQL 数据库失败,找到 MySQL 官方相关内容,这里斗胆翻译一下。在翻译过程中有些不明白的地方,如BMP、collation等,都找到官方文档,给出了链接&…

UTF-8编码详解

1.ASCII编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所 以,一个字节能表示的最大的…

mysql中的utf8与utf8mb4

一、如何设置utf8mb4 mysql中针对字符串类型,在设置charset的时候可以精确到字段。 如果只将某个字段设置utf8mb4,那么其他字段不会受影响。 如果针对表来设置,那么已经存在的字段依然是utf8,并且会多出utf8的标记,…

What is UTF-8?

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程 UTF-8 is a variable-width character encoding standard that uses between one and four eight-bit bytes to re…

图解unicode、utf8和utf8mb4

字符集和字符编码 字符集(CCS: Coded Character Set): 就是一个表格,表示每个字符对应数字(通常用16进制表示),比如unicode字符集中,数字1对应的就是U00031,字母a对应的…

UTF-8

UTF-8编码规则 UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个…

MySQL 数据库字符集 utf8 和 utf8mb4 的区别

MySQL 的 utf8 实际上不是真正的 UTF-8。utf8 只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。 MySQL 一直没有修复这个 bug,他们在 2010 年发布了一个叫作 utf8mb4 的字符集, 绕过了这个问题。当然,他们并…

utf8和utf8mb4的区别

1. 基础知识 1.1 bit , byte , word 字 word 字节 byte (B) 位 bit (b) 1.2 单位换算 1字节 8位(1 byte 8bit) 1字 2字节(1 word 2 byte) 一个汉字 2字节 中文标点 三个字节 一个英文字母 一个字节 英文标点 一个字节 Em…

简单明了!utf8和utf8mb4的区别

一、简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。utf8mb4是utf8 的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用u…