关于Java中关键字的整理
1、static
(1)【概述】:被static修饰的类称为类成员,随着类字节码的加载到内存中存在而存在
(2)【作用位置】:
1)作用在方法上,称为静态方法
格式:在修饰符位置加上static关键字:
修饰符 static 返回值类型 方法名(参数列表){ }
调用格式:
- 直接用类名调用【推荐方式】
2. 对象调用
2). 作用在变量上,称为静态变量
【静态变量和非静态变量的区别是】:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
(3)【类内部静态方法访问特点】:
1). 静态方法只能访问本类中的静态成员
2).静态方法中不能存在this
3).非静态方法可以访问本类所有成员
(4)【static代码块】:static关键字还有比较关键的作用就是用来形成静态代码块以优化程序的性能,static代码块可以置于类中的任何地方,类中可以有多个static代码块,在类初次被加载的时候,会按照static代码块的顺序来执行每一个static代码块,并且只执行一次
有关static的面试题:
-1、能通过this访问静态成员变量吗?
答:可以,虽然对于静态方法来说没有this且独立于对象,但是不代表不可以通过对象去进行访问,所有的静态方法和静态变量都可以通过对象访问(前提条件是:只要访问权限足够)
-2、static能作用于局部变量吗?
答:不能,static不能用来修饰局部变量。Java语法规定。
-3 、查询资料发现,有些公司会有些关于static的笔试面试题目,主要是为了考察大家对static的熟悉,通过一段,写出运行结果,以下是查找到的有关类似题目,及供参考
package com.company;
public class Test {
User user = new User("Test");
static{
System.out.println("test static");
}
public Test() {
System.out.println("test constructor");
}
public static void main(String[] args) {
new MyClass();
}
}
class User{
static{
System.out.println("person static");
}
public User(String str) {
System.out.println("person "+str);
}
}
class MyClass extends Test {
User user = new User("MyClass");
static{
System.out.println("myClass static");
}
public MyClass() {
System.out.println("myClass constructor");
}
}
运行结果:
test static
myClass static
person static
person Test
test constructor
person MyClass
myClass constructor
2、权限修饰关键字
权限修饰符:控制访问能力
public:【共同的】
protected:【受保护的】
package-private:【缺省】
private:【私有】
使用特点:
- 类的权限:只能用public,或者包私有
- 成员变量:如果要封装,使用private修饰。也可以根据自己的需要而定
- 构造方法:一般使用public,也可以根据需要而定比如工具类的构造方法就可以使用private私有。
- 成员方法:一般使用public,也可以根据自己的需要而定
3、final
(1)作用:
用来修饰一个类,该类不能有子类
用来修饰一个方法,该方法不能被重写
用来修饰局部变量,该变量为常量,不能更改