JVM学习03_new对象的内存图讲解,以及引出static方法(转)
目录
-=-讲解对象创建过程中,-=-堆内存和栈内存的情况
-=-构造函数对类对象的成员变量的初始化过程
-=-构造函数出栈
-=-类的方法在不访问类对象的成员变量时造成的内存资源浪费怎么解决?
-=-引出static方法
扯淡
--明确概念:
-=-类:是对现实事物的抽象描述;举例:人,有年龄,姓名,高矮胖瘦等特征;有吃喝睡等行为动作;现实中的人由特征和行为组成{思想这种东东暂时还是不考虑吧}
-=-怎么判别一个类里面时候需要有主函数mian():看这个类是否需要独立运行
-=-描述事物的类有很多,有一个类来调用其他的描述事物的类就可以了,就像是不用给每一个居民家中都配一个警察一样
-=-有主函数main的类被称为启动类,也就是在JVM启动的时候就启动的类,启动之后便进去main()中执行语句
-=-想描述具体的事物就需要给出具体的形象,比如在校园里面看到一个很漂亮的姑娘,你像被人形容的时候不能和别人说:“我今天在学校里面看到一个女的”。谁听了都想抽你
-=-而是应该具体形容:"我今天在学校里面看见一个姑娘,笑靥如花,身材苗条,唇白齿红,她是院系的,我还要了她的手机号码。。。"这样谁听了谁都想问你要手机号。。。。
-=-那么怎么把一个抽象的描述人的类具体化呢(也称实例化,就是创造一个实实在在的 人)-java中使用new关键字实现
-=-比如 new Person(21,"笑靥如花,唇白齿红,身材高挑");好吧这就是创建一个人的过程。这个实例化(把类具体化的过程)的产物就是创建一个Person类的对象(活生生的人)
-=-所以人们有时候调侃程序员:没有女朋友怎么办?new 一个对象就可以了、、、、
-=-可是这个人连个名字都没有,一些给一个唯一的名字吧--->Person p=new Person();这句话就是创建了Person类型的变量[引用类型,还有就是数组和String类型]。比如说:人民一听大众就知道:哦,这是一个汽车类型;一听卡西欧,就知道是手表类型
现在来说一下
Person p=new Person();
[引用数据类型 类型变量指向创建的该类型的对象 = 初始化的值[对象的地址,必须要运行时候才能确定] ]【那些数据在编译时候和运行时候才能确定?】
int i=6;
[基本数据类型 变量 = 初始化值[此处在编译时候就可以确定]]
好了,现在我们创建好了一个人之后就要像别人描述了:balabalba{也即是创建对象可以被别的类调用和访问}
--下面才是重点:上面都是。。。。
--new Person() 根据下面的代码创建的吗?——NO,不是根据.java文件,而是.class文件,这个才是可以被JVM加载和运行的
--那为什么写下面的.java格式的代码啊?——因为.java文件是给人看的,.class文件一般人都看不懂,,,原来是这样,我智商被鄙视了
下面具体根据内存图来小小看下 Person p=new Person("周迅",21);这句话到底发生了什么?
贴出代码
123456789101112131415161718192021222324252627publicclassTest {publicstaticvoidmain(String[] args) {Person p1=newPerson("周迅",21);p1.speak();}}classPerson{privateString name;privateintage;publicPerson(String name,intage) {this.name=name;this.age=age;}publicvoidspeak(){System.out.println("周迅在说话");}}//执行结果:周迅在说话-




