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 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
随机推荐
- Node.js 学习笔记之四:使用数据库
这部分示例将示范SQLite3.MongoDB这两种不同类型的数据库在 Node.js 中的使用方法.首先,我们要在code目录下执行mkdir 06_database命令来创建用于存放这一组示例的目 ...
- SDWebImage 清除磁盘缓存机制 iOS
分析的版本 pod 'SDWebImage', '~> 5.0.6' SDWebImage默认清除磁盘缓存的时长是7天. /** * The maximum length of time to ...
- windows下安装jdk+tomcat+maven并配置
一.下载安装jdk并配置 1.1 进行JDK下载 下载地址:一键直达 一般下载后,安装位置默认,一路下一步,一直到安装完毕-"关闭". 1.2 环境变量配置 不要管是不是一般情况, ...
- 除了方文山,用TA你也能帮周杰伦写歌词了
周杰伦几乎陪伴了每个90后的青春,那如果AI写杰伦风格的歌词会写成怎样呢? 首先当然我们需要准备杰伦的歌词,这里一共收录了他的十几张专辑,近5000多行歌词. 原文档格式: 第一步数据预处理 def ...
- Android开发之http网络请求返回码问题集合。
HTTP状态码(HTTP Status Code) 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 一.1xx(临时响应) 表示临时响 ...
- Fitness - 05.04
倒计时241天 运动38分钟,共计9组.拉伸10分钟. 每组跑步2分钟(6.3KM/h),走路2分钟(6KM/h). 上午下了课,直奔健身房. 手机坏了,没有听音乐. 没有吃午饭,但是上午喝的咖啡还是 ...
- 分享一个后端专用login模板
给大家啊分享一个后端专用login模板 Java工程师再也不用这样啦---> html源码 <html lang="en"> <head> <m ...
- My97DatePicker时间控件使用方法
引入css及js <asp:TextBox ID="tb_startTime" runat="server" CssClass="Wdate&q ...
- 从IL角度彻底理解回调_委托_指针
从IL角度彻底理解回调_委托_指针 目录 从IL角度彻底理解回调_委托_指针 1.创作此文的背景 1.1.委托能帮助代码更好地封装 1.2.委托能随时随地更方便地运行其他类中的方法 1.3.委托非常适 ...
- spring boot+spring security集成以及Druid数据库连接池的问题
贴工程目录,其中bll目录下是service+dao层,common是一些公用的模块及功能类,web是controller层 用到了druid及Redis,工具及配置类目录(本文不介绍如何配置drui ...