63 Java 类成员

Java中static关键字详解
本文详细解析了Java中static关键字的用法及特性,包括static如何定义类成员、类方法和静态初始化块等内容,并通过具体代码示例展示了即使实例为null也能访问其所属类的类成员的特点。
package new20140418;

/**
 * 类成员
 * ——static 关键字修饰的成员就是类成员
 * ——类成员有类Field、类方法、静态初始化块
 * ——static关键字不能修饰构造器
 * ——static修饰的类成员属于整个类,不属于单个实例
 * @author x
 *
 */

/*
 * 当使用实例来访问类成员时,实际上依然是委托给该类来访问累成员,
 * 因为即使某个实例为null,它也可以访问它所属类的类成员。
 */
public class Test1 {

	/**
	 * @param args
	 */
	
	private static void print(){
		System.out.println("static修饰的类方法");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test1 test=null;
		test.print();//static修饰的类方法
	}

}

### Java 中变量的分类 在 Java 编程语言中,变量可以分为三类:成员变量、静态变量和局部变量。每种类型的变量具有不同的作用域、生命周期以及内存分配方式。 #### 1. 成员变量(Instance Variables) 成员变量是在类内部定义但在方法外部声明的变量。它们属于特定的对象实例,并且每个对象都有自己的副本。成员变量的作用域覆盖整个类中的所有方法[^1]。 ```java private int instanceVar; // 这是一个成员变量 ``` 当创建一个新的对象时,JVM会自动为该对象初始化其所有的成员变量,默认值取决于数据类型(例如 `int` 类型默认为 `0`)。如果显式赋值,则使用指定的初始值。 #### 2. 静态变量(Static Variables) 静态变量通过关键字 `static` 声明,它不属于任何单独的对象而是由类本身共享。无论创建多少个对象,静态变量只有一个拷贝存在堆内存中。 ```java private static int staticVar; // 定义了一个静态变量 ``` 访问静态变量不需要实例化类即可完成操作,可以直接通过类名调用。需要注意的是,即使没有任何对象被实例化,只要加载了这个类到 JVM 当中,那么其中所含有的静态字段就会得到初始化处理。 #### 3. 局部变量(Local Variables) 局部变量仅限于某个代码块或者方法体内有效,一旦超出此范围就不能再继续引用这些名字代表的数据项。这类变量必须先赋予初值才能参与运算过程[^2]。 ```java public void method(int paramVar) { int localVar = 10; // 此处定义了一种局部变量 } ``` 另外关于数值型基本数据类型的大小及其表示区间如下所示: | 数据类型 | 所占位数 | 表达范围 | |----------|-----------|-------------------------------------------------------------------------| | byte | 8 | -128 至 127 | | short | 16 | -(2^15) 到 (2^15)-1 | | int | 32 | -(2^31) 到 (2^31)-1 | | long | 64 | -(2^63) 到 (2^63)-1 | | float | 32 | 大约 ±3.40282347E+38F (正负大约十亿五千万) | | double | 64 | 大约±1.79769313486231570E+308 | 布尔类型(boolean),虽然理论上只占用一位(bit),但实际上为了效率考虑通常会被实现成至少一字节(byte)[^4]。 ### 示例程序解析 下面给出一段综合运用以上三种不同种类变量的小例子来加深理解: ```java class VariableExample{ private String memberStr="我是成员字符串"; // 成员变量 public static void main(String []args){ System.out.println("打印静态变量"); StaticVariable sv=new StaticVariable(); sv.printVariables(); LocalVariable lv=new LocalVariable(); lv.showLocalVariable(); } } //演示静态变量 class StaticVariable extends VariableExample{ private static final String STATIC_STRING="我是静态字符串"; @Override public void printVariables(){ super.printVariables(); System.out.println(STATIC_STRING); } } //展示局部变量 class LocalVariable{ public void showLocalVariable(){ String localString="我是局部字符串"; System.out.println(localString); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值