java隐式事务代码 java隐式初始化( 四 )


}
}
java的类初始化,隐式,显示,什么意思1.Java对象何时被初始化
Java对象在其被创建时初始化,在Java代码中 , 有两种行为可以引起对象的创建 。其中比较直观的一种,也就是通常所说的显式对象创建,就是通过new关键字来调用一个类的构造函数,通过构造函数来创建一个对象,这种方式在java规范中被称为“由执行类实例创建表达式而引起的对象创建” 。
当然,除了显式地创建对象,以下的几种行为也会引起对象的创建,但是并不是通过new关键字来完成的 , 因此被称作隐式对象创建,他们分别是:
● 加载一个包含String字面量的类或者接口会引起一个新的String对象被创建,除非包含相同字面量的String对象已经存在与虚拟机内了(JVM会在内存中会为所有碰到String字面量维护一份列表,程序中使用的相同字面量都会指向同一个String对象)
● 自动装箱机制可能会引起一个原子类型的包装类对象被创建;
● String连接符也可能会引起新的String或者StringBuilder对象被创建,同时还可能引起原子类型的包装对象被创建 , 比如(本人试了下,在mac ox下1.6.0_29版本的javac , 对待下面的代码会通过StringBuilder来完成字符串的连接,并没有将i包装成Integer,因为StringBuilder的append方法有一个重载,其方法参数是int);
2.Java如何初始化对象
当一个对象被创建之后,虚拟机会为其分配内存,主要用来存放对象的实例变量及其从超类继承过来的实例变量(即使这些从超类继承过来的实例变量有可能被隐藏也会被分配空间) 。在为这些实例变量分配内存的同时,这些实例变量也会被赋予默认值 。
上面的代码中,Foo和Bar中都定义了变量i,在main方法中,我们用Foo引用一个Bar对象,如果实例变量与方法一样,允许被覆盖 , 那么打印的结果应该是1,但是实际的结果确是0 。
但是如果我们在Bar的方法中直接使用i,那么用的会是Bar对象自己定义的实例变量i,这就是隐藏,Bar对象中的i把Foo对象中的i给隐藏了,这条规则对于静态变量同样适用 。
在内存分配完成之后 , java的虚拟机就会开始对新创建的对象执行初始化操作,因为java规范要求在一个对象的引用可见之前需要对其进行初始化 。在Java中,三种执行对象初始化的结构 , 分别是实例初始化器、实例变量初始化器以及构造函数 。
JAVA中的隐式参数和显示参数是什么?远哥你说的是形参与实参吧.
java code:
public class Person{
private String Name;
public void setName(String name) {
this.name= name;
}
public String getName(){
return this.name;
}
}
Person person = new Person();
person.setName("Hello");
setName(String name);name出现在方法的签名中,name为显式参数
this.name= name;//this位于函数内,理解为隐式参数
更多:
关于java隐式事务代码和java隐式初始化的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读