Java 面向对象通过new揭开对象实例化
目录
- 概念了解
- 第一种情况
- 第二种情况
更正说明:
我之前的的标题有点文不对题,我这篇博客的内容明明说的是:java中对象创建的过程,对内存之种底层的东西,我其实提的不太多。
所以我原来的标题:《当你实例化对象时,在内存中到底发生了什么》是不合适的

概念了解
想要知道内存中发生了什么,我们先来了解两个内存概念
堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间;栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字)。
Student student1 = new Student()
这行代码可以分为两部分
1、Student student1 声明对象,会在栈上开辟一块区域,名叫student1,里面存了:堆中开辟的内存的地址
2、new Student() 实例化student1对象,在堆里开辟了一块区域,名叫student1

当用等号将两者关联的时候,其实就是将栈上声明的对象student1,指向堆上实例化的具体空间
如图所示:

从图中也可以看出,在“=”关联的时候,就是将堆中student1开辟内存的地址0X99存放到了栈里,可以吧内存地址看成Student类的一把钥匙
相关推荐
-
java 对象实例化过程中的多态特性解析
目录 java 对象实例化过程中的多态特性 通过案例说明 通过上述代码 java对象的三个特性(封装.继承.多态) 1.封装 2.继承 3.多态 java 对象实例化过程中的多态特性 执行对象实例化过程中遵循多态特性 ==> 调用的方法都是实例化的子类中的重写方法,只有明确调用了super.xxx关键词或者是子类中没有该方法时,才会去调用父类相同的同名方法. 通过案例说明 package com.njau.test1; class Test { public static void main(S
-
Java创建内部类对象实例详解
Java创建内部类对象实例详解 要想使用new生成一个内部类的实例,需要先指向一个外部类的实例,也就是先生成外部类的实例, 因为内部类可以调用外部类的成员,当没有外部类实例的时候也就没有这些成员的内存空间,内部类在实例化的时候,调用外部类的成员就会出错,所以需要使用外部类的实例 + 点 + new 的方式实例化一个新的内部类 class TestInner{ public static void main(String [] args) { Outer outer = new Outer();
-
Java语言面向对象编程思想之类与对象实例详解
在初学者学Java的时候,面向对象很难让人搞懂,那么今天小编就来为大家把这个思想来为大家用极为简单的方法理解吧. 首先我们来简单的阐述面向对象的思想. 面向对象: 官方的语言很抽象,我们把官方的解释和定义抛开.想想,自己有什么,对!!我们自己有手脚眼口鼻等一系列的器官.来把自己所具有的器官就可以看作我们的属性,自己是不是可以喜怒哀乐和嬉笑怒骂,这些是不是我们的行为,那么自己的具有的属性加自己有的行为就称为一个对象. 注意!!我们自己,一个个体是一个对象,因为,你是你,我是我,我们虽然有相同的,但
-
java 判断两个对象是否为同一个对象实例代码
java 判断两个对象是否为同一个对象 用"=="比较的是引用的地址,用equals比较的就是值.那我们new两个相同的对象什么属性都一样,为什么编译的时候不相同,这是因为我们调用的是父类也就是Object的equals方法,这里我们就需要重写这个equals方法. public class Test5 { public static void main(String[] args) { User mUser1 = new User("zhangsan", &quo
-
Java 面向对象通过new揭开对象实例化
目录 概念了解 第一种情况 第二种情况 更正说明: 我之前的的标题有点文不对题,我这篇博客的内容明明说的是:java中对象创建的过程,对内存之种底层的东西,我其实提的不太多. 所以我原来的标题:<当你实例化对象时,在内存中到底发生了什么>是不合适的 概念了解 想要知道内存中发生了什么,我们先来了解两个内存概念 堆内存:保存对象的属性内容.堆内存需要用new关键字来分配空间:栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字). Student studen
-
Java 面向对象通过new揭开对象实例化
目录 概念了解 第一种情况 第二种情况 更正说明: 我之前的的标题有点文不对题,我这篇博客的内容明明说的是:java中对象创建的过程,对内存之种底层的东西,我其实提的不太多. 所以我原来的标题:<当你实例化对象时,在内存中到底发生了什么>是不合适的 概念了解 想要知道内存中发生了什么,我们先来了解两个内存概念 堆内存:保存对象的属性内容.堆内存需要用new关键字来分配空间: 栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字). Student stude
-
Java面向对象类和对象实例详解
目录 1 - Java面向对象学习的三条主线 2 - 面向过程与面向对象 3 - 面向对象的三大特征 4 - 面向对象分析方法分析问题的思路和步骤 5 - 面向对象的思想概述 6 - 类和对象的创建-内存解析 7 - 类中属性的声明和使用(局部变量与成员变量的区别) 8 - 类中方法的声明和使用 9 - 对象数组的使用 10 - 理解 "万物皆对象" 11 - 匿名对象 12 - 方法的封装(数组常用算法的封装) 总结 1 - Java面向对象学习的三条主线 ①Java类即类的成员:属
-
Java面向对象的三大特征
java面向对象的三大特征:"封装.继承.多态".更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. 以本文为例,User类中的变量为私有变量,只能通过创建对象(此时构造方法自动调用)来赋值. 外界只能通过公有方法api()来访问User类. Admin类继承了User类,调用了其构造方法,还重写了method_1方法,增加了一个特有方法power(). User文件 public class User { /**
-
Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法详解
本文实例讲述了Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我之前学习的时候有些书籍不是同样的说法,书看多了,我就习惯了不同情况下用不同的说法] 首发时间:2018-03-22 什么是面对对象: 面向对象强调行为处于
-
Java面向对象基础,类,变量,方法
一.面向对象的4个基本特征 抽象性.封装性.继承性和多态性. 抽象性分为过程抽象和数据抽象. 封装性 封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件.外部无法直接访问封装的数据,从而保证了这些数据的正确性. 如果外部需要访问类里面的数据,就必须通过接口.接口规定了可对一个特定的对象发出哪些请求. 继承性 继承是一种联结的层次模型,并允许和鼓励类的重用,它提供给了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始
-
新手初学Java面向对象
目录 java面向对象 知识点 总结 java面向对象 面向对象[Java语言的核心机制,最重要的内容,Java语言的特色] * 面向过程和面向对象的区别 - 面向过程:主要关注点是:实现的具体过程,因果关系[集成显卡的开发思路] * 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低. * 缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的 方式导致软件元素之间的"耦合度"非常高,只要其中一环出问题,整个系统受到影响, 导致最终的软件"
-
详细理解JAVA面向对象的封装,继承,多态,抽象
目录 类和对象的使用(面向对象思想落地的实现): 子类对象实例化的全过程 1.从结果上看:(继承性) 2.从过程上来看: 1.封装性 2.继承性 继承性的好处: 3.多态性 虚拟方法调用 4.抽象性 1.抽象类的特点: 2.天生的父类:抽象类 3.抽象方法 总结 创建类的对象 = 类的实例化 = 实例化类 类和对象的使用(面向对象思想落地的实现): 1.创建类,设计类的成员 2.创建类的对象 3.通过"对象.属性"或"对象.方法"调用对象的结构 如果创建了一个类的多
-
Java面向对象之内部类案例讲解
1. 内部类 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了 1.1 内部类概述 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了. 内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类. 我可以把外边的类称为外部类,在其内部编写的类称为内部类. 内部类分为四种: 成员内部类 静态内部类 局部内部类 匿名内部类 1.2 成员内部类(
随机推荐
- javascript类式继承新的尝试
- Angular中使用$watch监听object属性值的变化(详解)
- Delphi实现木马自我拷贝方法
- ASP.NET中常用输出JS脚本的类实例
- 请php正则走开
- 详解Python中表达式i += x与i = i + x是否等价
- js报错 Object doesn't support this property or method的原因分析
- 对MySQL日志操作的一些基本命令总结
- Linux最新版本抢鲜体验
- jQuery checkbox选中问题之prop与attr注意点分析
- jquery检测input checked 控件是否被选中的方法
- JS Canvas定时器模拟动态加载动画
- jquery判断iPhone、Android设备类型
- jquery中this的使用说明
- javascript for循环从入门到偏门(效率优化+奇特用法)
- ubuntu 安装openssh服务器的教程详解
- asp.net中eval不能定义变量的问题的解决方法
- 在C#中根据HardwareID获取驱动程序信息的实现代码
- SpringBoot2.1.3修改tomcat参数支持请求特殊符号问题
- Opencv实现抠图背景图替换功能
