注: Java的关键字都是小写哟
访问修饰符的关键字
关键字 | 作用范围 |
---|---|
public | 公有的;该项目中的所有包所有类都可以访问 |
protected | 保护的;同一个包的类以及其他包的子类可以访问 |
private | 私有的;类本身访问,子类能继承不能调用。 |
数据类型的关键字
关键字 | 释义 | 备注,常用 |
---|---|---|
byte | 字节型 | 8bit |
char | 字符型 | 16bit |
boolean | 布尔型 | – |
short | 短整型 | 16bit |
int | 整型 | 32bit |
long | 长整型 | 64bit |
float | 浮点型 | 32bit |
double | 双精度 | 64bit |
void | 无返回 | |
null | 空值 | |
true | 真 | |
false | 假 |
static关键字
静态修饰关键字,可以修饰变量、程序块以及类方法:
当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存;
当修饰一个程序块的时候(也就是直接将代码写在static{…}中)时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化;
当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象。
final关键字
可以修饰变量、方法及类:
当定义一个final变量时,jvm会将其分配到常量池中,程序不可改变其值;当修饰一个方法时,该方法在子类中将不能被重写;当修饰一个类时,该类不能被继承。
instanceof关键字
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
`boolean` `result = obj ``instanceof` `Class`
其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
this关键字
this是自身的一个对象,代表对象本身,用法大致分为以下3类:
- 普通直接引用当前对象本身
- 形参和成员名重名,用this来区分
- 引用构造方法 ,this(参数) ,应该为构造函数中的第一条语句,调用的是本类中另外一种形式的构造方法。
super关键字
super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也大致分为3中中用法:
- 普通的直接引用,与this类似,只不过它是父类对象,可以通过它调用父类成员。
- 子类中的成员变量或方法与父类中的成员变量或方法同名,可以使用super区分。
- 引用构造方法,super(参数):调用父类中的某一个构造方法(应该为构造方法中的第一条语句)。
this和super的用法区别
class Person {
public static void prt(String s) {
System.out.println(s);
}
//构造方法(1)
Person() {
prt("父类·无参数构造方法: "+"A Person");
}
//构造方法(2)
Person(String name) {
prt("父类·含一个参数的构造方法: "+"A person's name is " + name);
}
}
public class Chinese extends Person {
Chinese() {
super(); // 调用父类构造方法(1)
prt("子类·调用父类无参数构造方法" + "A chinese coder");
}
Chinese(String name) {
super(name);// 调用父类具有相同形参的构造方法(2)
prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name);
}
Chinese(String name, int age) {
this(name);// 调用具有相同形参的构造方法(3)-->调用(2)
prt("子类:调用子类具有相同形参的构造方法:his age is " + age);
}
public static void main(String[] args) {
Chinese cn = new Chinese();
cn = new Chinese("people");
cn = new Chinese("people", 18);
}
}