JAVA关于静态static的面试题
1.静态(static)html
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也能够造成静态static代码块。面试
static修饰的变量习惯称为静态变量,static修饰的方法称为静态方法,static修饰的代码块叫作静态代码块。ide
static的意义在于方便在没有建立对象的状况下来进行调用(方法/变量)。this
“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是能够的。并且能够在没有建立任何对象的前提下,仅仅经过类自己来调用static方法。这实际上正是static方法的主要用途。”url
2.静态的具体用法spa
参考:.net
https://www.cnblogs.com/0mbiubiu/p/5331390.htmlhtm
补充:静态内部类对象
https://blog.csdn.net/cd18333612683/article/details/79129503blog
https://baijiahao.baidu.com/s?id=1593244425455663032&wfr=spider&for=pc
3.静态的注意事项
4.静态的优缺点
优势:
对对象的共享数据提供单独空间的存储,节省空间,没有必要每个对象都存储一份
能够直接被类名调用,不用在堆内存建立对象
静态成员能够经过类名直接访问,相对建立对象访问成员方便
弊端:
访问出现局限性。(静态虽好,但只能访问静态)
5.关于静态的面试题
(1)Q:抽象的(abstract)方法是否可同时是静态的(static)?
A:抽象方法未来是要被重写的,而静态方法是不能重写的,因此这个是错误的。
(2)Q:是否能够从一个静态(static)方法内部发出对非静态方法的调用?
A:不能够,静态方法只能访问静态成员,非静态方法的调用要先建立对象。
(3) Q:static 能否用来修饰局部变量?
A:static 不容许用来修饰局部变量
(4)Q:内部类与静态内部类的区别?
A:静态内部类相对与外部类是独立存在的,在静态内部类中没法直接访问外部类中变量、方法。若是要访问的话,必需要new一个外部类的对象,使用new出来的对象来访问。可是能够直接访问静态的变量、调用静态的方法;
普通内部类做为外部类一个成员而存在,在普通内部类中能够直接访问外部类属性,调用外部类的方法。
若是外部类要访问内部类的属性或者调用内部类的方法,必需要建立一个内部类的对象,使用该对象访问属性或者调用方法。
若是其余的类要访问普通内部类的属性或者调用普通内部类的方法,必需要在外部类中建立一个普通内部类的对象做为一个属性,外同类能够经过该属性调用普通内部类的方法或者访问普通内部类的属性
若是其余的类要访问静态内部类的属性或者调用静态内部类的方法,直接建立一个静态内部类对象便可。
(5)Q:Java中是否能够覆盖(override) 一个private或者是static的方法?
A:Java中static方法不能被覆盖,由于方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,因此概念上不适用。