JAVA中的静态类

提到JAVA中的静态类,就要提到static这个修饰符,书中说明static作为 静态成员变量 和 成员函数(类中的方法) 的修饰符,注意两个字是“成员”。意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。也就是静态变量只有一份拷贝!这里就很明确了,如果是一个类被定义为static,那这个类只有一种可能就是静态内部类!最最简单的例子:
IDE中随便定义一个类,然后选择添加主函数,自动生成的主函数就是一个静态内部类。
能不能定义一个不是静态内部类的类?答案是不能!编译器都会报错。

如何使用非静态内部类和静态内部类?我自己也是在写了一个Demo的情况下慢慢意识到这两种类的使用区别。
1.普通内部类初始化,直接new一个这个类的对象,然后通过这个对象调用的成员函数

public class Lianbiaotest {

	public static void main(String[] args) {
		// 大部分自定义的类都是这么用的,普通内部类初始化,直接new一个这个类的对象,然后通过这个对象调用的成员函数。
		Lianbiaotest a = new Lianbiaotest();
		a.Creat_linklistHead();
		//Creat_linklistHead();
	}	
		public LNode Creat_linklistHead() {
		LNode head = null;
		System.out.println("现在头部插入,请输入数字,以0结束");
		String newData;
		Scanner scanner = new Scanner(System.in);
		while (!(newData = scanner.next()).equals("0")) {
			LNode newLNode = new LNode();
			newLNode.setData(newData);
			newLNode.setNext(head);
			head = newLNode;
		}
		System.out.println("输入完毕");
		return head;
	}
}

2.那么我们能不能不new Lianbiaotest这个类的对象直接调用Creat_linklistHead()这个成员函数,或者通过Lianbiaotest调用呐?答案是不可以!如果要这么用,就需要修改Creat_linklistHead()函数为静态函数。因为静态方法不需要有对象,可以使用类名调用。
3.如果Creat_linklistHead()函数为静态函数,则我们调用该函数(方法)的时候有三种方法:直接调用,什么都不加;用这个类来直接调用;通过new一个对象来调用,不过这样会有一个警告:The static method Creat_linklistHead() from the type Lianbiaotest should be accessed in a static way,因为new明显已经不是一个静态入口了。

你可能感兴趣的:(JAVA)