按照楼主的意思!不是没有声明变量,而是,ss 和 character 本是 对象 test1 的属性 所以在类 Test2 中,应改为 test1.ss 和test1.character[i]程序如下,注意Test2中的改动! 楼主可以调试一下!我没有调试!class Test1 { public static String ss; public static char[] character; Test1() { char[] character = ss.toCharArray(); } } class Test2 { Test1 test1 = new Test1(); static void play() { for (int i = 0; i < test1.ss.length(); i++ ) System.out.print(test1.character[i]); } }public class Test { public static void main(String[] args) { Test2 test = new Test2(); test.play(); } }
Test1的构造器也有问题,ss没初始化,运行时必定会抛出“空指针异常”。
class Test1 { public static String ss="abcd"; public static char[] character=ss.toCharArray(); Test1() { } } class Test2 { Test1 test1 = new Test1(); static void play() { for (int i = 0; i < Test1.ss.length(); i++ ) System.out.print(Test1.character[i]); } }public class Test { public static void main(String[] args) { Test2 test = new Test2(); test.play(); } }注: public static String ss="abcd"; public static char[] character=ss.toCharArray(); 这两句不可以颠倒;不然会提错。 因为ss和character[]都是static静态成员变量,在对象未创建的时候就会被分配内存!如果不赋值会出现空指针现象,因为character的值是由ss而定的,故不旦需要出现在ss的后面还要在声明的同时赋值,且不可以放在构造函数中赋值。
所以找不到.
所以在类 Test2 中,应改为 test1.ss 和test1.character[i]程序如下,注意Test2中的改动!
楼主可以调试一下!我没有调试!class Test1 {
public static String ss;
public static char[] character;
Test1() {
char[] character = ss.toCharArray();
}
}
class Test2 {
Test1 test1 = new Test1();
static void play() {
for (int i = 0; i < test1.ss.length(); i++ )
System.out.print(test1.character[i]);
}
}public class Test {
public static void main(String[] args) {
Test2 test = new Test2();
test.play();
}
}
public static String ss="abcd";
public static char[] character=ss.toCharArray();
Test1() {
}
}
class Test2 {
Test1 test1 = new Test1();
static void play() {
for (int i = 0; i < Test1.ss.length(); i++ )
System.out.print(Test1.character[i]);
}
}public class Test {
public static void main(String[] args) {
Test2 test = new Test2();
test.play();
}
}注:
public static String ss="abcd";
public static char[] character=ss.toCharArray();
这两句不可以颠倒;不然会提错。
因为ss和character[]都是static静态成员变量,在对象未创建的时候就会被分配内存!如果不赋值会出现空指针现象,因为character的值是由ss而定的,故不旦需要出现在ss的后面还要在声明的同时赋值,且不可以放在构造函数中赋值。