关于一个静态变量的问题 我在父类里边定义一个变量,在子类的main函数中调用,提示非静太变量不能在静态 的变量中使用,难道非要将父类中的变量定义为静太的才能在子类的main函数中使用么.能不能具体的分析一下内存,说明一下为什么! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那是因为你的main是static,当然只能直接访问static的变量啦! 好象main方法必须是静态的吧,HelloWorld没用静态的通不过 那是因为你的main是static,当然只能直接访问static的变量啦!却是这样的 对啊,我明白我的main方法是静态的,我就是想问问,如果子类中的用了main方法调用父类的属性,是不是必须用静态的 静态变量和方法从属于类,而实例变量和方法从属于实例。也就是说如果一个类还没有被创建实例那么它的实例变量是找不到的。而静态变量和方法是可以使用的。所以类方法只能引用类变量。类变量随着class字节流文件的加载而加载。类方法有隐含指针指向class对象(而不是实例对象)。所以它可以通过引用class对象而得到类变量的值。.而实例变量的值是随着实例生成而生成的。类方法无法通过隐含指针去得到实例引用所以无法得到实例变量的值。 静态变量和方法从属于类,而实例变量和方法从属于实例。 前面的方法是static,后面的方法不是静态的????类变量是类的静态变量???类方法有隐含指针指向class对象(而不是实例对象)。 这句不太明白是不是说静态的方法再没有声明对象的时候就已经连上了,可以访问类中的静态属性和方法.所以非静态的属性和方法在编译的时候出错,还有,可能是编译原理上的东西,我想知道,new出来的新对象,在编译期间执行么?还是到运行的时候才生成,静态变量和方法呢,在编译期间都做了写什么,代码都放到相映的内存中去了么你的意思是不是静态的变量存放在数据区,所有的类都共享同一个静态变量,如父类F子类S,子类S中有main方法,我想问什么时候加在的F中的静态变量,是在NEW一个新的对象的时候加在的,还是在那之前的声明一个对象F F的时候,还是在加在main方法的时候,顺序搞不太清. 1静态变量和方法从属于类,而实例变量和方法从属于实例。 前面的方法是static,后面的方法不是静态的????-----------------------------------------------静态==static 是说在翻译时把英文static翻译为静态2类变量是类的静态变量???-----------------------------------------------对 类变量是类的静态变量3什么时候加在的F中的静态变量-----------------------------------------------F中的静态变量是在读取F 的class文件时就加载了的。 类变量属于某一个事例的,类静态变量是属于类的,所有的事例都共用这个静态变量如 class Test 有一个类变量 t1,一个静态变量t2t1的使用如下 Test t = new Test(); int temp = t.t1;t2 的使用 int temp1 = Test.t2; 可以学习一下!呵呵main方法式静态的,所以要直接使用变量,变量就应该设置成静态的!我觉得不用在这个地方较真,要绝对相信你的代码,代码说什么就是什么,要什么就给什么! 其实我觉得 你在学习java的时候应该重点 学习一下程序在内存中的状态是怎么样的,那样会对你有很大帮助。你的思路会很清晰你在子类的main方法中定义一个子类的对象,然后子类对象就可以直接到用父类的变量了。很简单 class B{ int a=3;}public class Sum extends B{ public static void main(String[] args){ Sum s=new Sum(); System.out.println(s.a); }}用的时候实例化一下就可以了。 或者你这样理解试试看:你把static方法看作方法体内没有this关键字的方法。java的类中的实例方法都会隐含的为其中的调用本类的方法和变量加this关键字。this关键字代表此类的实例自己。在static方法中,没有this关键字(没法加this),在其中无法调用本类的方法和变量。这个是《Think in Java》里说的,希望对你有帮助。 java 中时间刷新问题 C++,C#,java,PHP,想快速入IT行业工作,应该学那个? oracle收购sun后会不会放弃netbean? 请求帮助,为什么我编译java文件会出错? Java Windows下串口通信包的诡异问题 Runtime.exec() 死锁? 在线等待:高手来解决!! 高手请帮忙!----linux下的java环境配置! 怎么通过*.bat文件启动*.jar程序文件? jcreator的函数提示的下拉列表,为什么有时候有,有时候没有呢? 求助:实现一个 spinner 关于java的异常捕获问题
却是这样的
也就是说如果一个类还没有被创建实例那么它的实例变量是找不到的。
而静态变量和方法是可以使用的。所以类方法只能引用类变量。类变量随着class字节流文件的加载而加载。
类方法有隐含指针指向class对象(而不是实例对象)。
所以它可以通过引用class对象而得到类变量的值。.
而实例变量的值是随着实例生成而生成的。
类方法无法通过隐含指针去得到实例引用所以无法得到实例变量的值。
前面的方法是static,后面的方法不是静态的????
类变量是类的静态变量???
类方法有隐含指针指向class对象(而不是实例对象)。 这句不太明白是不是说静态的方法再没有声明对象的时候就已经连上了,可以访问类中的静态属性和方法.所以非静态的属性和方法在编译的时候出错,还有,可能是编译原理上的东西,我想知道,new出来的新对象,在编译期间执行么?还是到运行的时候才生成,静态变量和方法呢,在编译期间都做了写什么,代码都放到相映的内存中去了么
你的意思是不是
静态的变量存放在数据区,所有的类都共享同一个静态变量,如父类F子类S,子类S中有main方法,我想问什么时候加在的F中的静态变量,是在NEW一个新的对象的时候加在的,还是在那之前的声明一个对象F F的时候,还是在加在main方法的时候,顺序搞不太清.
静态变量和方法从属于类,而实例变量和方法从属于实例。
前面的方法是static,后面的方法不是静态的????
-----------------------------------------------
静态==static 是说在翻译时把英文static翻译为静态2
类变量是类的静态变量???
-----------------------------------------------
对 类变量是类的静态变量3
什么时候加在的F中的静态变量
-----------------------------------------------
F中的静态变量是在读取F 的class文件时就加载了的。
t1的使用如下
Test t = new Test();
int temp = t.t1;
t2 的使用
int temp1 = Test.t2;
main方法式静态的,所以要直接使用变量,变量就应该设置成静态的!
我觉得不用在这个地方较真,要绝对相信你的代码,代码说什么就是什么,要什么就给什么!
int a=3;
}
public class Sum extends B{
public static void main(String[] args){
Sum s=new Sum();
System.out.println(s.a);
}
}
用的时候实例化一下就可以了。
你把static方法看作方法体内没有this关键字的方法。
java的类中的实例方法都会隐含的为其中的调用本类的方法和变量加this关键字。this关键字代表此类的实例自己。在static方法中,没有this关键字(没法加this),在其中无法调用本类的方法和变量。
这个是《Think in Java》里说的,希望对你有帮助。