081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
本文知识点:new关键字
说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步。
new关键字
对象的实例化操作就是对象创建的过程

而在对象实例化的代码编译执行的过程中,实际上进行了2个部分的操作:
1、声明对象
2、实例化对象

声明对象
声明对象的代码相当于在内存的栈空间,开辟了一块空间,并进行了命名。

声明对象后,还不是一个真正意义上的对象,因为one的空间是空的,只是一个空盒子。
所以,如果这时候用one来调用属性和方法,是不被允许的。
注释单行代码的快捷键:




实例化对象
实例化对象的代码,相当于在内存的堆空间里开辟了一块空间,完成了对象相关信息的初始化操作。

声明对象和实例化对象是在内存中的两个不同区域完成的。
声明对象在栈中,实例化对象在堆中。
栈和堆是两个不同的空间。那这两个空间是怎样关联起来的呢?

就是通过赋值符号 “=”将新的堆空间的内存地址存放到了栈空间的one里面。
类似把新房子的钥匙交到了one手里。


1、声明:
Cat one
2、实例化:
new Cat();
3、然后,通过赋值符号,将声明的对象指向实例化的具体的空间。
Cat one = new Cat();

在Java中,每次使用new关键字,都代表new在堆中开辟了一块新的内存空间,即使它们的内容是完全相同的。

两只猫one与two的相关信息一模一样

但是,请注意,one与two分别通过new关键字进行的对象实例化,它们实际上指向的是堆内存中的两块不同的空间。

所以,修改two的信息,不会影响到one,反之亦然。


好比老王和老张分别买了一套房子,这两套房子一模一样。

但它们仍然是两套房子,有2把不同的钥匙,对任何一套房子的重新装修都不会影响另外一家。

以上,就是new关键字的作用:开辟新的对象空间(堆空间)
实例化对象是否只有new这一种实现方式呢?

实例化对象是否只有new这一种实现方式呢?有没有其他方式,一套房,两把钥匙那种?

实例化对象还有其他的实现方式,如下:给新的对象赋值为已经通过new关键字实例化过的对象。
比如:
Cat one = new Cat();
cat two = one;
重点:
Cat two = one;

one赋值给two表示什么?one中有什么?
one中存储的是:堆当中新开辟的内存空间的地址。好比房间的钥匙。

现在把one赋值给two,好比把one中存储的房间的钥匙给了two。

就代表着,one和two同时拥有了同一个房间的钥匙(2把)

相当于,以前one一个人住这套房,现在one与two两人一起住这套房,都有这套房的钥匙。

这样的情况下,无论是one对房间的修改还是two对房间的修改,都会对房间产生影响。

第二次操作覆盖第一次操作的信息。


总结
栈当中的对象名存储的是堆中的地址的引用,即对象引用的概念

new关键字表示在堆中开辟一块新的空间
当2个对象指向同一块空间的时候,任何一个对象对空间的修改,都将会影响另外一个对象。

所以,在对象进行实例化操作的时候,请大家根据实际的需求,进行合理的操作选择。
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字的更多相关文章
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包
089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
随机推荐
- 利用OpenCV进行H264视频编码的简易方式
在Python下,利用pip安装预编译的opencv库,并实现h264格式的视频编码. 1. 安装OpenCV $ pip install opencv-python 建议在python虚拟环境下安装 ...
- 前端用vue怎么接收并导出文件
window.location.href = "excel地址" 如果是 get 请求,那直接换成 window.open(url) 就行了 创建一个隐藏的 iframe,把 if ...
- fragment没有getWindowManager 关于fragment下的报错解决方法
其实很简单:只需要在getWindowManager().getDefaultDisplay().getMetrics(metric) 前面加上getactivity()即可.
- python学习笔记回忆录02
1.for循环 依次按顺序从列表中取出值,直到遍历完整个列表为止 the_count =[1,2,3,4,5] for number in the_count: print "this is ...
- [BUUOJ记录] [BJDCTF2020]The mystery of ip
本题考察XFF头的ssti模板注入,没有过滤,算是入门题 进入题目hint.php的源码中可以看到一个hint 猜测是通过XFF头来获取信息的,发个HTTP请求添加一个XFF头测试一下: GET /f ...
- 关于给Tomcat设置maxPostSize的问题
一.为什么要设置maxPostSize tomcat容器对传输数据的大小有限制,如果上传了超过此值的文件,就会报错,使得程序不能正常使用. 二.设置方法 找到tomcat目录下的/conf/serve ...
- Java 合并、拆分PPT幻灯片
序 在日常使用PPT时,为了便于操作和管理文档,时常会遇到需要将PPT幻灯片进行合并或拆分的情况.本文将通过Java程序来演示如何进行上述操作. 示例要点: 1. 合并PPT幻灯片 1.1 将第一个P ...
- 【LeetCode/LintCode】丨Google面试题:N皇后问题
n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线). 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案包含一个明确的 ...
- matplotlib | Python强大的作图工具,让你从此驾驭图表(二)
今天是数据处理专题的第10篇文章,我们继续来聊聊matplot这个工具库. 在上周的文章当中我们介绍了matplot的基本用法,以及展示了一些简单的例子,让大家直观地了解这个工具包.我们可以简单地将它 ...
- 虚虚实实,亦假亦真的 ValueTuple,绝对能眩晕你
一:背景 1. 讲故事 前几天在写一个api接口,需要对衣物表进行分页查询,查询的output需要返回两个信息,一个是 totalCount,一个是 clothesList,在以前我可能需要封装一个 ...