Java关键字用来表示数据类型,或者程序的结构等,关键字不能用作变量名、方法名、类名、包名。
一、常用关键字
1、访问修饰符相关的关键字:
public 公有的
用public修饰的属性在任何地方都可以使用,如同包不同类中、不同包的类中。
(必须有该类的对象时)
public class Person{
public String name;//属性公开
}
protected 受保护的
用protected修饰的属性可以在同包下的所有类、如果不在同一个包下,
那么只能是该类的子类可以调用,但是不能由子类的实例化对象调用。
public class Person{
public String name;
protected String sex;//属性受保护
}
private 私有的
private访问修饰符的公开程度是最低的,它声明的属性和方法只能由本类调用。
它声明的属性是不能由对象直接进行访问的,
必须通过setter,getter方法设置和取得。
public class Person{
private String name;//私有属性
//取得姓名
public String getName(){
return name;
}
//设置姓名
public void setName(String a){
name = a;
}
}
//主类的主方法中调用Person类中的name属性
public class Test{
public static void main(String[] args){
Person p = new Person();
p.setName("wenqing");
//这是可行的,如果person类中没有设置getName和setName,
// 则会产生错误
}
}
注意:对于主类的访问修饰符,只可以用public或者不写。
访问修饰符总结如下:
public | protected | private | |
同包同类 | Y | Y | Y |
同包不同类 | Y | Y | N |
同包继承类 | Y | Y | N |
不同包继承类 | Y | Y | N |
不同包非继承类 | Y | N | N |
2、用来表示当前对象和调用父类对象中方法的关键字
this:1)表示本类属性;
public class Person{
private String name;
public Person(String name){
name = name; //错误的代码,两个name都是构造方法的参数
this.name = name; //正确,this.name表示本类中的属性被赋值
}
}
2)调用本类方法、构造方法;
this调用构造方法需要满足“只能放在构造方法”的“首行”,这两个条件。
public class Person{
private String name;
private int age;
public Person(){
System.out.pringtln("无参构造方法被调用");
}
public Person(String name){
this(); this.name = name; //正确
}
public Person(String name,int age){
this.name = name;
this.age= age; this(); //错误,this调用的构造方法没有放在第一行
}
public String study(){
this();
return "姓名"+name; //错误,this调用的构造方法只能
//放在构造方法中
}
}
3)表示当前对象。
super:从子类中调用父类中的构造方法、普通方法、属性。
super调用父类制定构造方法时,与this调用构造方法的要求相同,
即“只能在子类构造方法”的“首行”。
格式:调用构造方法===> super(参数值,...);
调用普通方法===> super.方法名(参数值,...);
总结:
this | super | |
属性访问 | 访问本类中属性,若无则从父类继续查找 | 访问父类中属性 |
方法 | 访问本类中方法,若无则从父类继续查找 | 直接访问父类中方法 |
调用构造 | 调用本类构造,必须放在构造方法的首行 | 调用父类构造,必须放在子类构造方法的首行 |
特殊 | 表示当前对象 | 无 |
3、static与final
static: 用static声明的类、属性和普通方法在内存中指存在唯一的一份。
1)声明类;
2)声明属性;
每个实例化对象都有自己的属性,如果有些属性希望被所有对象共享,
则必须声明为static, 并且static属性可以直接用类名称调用,
所以static声明的属性也称“类属性”。
格式:类名称.static属性
public class Person{
String name;
static String school = "HU";
public Person(String name){
//属性......
}
}
public class Test{
public static void main(String[] args){
Person p1 = new Person("wenqing");
// p1.school = "CSU"; //用某个对象调用修改,可以
Person.school = "CSU;" // 由类名称调用,较好
}
}
3)声明普通方法。
用static声明的方法也可由类名称直接调用,故称为“类方法”。
注意:非static声明的方法可以调用static声明的属性或方法,
但是static声明的方法是不能调用非static类型声明的属性或方法的。
final:又称为“完结器”,可声明类、属性、方法。
需注意:使用final声明的类不能有子类
使用final声明的方法不能被子类覆写
使用final声明的变量即成为常量,不可修改(当修改时就会报错),
且要求全部字母大写。
(用public static final声明的变量成为全局常量)
二、其他关键字
1、基本数据类型
byte short int long
float double bollean char
void
2、数值类
true false null
3、返回结果
return
4、定义类、接口、枚举,实现接口、继承类、抽象类的
class(定义类) interface(定义接口) implements(实现接口)
abstract(定义抽象类 new(实例化对象) extends(继承类)
enum(枚举)
5、和包相关的
import package
6、循环与条件
for while do if else
switch case default break continue
7、异常
try catch finally
throw throws
8、不常用的
instanceof 判断某个对象是否是类的实例
synchronized 实现线程的同步
transient 瞬时的
assert 断言
volatile
strictfp 修饰类和方法
const
goto
native