首页 > 编程知识 正文

java静态类有什么特点,Java 内部静态类

时间:2023-05-03 22:20:57 阅读:220889 作者:4017

提到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明显已经不是一个静态入口了。
如果觉得对你有帮助,欢迎打赏

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。