静态和非静态问题

Java中非静态方法可以直接引用静态方法(变量)以及非静态方法(变量),静态方法也可以直接引用静态方法(变量),但是静态方法不能直接引用非静态方法(变量),需要先定义一个非静态方法(变量)的对象,然后用对象来引用该非静态方法(变量)。

例如:

/**
 * java中包含主函数的类必须是公共类,一个文件中只能
 * 有一个公共类,并且公共类名必须要和文件名相同 
 */

public class A {

	String x;
	static String y="ping";
	void a1Function()
	{
		System.out.println("a1Function");
	}
	
	static void a2Function()
	{
		System.out.println("a2Function");
	}
	
	public static void main(String[] args) {
		
//		a1Function(); //错误,不能对类型 Second 中的非静态方法 a1Function()进行静态引用
		A aa=new A();
		aa.a1Function();//正确,利用定义非静态类的对象来引用非静态类
		
//		System.out.println("x="+x);//错误,不能对非静态字段 x 进行静态引用
		System.out.println("x="+aa.x);//正确
		System.out.println("y="+y);//正确,可以直接引用静态变量y
		/*
		 * 必须为B.z,上一行中因为是引用主类中的静态变量所以可以省略类名,直接引用y,也可写成A.y
		 */
		System.out.println("z="+B.z); //正确,可以直接引用B类中的静态变量z
//		System.out.println("m="+B.m); //错误,不能对非静态字段 B.m 进行静态引用
		
		B.b1Function();//正确
		B bb=new B();
		bb.b2Function();//正确
	}
}

class B
{
	static String z="zhou";
	String m="wang";
	
	static void b1Function()
	{
		System.out.println("b1Function");
	}
	
	void b2Function()
	{
		System.out.println("b2Function");
	}
}
结论:

静态表示属于类,在类定义的同时它就已经存在了,所以可以直接拿来使用。而非静态的则要在用类定义对象之后,new一个空间给它才可以使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值