java 使用new新建一个对象时的操作过程
</pre><p></p><p><span style="font-family:Microsoft YaHei">/**</span></p><span style="font-family:Microsoft YaHei">Person p1 = new Person("lili",20);该语句执行了那些事情?1、因为new用到了Person.class,所以会先找到Person.class文件并加载到内存2、执行该类中的static代码块(存于方法区),如果有的化,给Person.class类进行初始化3、在堆内存中开辟空间,分配内存地址4、在堆内存中建立对象的特有属性,并进行默认初始化5、对属性进行显示初始化6、对对象进行构造代码块初始化7、对对象进行对应的构造函数初始化("lili",20)8、将内存地址赋给栈内存中的P变量</span><p><span style="font-family:Microsoft YaHei">*/</span></p><p><span style="font-family:Microsoft YaHei"></span></p><pre name="code" class="java">class Person
{private String name; //默认初始化private int age = 1; //显示初始化private static String country = "CN";/**构造函数初始化*/Person(String name,int age){this.name = name;this.age = age;}/**代码块初始化*/{name = "haha";age = 18 ;}public void setName(String name){this.name = name;}public void speak(){System.out.println("name:"+name+"...."+"age:"+age);}public static void showCountry(){System.out.println("country = "+country);}
}class PersonDemo
{public static void main(String[] args) {Person p1 = new Person("lili",20);}
}
java 使用new新建一个对象时的操作过程相关推荐
- new(创建)一个对象时都发生了什么?
以 Student s=new Student() 为例: Java语言中创建一个对象时的整个过程主要有两个步骤: 1.类加载过程 加载:将类名下的字节码文件加载进虚拟机(VM),并存储在方法区,并转 ...
- java中new一个对象时具体都发生了什么?
java是一门面向对象的程序设计语言,在java中一切皆为对象.在java中创建一个新对象的方式有很多种如new+构造方法,克隆,反射,反序列化等.那么当我们new一个对象时,java底层都经过了怎样 ...
- java.lang.IllegalStateException: 启动子级时出错
java.lang.IllegalStateException: 启动子级时出错 at org.apache.catalina.core.ContainerBase.addChildInternal( ...
- Java中重写equals()方法时注意点
Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...
- java创建和销毁一个对象_有效的Java –创建和销毁对象
java创建和销毁一个对象 创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函 ...
- java延迟覆盖_高效Java第九条覆盖equals时总要覆盖hashCode
原标题:高效Java第九条覆盖equals时总要覆盖hashCode 高效Java第九条覆盖equals时总要覆盖hashCode 在每个覆盖了equals方法的类中,也必须覆盖hashCode方法. ...
- java要频繁调用容器时_Java知识点梳理
1.Struts2和SpringMVC的区别 (1)设计理念:前者为有状态的Action(均为多例),Action对象属性字段承载请求.响应,后者一般为无状态的Controller,请求直接封装到方法 ...
- Vscode运行java代码和c++代码时Terminal输出乱码?
在网上查了好多方法后有一个折中的方法: 0.在语言模式中修改为bta模式 1.在运行java代码时需要提前保存,于是采用修改encoding为gkb,使得每次新建代码时均为gbk格式,这个可以正常输出 ...
- Java集合泛型作为参数时,使用中的一些问题。包括但不限于PECS原则
目录 泛型中的PECS原则以及使用注意 一.泛型中的型变(协变.逆变.不可变) 1. 什么是型变 2. 什么是协变(Covariance) 3. 什么是逆变(Contravariance) 4. 不可 ...
最新文章
- Go 学习笔记(68)— goroutine 并发控制神器 Context
- 当强人工智能时代来临,哪些人不会失业?
- MySQL忘记密码解决方案
- Java判断某年是不是闰年
- ambari 搭建hadoop大数据平台系列4-配置ambari-server
- 【转载】白话经典算法系列之三 希尔排序的实现
- 联想M490 BIOS H1ET69WW(1.12)刷网卡白名单
- 飞凌单片机解密_干货:芯片解密方法大全
- 如何理解掩码、反掩码、通配符
- 各国程序员薪资水平,最高都知道、垫底想不到...
- UVA#11584Partitioning by Palindromes
- 阿里云返回的视频截图问题
- 美食杰(个人主页) 下
- android 代码添加账户,Android应用程式在addAccountExplicitly(帐户,密码,null)上崩溃;
- 限免|iOS长截图工具 滚动截屏
- 建筑材料行业采购合同电子化,数商云采购商城系统助力企业采购业务更规范高效
- hdu4355(三分)
- xunsearch与mysql区别_利用 Xunsearch 搭建搜索引擎、内容搜索实战
- python获取系统时间为字符串_Python日期时间对象转换为字符串的实例
- C语言--独立的大括号{}