`
qjbagu
  • 浏览: 23546 次
  • 性别: 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虚拟机在对象没有创建之前可以调用!!

相关推荐

    c# 类的静态字段操作

    静态字段常用于计数器、全局配置、常量等场景,但需要注意,过度依赖静态字段可能导致线程安全问题。如果多个线程同时访问并修改静态字段,不加同步控制可能会出现竞态条件。为了解决这个问题,可以使用`lock`语句...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    String字符串注入类静态字段

    在Java编程中,"String字符串注入类的静态字段"是一个常见的需求,特别是在初始化配置或设置全局常量时。本文将详细讲解如何实现这一功能,并探讨相关的编程知识点。 首先,我们来看`StringInjector.java`,这个类...

    dotnet 5 静态字段和属性的反射获取 没有想象中那么伤性能.rar

    对于静态字段和属性的访问,开发者常常担忧反射的性能影响,但实际情况可能并不像人们想象的那样严重。这篇文档将深入探讨在.NET 5中如何使用反射获取静态字段和属性,并分析其性能表现。 首先,我们要理解反射的...

    静态建对象调用成员对象的成员字段.rar

    7. **多态(Polymorphism)**:如果成员对象的成员字段是继承自父类的,那么通过子类的静态字段调用该字段时,会根据实际的对象类型动态绑定到相应的方法或字段,这就是多态性。 8. **内存管理(Memory Management...

    非静态字段,方法或属性需要对象引用

    在编程领域,尤其是在Java、C#、ASP.NET和JavaScript这些语言中,理解“非静态字段,方法或属性需要对象引用”这一概念至关重要。这涉及到类的实例化和成员的访问方式。 首先,让我们来解释一下“类型”和“实例”...

    .NET的静态与非静态的区别分析

    静态字段是类级别的,所有类的实例共享同一个静态字段的值,可以通过类名直接访问。它们适用于存储那些与类相关而不是与特定对象相关的数据,例如计数器或者配置信息。非静态字段,也称为实例字段,每个对象实例都有...

    C# 控制台入门 修饰符 构造函数 虚方法 静态字段 接口 抽象类 循环 适合入门

    一个简短的控制台程序,使用了构造函数,虚方法 静态类,静态字段,接口,抽象类,继承,适合刚入门的人看

    C#基础知识 静态

    需要注意的是,静态字段在多线程环境下需要特别小心,因为它们可能引发数据竞争问题。 接下来,让我们看看“隐藏”(Hide)和“继承”(Inherit)这两个概念。在C#中,子类可以通过`new`关键字隐藏父类的成员,这种...

    C#静态方法与非静态方法的比较

    - **成员访问**:静态方法只能访问静态成员(包括静态字段、静态属性和静态方法),不能直接访问实例成员;实例方法可以访问所有成员(静态和实例)。 #### 三、代码示例与实践 **1. 获取当前方法所在的类名** 在...

    020509_【第5章:面向对象基础】_this关键字与static关键字

    1. **静态变量(类变量)**:被`static`修饰的变量属于类,不依赖于类的实例,所有实例共享同一份静态变量的副本。 2. **静态方法(类方法)**:不能访问非静态成员,因为它们依赖于特定的实例。但可以访问静态成员...

    pb动态添加数据库字段

    7. **处理数据**:现在,你可以像处理其他静态字段一样,对新添加的字段进行读取、写入等操作。 8. **注意问题**:动态添加字段可能会涉及到一些细节问题,比如数据类型的兼容性、字段顺序、事务管理等,需要根据...

    C#中静态变量的使用

    静态构造函数用于对静态字段、只读字段等的初始化。静态构造函数添加 static 关键字,不能添加访问修饰符,因为静态构造函数都是私有的。类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用...

    c#面向对象静态类、构造方法、静态方法介绍.zip

    首先,静态类是C#中不能被实例化的类,它们只包含静态成员(如静态字段和静态方法)。静态类在程序运行时只有一个共享的实例,无需通过“new”关键字来创建。它们主要用于存储全局常量、辅助方法或者工具类,例如`...

    .NET :静态类的理解

    静态类的关键特征在于它们是通过 `static` 关键字声明的,并且只能包含静态成员,即静态字段、静态方法、静态属性等。由于这些特性,静态类在内存管理、性能以及代码设计上都有其独特的优点。 首先,静态类不能通过...

    关于属性与字段的区别

    属性与字段的区别 在面向对象编程中,属性和字段是两个常见的概念,但它们之间存在着一定的区别。属性为类提供了一种有用的封装数据的方法,而字段则是类的数据成员。 属性的特点 属性的使用可以简化语法,例如 `...

    java 利用反射获取内部类静态成员变量的值操作.docx

    2. **查找静态字段**:接着,使用`Class`对象的`getDeclaredField`方法找到所需的静态成员变量。 3. **访问静态字段**:最后,通过`Field`对象的`get`方法来获取静态成员变量的值。 ##### 代码示例 ```java import ...

    C-中属性和字段(变量)的区别

    3. **常量和静态字段**:字段可以被声明为常量(使用`const`关键字)或静态(使用`static`关键字),这些特殊类型的字段具有各自的特点和用途。 ### 总结 属性和字段在C#中的区别在于,属性提供了更高级的功能,如...

    java中静态与非静态的区别

    - **静态成员**包括静态字段和静态属性,通常静态字段实现为`private`,而静态属性实现为`public`,以体现类的封装性。 - **实例成员**与具体对象相关联,只能通过对象实例访问。 2. **存储位置**: - **静态...

    java无法从静态上下文中引用非静态一些错误

    java初学者在编写类,在调用方法,在静态方法与动态方法使用会出现的一些错误。 学习后 能初步了解自己的错误的原因 以及遇到这种错误的改正方法 避免下次踩坑

Global site tag (gtag.js) - Google Analytics