`
qjbagu
  • 浏览: 22911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • wjl1174: String 不是基本的类型,所有他的变量就是一个对象,放在m ...
    静态字段问题
  • laojiang: 数据库设置缺省值或者类修改成Integer原因null是没办法 ...
    JDBC ORM
  • yin_bp: 补充说明一下连接池的配置     bboss persiste ...
    JDBC 批处理
  • yin_bp: 再贴点稍微有点点技术含量的,呵呵 看看开源j2ee 框架bbo ...
    JDBC 批处理
  • yin_bp: 贴点稍微有点点技术含量的,呵呵 有空看看开源bbossgrou ...
    JDBC 批处理

静态字段问题

阅读更多
public class Test {
	String s = "abcdef";
	public static void main(String[] args){
		//String s = "abcdef";
		System.out.println(s.charAt(3));
	}
}

小菜鸟请求大侠帮忙!

为什么会不能执行,当把s 声明在main方法外面时,说是“不能对非静态字段s进行静态引用“。而当把s 放在main()方法里面就没有问题。为什么啊?
谢谢啊。

是不是因为s.charAt(3)相当于this.s.charAt(3),而类直接引用s,所以s必须声明为静态的,对吗?
1
1
分享到:
评论
3 楼 wjl1174 2010-06-21  
String 不是基本的类型,所有他的变量就是一个对象,放在main方法的外面是最为类变量的,它在jvm的地址是堆中,在堆中的变量访问时需要类的对象调用的,放在main方法内部的变量是局部变量,它在jvm的地址是栈中的,它可以不用类的对象就可以直接被访问的
2 楼 qjbagu 2010-04-10  
谢谢啊,我再看一下静态的含义吧。
1 楼 xinshuaifeng 2010-04-10  
晕-_-!
你要先理解静态的含义,静态就是类相关,跟对象没有关系,静态属性和静态代码在类加载的时候执行,静态方法可以使用className.method()调用,无论是静态代码语句块儿还是静态方法中都不允许出现非静态的外部属性和方法,因为非静态的属性和方法是对象相关的,在类加载的时候没有对象被创建,在没有初始化对象的时候调用对象的属性或方法后果你自己想去吧。说白了就是静态方法可以在对象创建之前调用,而非静态属性和方法在对象创建之前是不存在。
main方法作为程序的入口点设计成static是为了让java虚拟机在对象没有创建之前可以调用!!

相关推荐

Global site tag (gtag.js) - Google Analytics