有2个题目:
1,创建一个类,它包含一个未初始化的String引用。验证该引用被JAVA初始化成了null。
class num1{
String a;
}
public class p77 { public static void main(String[] args) {
num1 i = new num1();
System.out.print("A= "+i.a);
// TODO 自动生成方法存根 }}
不知道我做的对不对?
2,创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器初始化的String域。这两种方式有何差异?第二题,我不太明白题目的内容。什么叫一个在定义时就被初始化了的String域?
class num2{
num2(){
System.out.println("abc ");
}
}public class p77_2 {
public static void main(String[] args) {
new num2();
// TODO 自动生成方法存根 }}
这样算不算通过构造器初始化的String域?
1,创建一个类,它包含一个未初始化的String引用。验证该引用被JAVA初始化成了null。
class num1{
String a;
}
public class p77 { public static void main(String[] args) {
num1 i = new num1();
System.out.print("A= "+i.a);
// TODO 自动生成方法存根 }}
不知道我做的对不对?
2,创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器初始化的String域。这两种方式有何差异?第二题,我不太明白题目的内容。什么叫一个在定义时就被初始化了的String域?
class num2{
num2(){
System.out.println("abc ");
}
}public class p77_2 {
public static void main(String[] args) {
new num2();
// TODO 自动生成方法存根 }}
这样算不算通过构造器初始化的String域?
第二题 String str = "abc";这样就是定义时就被初始化
num2(){
String a;
}
你那样不算的。
他们的差异就是,通过构造器初始化表明,你new一个对象的时候,就被赋值了。另外一个是你想什么时候赋值就什么时候复制。
不知道说明白了没有
第2题
class B {
String s1 = "s1"; //这样就使定义时初始化, String s1 = new String("s1")也是
String s2;
public B() {s2 = "s2";} //这样就是构造器初始化
}
初始化的方式很多,直接用常量赋值,或者直接用new生成对象,或者通过调用静态方法等等
public class MyTest {
String s1 = "abc";
String s2;
public MyTest() {
s2 = "efg";
}
}
初始化的过程是这样的。在你new MyTest();
时先会执行
String s1 = "abc";
String s2;
这样s1被初始化成了"abc"
s2被初始化成了null然后执行构造方法s2成了"efg"区别就是s2被初始化了2回。
s1被初始化了1回。