JAVA关键字的理解和整理
对于每一种编程语言都有其自己的一些关键字,所谓关键字:即该种编程语言固定和规定的单词,无法用于定义变量名、方法名、类名等。而对于java来说也有不少的关键字:
那接下来我就大概的说说一些常用的关键字的用法,至于一些不怎么用到的一些关键字,有兴趣的话可以自己去了解了解,那就进入正题吧。
一、对常用关键字的分类
1.具有访问权限:public、protected、private(其实是四种,包括默认)
2.跟类相关:class、extends、interface、implements、import、abstract
3.跟方法相关:void、return
4.基本数据类型:int、long、short、float、double、byte、boolean、char
5.跟循环判断相关:if、else、while、break、continue、case、switch、do、for
6.异常:try、catch、finally、throw、throws
7.跟对象有关:new、this、super
8.其他:instanceof、static、final
大概就分以上八种类型
二、重点分析以上一些重要关键字
a) A)具有访问权限:用于限制当前修饰的属性或者方法的使用范围
JAVA中访问权限分为四种:public(公有)、protected(受保护)、默认、private(私有)
那对于访问权限有哪些限制和修饰呢?
public String name;
protected int num;
int a;
private char p;
1.对于类:只能使用public和默认(不写),如果一个java文件中有多个类,则一定只能有一个public(且这个public的class一定要和文件名一致)。
2.对于定义属性(常量,变量):注意:接口中的所有常量必须都是public的(可以不写)
3.对于定义方法:
注意:1)接口中的所有方法必须都是public的(Public可以不写)
2)构造方法,也可以修改访问权限
3)(构造方法私有化:让外部不能够创建当前类的对象)
4)方法重写:子类重写父类方法,访问权限只能扩大或者不变
访问权限 | 当前类 | 共同包 | 不同包的继承 | 不同包 |
Public | Yes | Yes | Yes | Yes |
protected | Yes | Yes | Yes | no |
默认 | Yes | Yes | no | no |
private | Yes | no | no | no |
B)this、super
1)this:指当前类对象
1.在普通方法里面用:指代的是调用当前类的相关属性和方法this.方法名()
2.在构造方法里面用:指代的是调用当前类的其他构造函数this();
注意:this调用构造方法的代码必须出现在第一行
2)super:指父类对象
1.在普通方法里面用:指代调用父类的普通方法super.方法名()
2.在构造方法里面用:指代调用父类的构造方法super()
注意:方法重写:1)完全覆盖父类的方法 2)对父类的方法进行补充
每一个子类的构造方法,一定会调用父类的构造方法,用来初始化父类的属性
Super()一定要放在第一行
问题:一个构造方法中,可不可以同时调用自己类的构造方法this()和父类构造方法super()?可以,但是super一定只能是隐性定义
C)final:最终的(修饰)
1.可以修饰的东西:类、方法、属性、参数、局部变量
2.修饰类:不能被继承(无子类的类):接口和抽象类一定不能用final修饰
3.修饰方法:方法不能被子类重写
4.修饰属性:代表当前属性只能被赋值一次
5.修饰参数/局部变量:在参数和局部变量的生命周期内不能再修改
注意:匿名内部类使用外部类的局部变量一定要加final修饰
D)static:静态的(修饰)
1.可以修饰的东西:属性、方法、静态块
2.概念:所有用static修饰的属性和方法,它就依赖于当前类而存在,脱离了对象的束缚
例如:
public class Student {
public static String name;
}
public class Test {
public static void main(String[] args) {
Student stu=new Student();
Student stu1=new Student();
Student.name="小李";
stu.name="小明";
stu=stu1;
stu1.name="王五";
System.out.println(Student.name);
System.out.println(stu.name);
System.out.println(stu1.name);
}
}
运行结果:王五 王五王五
3.静态块:static{}
注意:static的属性、方法、静态块一定只和类加载有关
例如:
public class Student {
//构造函数
public Student(){
System.out.println("0");
}
//静态块
static{
System.out.println("1");
}
//代码块
{
System.out.println("2");
}
public static void study(){
System.out.println("3");
}
public void play(){
System.out.println("4");
}
}
public class Test {
public static void main(String[] args) {
Student stu=new Student();
Student stu1=new Student();
Student.study();
stu.play();
}
}
运行结果:1 2 0 2 0 3 4
分析:首先产生类,则最先为静态块,且每个类有且只有一次静态块运行(每个类只加载一次);接下来便是代码块,在创建对象时进行;接下来便是构造函数;按顺序下去
注意:静态块和代码块都是自运行的,且自运行的先于需要调用的。
E)return、break、continue
1.return:结束当前方法
2.break:跳出当前层循环
3.continue:结束当次循环,继续下一次循环
F)Instanceof:校验当前的对象转型之前的类型是什么:语法: 对象名 instanceof类名
public class Test {
public void test(){
Student stu1 = new UnStudent();
Student stu2 = new MiddleStudent();
//后续你需要强转回去
if(stu1 instanceof UnStudent){
}
}
}