java中初始化
‘壹’ java中怎么数组初始化
1 动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
‘贰’ java中创建对象了,显示初始化值和构造函数初始化对象的区别先后执行顺序是什么
两个都可以初始化值,本质上没有区别,不同的是执行的先后。构造方法初始化值时需要包含有参的构造方法,创建对象时使用Object obj = new Object(arg1,arg2)的形式,你说的显示初始化值应该是使用set方法吧,比如obj.setArg1(arg1)的形式。执行顺序肯定是构造方法的形式要在前了,因为在对象创建之后就会给属性赋值,而set方法形式赋值只会在你调用set方法时才会赋值。
再插一点题外话:其实在对象创建时成员变量已经初始化了,只是初始化的都是变量对应类型的默认值,比如int类型的默认值是0,引用类型默认值是null,boolean类型默认值是false。
‘叁’ 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中,三种执行对象初始化的结构,分别是实例初始化器、实例变量初始化器以及构造函数。
http://www..com/s?wd=52014085078
‘肆’ java语言,什么是初始化啊初始化和实例化一样吗
java中不管对象也好,还是基本数据类型也好,你声明它的时候,它们都称为变量,在你使用变量前给变量进行赋值,这就是变量的初始值,因此叫变量初始化。
实例化是指对象的创建,一般是指通过 new 关键字(当然还有其他途径,比如反射),在堆中为对象分配内存,这就是实例化。举个非常简单的例子,你知道飞机会飞,但飞机在你脑海里只是个概念,当真的把飞机制造出来,变成实实在在的,存在于物质世界(java中称内存)的东西时,你才能用它来飞。如果在物质世界(内存)中根本就不存在,那就无法使用。因此,实例化可以说将概念(类),变成实际存在(内存中存在)的过程就称为实例化。
‘伍’ java里对象的初始化有什么作用,什么时候要用到
对象初始化的例子如:List<String> list;
list=new ArrayList<String>();//这样就将其初始化了。然后你可以调用它的方法如:list.add("dsafs");//正确的调用方法。
如果没有上述的初始化,list.add("dsafs");//运行这句话时将要产生NullPointerException(空指针)异常。
基本类型数据用着全局变量,声明后如果不初始化的话,java虚拟机将自动对其初始化,比如你在类的成员变量中声明:int age;//这里没有初始化,将产生默认值0;其他基本类型数据都有其默认值。但如果是声明局部变量,比如说在某个方法中,就必须先初始化再调用,如: void add(){
int a;
System.out.println(a);//这样编译时不能通过,必须要求你先初始化
}
如果你刚开始学习java的话,我建议你先看点java基础的书,还有就是多编程,java还是很有意思的,也挺好学的,希望我的回答对你有点帮助。
‘陆’ JAVA中 数据初始化的三种方法是什么
public
class
staticinitialization
{
public
static
void
main(string[]
args)
{
system.out.println("creating
new
cupboard()
in
main");
new
cupboard();
system.out.println("creating
new
cupboard()
in
main");
new
cupboard();
t2.f2(1);
t3.f3(1);
}
static
table
t2
=
new
table();//1:标记位1
static
cupboard
t3
=
new
cupboard();//2
标记位2
}
//
/:~
/**
1:要执行main方法,必须先加载staticinitialization,加载过程中,发现有静态变量t2,首先执行t2
=
new
table()
new
table()需要实例化table,必须先加载table类
加载table类的过程中,发现table类也有静态变量,首先执行static
bowl
b1
=
new
bowl(1);过程和上面一样,要去创建bow1
创建之前加载bow1类,加载完毕,调用bow1的构造方法,于是打印出“bowl(1)”
b1实例化(创建)完成
然后执行static
bowl
b2
=
new
bowl(2);
再次调用bow1构造方法,打印“bowl(2)”
这时候table类加载完毕,开始实例化t2变量,调用table类构造方法,打印“table()”
执行b2.f(1);
打印“f(1)”
2:道理和上面1一样,只是在cupboard中,static变量初始化完毕之后,还要去初始化一个非static变量
最后执行main中的方法,注意的是,此时table,cupboard
这2个类的加载过程已经完成,之后创建这2个类的实例的过程中,不再去初始化static变量
有其他问题在hi我
*/
‘柒’ java中怎么给变量初始化
不同的变量初始化方法不同。
变量包括:
类的属性,或者叫值域
方法里的局部变量
方法的参数
对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性
在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。
对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一
次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一
来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少
一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在
catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他
们,如果不知道要出事化成什么值好,就用上面的默认值吧!
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。