java的 new 关键字
java的new关键字想必大家都知道这是实例化一个对象。没错,也是为新对象分配内存空间。
比如new MyDate(22,7,1964)这样一个案例,他的完成需要四部:
一。为新对象分配内存空间,将MyDate存储到堆。
二。执行显示的初始化
三。执行构造器。new方法中括号参数传递给构造器,出书话该对象数值
四。该变量被赋值为堆内存中新对象的引用
通俗的说,你new的操作,实际上是在内存的堆中新添加一个new的对象并且通过构造方法初始化这个新对象并且在栈中存放该对象的引用
下面我有一个案例,通俗易懂那种:
public class Pet {
protected bean be = this.b();
public bean b(){
return new bean();
}
}
public void test(){
be.setName("张三");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
一个父类,一个子类,通过test给name赋值,test2输出值你会发现输出的正事test给name的赋值,因为在运行main方法时,程序会先编译父类并且实例化be对象,所以子类中的引用都是同一个对象,但是如果修改为下面代码这种:
public void test(){
bean be = new bean();
be.setName("张三");
}
public void test2(){
System.out.println(be.getName());
}
public static void main(String[] args) {
People pe = new People();
pe.test();
pe.test2();
}
在test中我新new了一个be对象,这样的输出是null,因为他们在内存栈中存放的引用是不一样,在实际编码的过程中,引用比较多的对象最好在父类中写好,子类继承,或者写成java的单利懒汉模式:
public class DanLi1class {
//1.要想实现单利模式,必须修改其构造方法()
private DanLi1class(){
}
//2.首先自己先实例化该实例
private static DanLi1class dan1 = new DanLi1class();
//3.为保证别的程序访问到该实例的实例华对象,需要定义一个静态方法
public static DanLi1class danli1(){
return dan1;
}
}
这样会节省内存占用,使得对象能够重复使用,何乐而不为呢。
java的 new 关键字的更多相关文章
- Java中的关键字 transient
先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...
- java中transient关键字的作用
Java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉 ...
- 【转】java中volatile关键字的含义
java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- Java中native关键字
Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546) 今日在hibernate源代码中遇到了nati ...
- Java复习笔记--java中this 关键字
Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...
- Java中this关键字的使用
本文介绍了在Java中this关键字的作用于使用方法 当局部变量和成员变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this指的是当前对象自己) 如:public class ...
- Java 多线程 —— synchronized关键字
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- Java中this关键字在构造方法中的使用
1. Java中this关键字代表对象本身.用this关键字可以在类的内部调用属性和方法,这样代码的可读性比较高,因为它明确的指出了这个属性或方法的来源. 2. 同时在构造函数中也可以使用this关键 ...
- 慕课网-安卓工程师初养成-2-1 Java中的关键字
来源:http://www.imooc.com/code/1176 Java 中常用关键字: 问:这么多,记不住啊......-_-|| 答:现在不需要你记住所有,混个眼熟即可,在学习的过程中,你会逐 ...
随机推荐
- Singleton in C++11 style
#include <iostream> #include <memory> #include <mutex> class SingletonOld { static ...
- tmux 操作
http://www.cnblogs.com/congbo/archive/2012/08/30/2649420.html https://www.digitalocean.com/community ...
- z-index和transform
z-index和transform是CSS中的属性,但很少同学将二者联系到一起,感觉他们八杆子打不上.事实真的是这样吗?如果你也不能确认,这篇文章就值得你花点时间阅读.因为阅读完了,你会有所收获的. ...
- sublimeText3安装emmet(For Mac)
每次重装st,安装emmet都困难重重,对上一次依照网上查的资料一步步做好了,这次又忘了如何操作,结果又是网上搜索打开一箩筐的网页. 终于决定,把这些惨痛的经历记录下来,要用的话自己看,也可能可以帮助 ...
- css 字间距、CSS字体间距、css 字符间距设置
1.text-indent设置抬头距离css缩进 2.letter-spacing来设置字与字间距_字符间距离,字体间距css样式
- WNDR3700V4 安装SVN Server
下文所用路由器型号为:WNDR3700V4 参考链接:http://dd-wrt.ca/phpBB2/viewtopic.php?t=86912&highlight=optware http: ...
- mysql Statement violates GTID consistency 的坑
今天项目迁移,重新换了一个数据库版本,然后问题来了,原本运行正常的程序迁移过来之后就是不能正常运行,后台报错如下: update tbl_user_info set -- 强制下架 mv_count ...
- [PHP]OOP两类写法的性能对比
在PHP的OOP中我们有常见两种方法调用,对象调用和静态调用. 下面是一个简单的测试来比较它们的细微差异. /** * 对象初始化 -> 调用:objectCall.php * * 测试调用50 ...
- win10+vs2015+opencv3.0 x86/x64配置(debug+release)
最近做一些图像识别的项目,用到了opencv,opencv3.1没有x86版本,所以只能用opencv3.0来完成,下面介绍一下在window10下vs2015 配置opencv3.0的过程(x86和 ...
- Java使用Scanner接收中文并输出时出现乱码
Java中使用Scanner接收输入的中文并输出时会出现乱码现象,怎么解决此问题呢? 1.方法一 在声明Scanner时添加对应的编码格式就可以了,如下所示: Scanner sc = new Sca ...