好的,不好意思,再帮我解答一个问题,好了马上给分,谢谢! package Test1;public class Test1 { private data d=new d(); public static void main(String[] args) { d.id=12; d.str="asdfasdf"; System.out.println(String.valueOf(d.id)); System.out.println(d.str); } }class data{ protected int id; protected String str;}为什么这么简单的一个类文件也会报错! 00004:can not resolve symbol 00006:non-static variable d cannot be referenced from a static context 00007:non-static variable d cannot be referenced from a static context 00008:non-static variable d cannot be referenced from a static context 00009:non-static variable d cannot be referenced from a static context
如果你想在 public static void main(String[] args) 方法里 用 d.id=12; 的话 得这么写 public static void main(String[] args) { Test1 test = new Test1(); test.d.id=12; }can not resolve symbol 这句话不太清楚 是不是你的代码里有全角字符
private data d=new data();
如果你确实需要调用主类的属性 public class Test1 { private static data d=new data(); //加上static,静态函数不可调用动态属性 public static void main(String[] args) { d.id=12; d.str="asdfasdf"; System.out.println(String.valueOf(d.id)); System.out.println(d.str); } } class data{ protected int id; protected String str;}
给你两个建议: 1。把你的这句 private data d=new d(); 改称 private static data d=new data();//如果你真的想这么作的化2。你的包名最好不要和你的类名重合,改称test把 package test;
private Data d=new Date();
根据各位所说的,我做了修改:变成这个样子了: package Test1;public class Test1 { private data d=new data(); public static void main(String[] args) { Test1 test = new Test1(); test.d.id=12; test.d.str="asdfasdf"; System.out.println(String.valueOf(test.d.id)); System.out.println(test.d.str); } }class data{ protected int id; protected String str;}这样好象可以拉,但是我有2个疑问: 1。为什么有时候需要加上Test1 test = new Test1();有时候又不需要的呢,在什么情况下需要,什么情况下不需要,有了这句跟没有这句又什么区别。 2。为什么档我没有生成Test1实例的时候直接d.id=12就报错,但是test.d.id=12 就不报错呢,谢谢!
静态方法只能操作静态数据 main()是静态方法,所以只能操作static属性的数据。可以结贴了
因为这是static和non-static class A{ private data d = new Data(); private static sd = new Data(); }A a1 = new A(); A a2 = new A(); a1与a2的d不是同一个,因此需要通过具体的某一个对象实例去访问 而a1a2的sd是同一个,其他任何new A()中的sd都是同一个,因此可以通过 a1.sd, a1.sd, A.sd来访问,因此不一定要new A()来访问
package Test1;public class Test1 {
private data d=new d();
public static void main(String[] args) {
d.id=12;
d.str="asdfasdf";
System.out.println(String.valueOf(d.id));
System.out.println(d.str);
}
}class data{
protected int id;
protected String str;}为什么这么简单的一个类文件也会报错!
00004:can not resolve symbol
00006:non-static variable d cannot be referenced from a static context
00007:non-static variable d cannot be referenced from a static context
00008:non-static variable d cannot be referenced from a static context
00009:non-static variable d cannot be referenced from a static context
public static void main(String[] args)
方法里
用
d.id=12;
的话
得这么写
public static void main(String[] args) {
Test1 test = new Test1();
test.d.id=12;
}can not resolve symbol
这句话不太清楚
是不是你的代码里有全角字符
public class Test1 {
private static data d=new data(); //加上static,静态函数不可调用动态属性
public static void main(String[] args) {
d.id=12;
d.str="asdfasdf";
System.out.println(String.valueOf(d.id));
System.out.println(d.str);
}
}
class data{
protected int id;
protected String str;}
1。把你的这句
private data d=new d();
改称
private static data d=new data();//如果你真的想这么作的化2。你的包名最好不要和你的类名重合,改称test把
package test;
package Test1;public class Test1 {
private data d=new data();
public static void main(String[] args) {
Test1 test = new Test1();
test.d.id=12;
test.d.str="asdfasdf";
System.out.println(String.valueOf(test.d.id));
System.out.println(test.d.str);
}
}class data{
protected int id;
protected String str;}这样好象可以拉,但是我有2个疑问:
1。为什么有时候需要加上Test1 test = new Test1();有时候又不需要的呢,在什么情况下需要,什么情况下不需要,有了这句跟没有这句又什么区别。
2。为什么档我没有生成Test1实例的时候直接d.id=12就报错,但是test.d.id=12 就不报错呢,谢谢!
main()是静态方法,所以只能操作static属性的数据。可以结贴了
class A{
private data d = new Data();
private static sd = new Data();
}A a1 = new A();
A a2 = new A();
a1与a2的d不是同一个,因此需要通过具体的某一个对象实例去访问
而a1a2的sd是同一个,其他任何new A()中的sd都是同一个,因此可以通过
a1.sd, a1.sd, A.sd来访问,因此不一定要new A()来访问