又看了毕向东老师的教程
http://www.cnblogs.com/together-sharing-for-freshman/p/4351399.html
JVM学习03_new对象的内存图讲解,以及引出static方法(转)的更多相关文章
- Java基础(2)面向对象和封装,对象的创建和使用、java对象的内存图
1 类和对象 类:是一类事物的描述,抽象的.猫 对象:是一类事物的实例,具体的.某只猫 2 类的定义 成员变量和成员方法 //定义一个学生类 public class Student { //成员变量 ...
- jvm学习记录-对象的创建、对象的内存布局、对象的访问定位
简述 今天继续写<深入理解java虚拟机>的对象创建的理解.这次和上次隔的时间有些长,是因为有些东西确实不好理解,就查阅各种资料,然后弄明白了才来做记录. (此文中所阐述的内容都是以Hot ...
- JVM学习-之对象的创建和内存分配
最近看JVM内存模型,看了很多文章,大都讲到JVM将内存区域划分分:Mehtod-Area(No heap) 方法区,Heap(堆)区,Program Counter Register(程序计数器), ...
- jvm对大对象分配内存的特殊处理(转)
前段日子在和leader交流技术的时候,偶然听到jvm在分配内存空间给大对象时,如果young区空间不足会直接在old区切一块过去.对于这个结论很好奇,也比较怀疑,所以就上网搜了下,发现还真有这么回事 ...
- 【转载】JVM 学习——垃圾收集器与内存分配策略
本文主要是对<深入理解java虚拟机 第二版>第三章部分做的总结,文章中大部分内容都来自这章内容,也是博客 JVM 学习的第二部分. 简述 说到垃圾收集(Garbage Collectio ...
- oc学习之对象在内存的位置
对象在内存中的存储 1. 内存中的五大区域. 栈: 存储局部变量. 堆: 允许程序员手动在堆区申请指定的连续的字节数的空间来使用. BSS段: 存储未初始化的全局变量.静态变量. 数据段(常量区): ...
- JVM学习笔记一:内存管理
参考资料 本文参考:<深入理解Java虚拟机>作者 周志明 知识产权归作者所有 走近java java组成部分:java语言.各平台虚拟机.Class文件结构.java api 类库.第三 ...
- JVM中,对象在内存中的布局
在hotSpot虚拟机中,对象在内存中的布局可以分成对象头.实例数据.对齐填充三部分. 对象头:主要包括: 1.对象自身的运行行元数据,比如哈希码.GC分代年龄.锁状态标志等,这部分长度在32位虚拟机 ...
- JVM总结-java对象的内存布局
在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我们还可以通过反射机制.Object.clone 方法.反序列化以及 Unsafe.allocateInstance ...
随机推荐
- uva 10692 - Huge Mods(数论)
题目链接:uva 10692 - Huge Mods 题目大意:给出一个数的次方形式,就它模掉M的值. 解题思路:依据剩余系的性质,最后一定是行成周期的,所以就有ab=abmod(phi[M])+ph ...
- HDU 1030 Delta-wave 数学题解
给出一个数字塔,然后求沿着数字之间的边走,给出两个数字,问其路径最短的长度是多少. 看似一条搜索题目,只是有一定做题经验的人都知道,这个不是搜索题,直接搜索肯定超时. 这个是依据规律计算的数学题目. ...
- 正确理解Python文件读写模式字w+、a+和r+
w+ 和 r+的差别不难理解.还有a+ +同一时候读写,就可以读又可写,边写边读.边读边写,不用flush,用seek 和 tell可測得. fp = open("a.txt", ...
- Android L动画入门
Android L带来了许多新特性,其中就包括了大量的动画效果,你可以在自己的应用中使用.本文中我将详解这些动画和如何在应用中使用.本文中的所有代码可以在github上找到. 波纹和强调 现在安卓支持 ...
- 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)
本文记录一种无参考视频质量评价算法.这是我们自己实验室前两年一个师姐做的,算法还是比较准确的,在此记录一下. 注意本算法前提是高清视频.而且是H.264编码方式. 该方法主要使用两个码流里面的参数进行 ...
- mysql 主从同步出问题,重新修复从库 - web架构研究
mysql 主从同步出问题,重新修复从库 - web架构研究 mysql 主从同步出问题,重新修复从库 0 昨天由于操作失误,在从库上执行一堆sql之后,导致主从同步错误,并且已 ...
- J2EE之初识JSP
上篇博客已经简介了下Servlet.从上篇博客中能够看到.Servlet获得返回来的数据后.显示给client时,须要不断的拼串.从而构成完整的html页面,这就在无形中加大了程序猿的压力和劳动力.而 ...
- jQuery EasyUI API 中文文档 - 菜单按钮(menubutton)
<html> <head> <script src="jquery-easyui/jquery.min.js"></script> ...
- 轻松学会多线程(四)——synchronized同步keyword知多少
每个对象都有一把独占锁. 独占锁仅仅限制线程对它的同步方法的訪问,对非同步方法,独占锁没有意义. synchronizedkeyword能够作为函数的修饰符,也能够作为函数内的语句,也就是平时说的同步 ...
- fck编辑器的使用
FCK编辑器的使用 注意:编辑器有浏览器缓存,所以修改配置后,一定要删一下缓存 这个编辑器是采用 html+javascript 开发出来的 通常作为插件来使用: 1,下载插件包 2,解压,加压之后看 ...



