Java关键字

来源:互联网 发布:中国迁都论 知乎 编辑:程序博客网 时间:2024/06/16 15:31

一、定义

关键字是事先定义的,赋予了指定含义的词语


常用关键字:

类相关:public private protected class interface implements extends import package abstract

方法/属性相关:void return static final

八大基本数据类型:int short long float double boolean char byte

循环判断:for switch case break continue if elss do while 

异常:try catch throw throws finally

其他:this super goto


二、解释

1)访问权限

1.switch() 参数类型为:int/short/String/枚举类型  其中,String类型JDK1.7版本以前不能用

2.访问权限修饰符public protected 默认(buxi) private 

如果没有写就是默认访问权限。

类的访问权限有两种:public、默认
方法和变量的访问权限有4种:public、protected、默认、private,作用范围由高到低

public意味着任何地方的其他类都能访问

protected同一个包下的类及其子类可以随意访问,跨包不行(跨包继承是可以继承到受保护的属性或者方法)。

默认则是同一个包的类可以访问,跨包不行


private表示只有自己类能访问

作用域  
当前类  
 同package  
子孙类
其他package 
public

  √ 

√ 
protected



× 
friendly(default)


×
× 
private

×
×
× 

代码示例

package KeyWord01;public class Student {public int age;<span style="white-space:pre"></span>//public权限protected String sex;<span style="white-space:pre"></span>//<span style="font-family: Arial, Helvetica, sans-serif;">protected权限</span><span style="white-space:pre"></span>String name;<span style="white-space:pre"></span>//默认权限private int grade;<span style="white-space:pre"></span>//private权限public void study(){System.out.println("学生学习");}}

package KeyWord01;<span style="white-space:pre"></span>//同一个包下另一个Student类的子类public class UnStudent extends Student{}

package KeyWord01;<span style="white-space:pre"></span>//同一个包下的主函数import sun.nio.cs.US_ASCII;public class text {public static void main(String[] args) {UnStudent UnStu = new UnStudent();<span style="white-space:pre"></span>//创建Student的子类的对象UnStu.age = 10;<span style="white-space:pre"></span>//调用public权限的age属性成功UnStu.sex = "";<span style="white-space:pre"></span>//调用protect权限(此时属于其他的包的该类的子类情况)的sex属性成功
<span style="white-space:pre"></span>UnStu.name = "";<span style="white-space:pre"></span>//调用默认权限的name属性成功,同一个包的类可以访问//UnStu.grade = 3;<span style="white-space:pre"></span>//调用private权限的grade属性<span style="color:#ff0000;">报错,</span>private表示只有自己类能访问UnStu.study();<span style="white-space:pre"></span>//调用public方法成功,打印学生学习}}
<pre name="code" class="java">package KeyWord02;import KeyWord01.Student;public class PriStudent extends Student{public PriStudent(){//构造函数,用来初始化this.age = 10;//public权限可以跨包访问this.sex = "male";//protected权限,子孙类在任何地方都能访问(包内或者包外)//this.name = "Tom";//默认访问权限不能跨包访问,只能在本包}public void <span style="font-family: Arial, Helvetica, sans-serif;">displaySex</span>(){System.out.println(this.sex);}}



package KeyWord02;import KeyWord01.Student;public class text {//包2的主函数public static void main(String[] args) {PriStudent PriStu = new PriStudent();//创建PriStudent类的对象System.out.println(PriStu.age);//public权限随意访问,跨包也可以//System.out.println(PriStu.sex);<span style="color:#ff0000;"><strong>//子孙类在任何地方都可以访问protected,但是没说对象可以跨包访问,若想访问,可以调用该类的方法,通过该类的方法以子类的形式访问</strong></span>//System.out.println(PriStu.name); //默认权限仅限于自己包内的类调用PriStu.diplay();}}



2)this/super

this:当前类的对象

"this",作为一个特殊的关键字,它的规则如下:
1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。
2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。


super:父类的对象

super出现在继承了父类的子类中。
有三种存在方式:
第一种
super.xxx;(xxx为变量名或对象名)
这种方法意义为,获取父类中的名字为xxx的变量或方法引用。
使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作
第二种
super.xxx();(xxx为方法名)
这种方法意义为,直接访问并调用父类中的方法。
第三种
super();
这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法;


3)final(最终的,最后的)

可以用来修饰:类、方法、属性、参数、局部变量

修饰类: final类不能被继承,没有子类,final类中的方法默认是final的。

方法:当前方法不能被重写,但可以被继承。不能用于修饰构造方法。父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

属性:成员变量表示常量,只能被赋值一次,赋值后值不再改变

参数/局部变量:代表当前参数在生命周期范围内不能重新赋值

4)static(静态的)

可以用来修饰:方法、属性、静态块

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用

静态方法

可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字(没有对象时也可以调用),不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。
因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。


注意一点:静态方法中一定不能直接使用非静态属性或者方法

static和final一块用表示什么

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。









0 0
原创粉丝点击