Java关键字

Java关键字

Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。

另 Java 区分大小写,因此 public 是关键字,而 Public 则不是关键字。为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名。

数据类型关键字

boolean、int、long、short、byte、float、double、char、class、interface。

流程控制型关键字

if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。

finally

finally总是会被执行,正常在try语句后,抛异常在catch语句后,除非前序语句中有System.exit(0)。

finally中return会修改try或catch中return的变量值吗?

返回基本类型是值,返回引用类型是指向某个对象的地址;基础类型被分配在栈中,对象分配在堆中。如果返回的是基本类型,直接复制一个变量返回,finally块中的代码不会影响到返回结果;若返回值是引用类型,finally语句块可以修改其指向对象的值

修饰符型关键字

public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。

1.public/protected/private

public修饰符:任何类都可以访问
protected修饰符:类及其子类或同一个包下的类可以访问
private修饰符:访问权限仅限于类内部

2.static

“静态”的意思,

Java程序创建时,在类首次被加载时会优先执行static变量、方法或代码块,并为其分配固定的内存区域,JVM可以直接访问到他们,而不需要依赖某个特定的实例变量,并被类的所有实例共享。

修饰变量:被static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。

修饰方法:静态方法不依赖于任何对象就可以被访问,直接类名.方法名可以直接访问。因此,静态方法中不能访问非静态方法或非静态变量。

修饰代码块:静态代码块在类第一次被载入时执行。
修饰静态内部类

父类静态变量 >父类静态代码块>子类静态变量>子类静态代码块>
父类普通变量>父类普通代码块>父类构造函数>子类普通变量>子类普通代码块>子类构造函数

注:static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。

3.final

修饰类:该类不能被继承,该类的所有方法和成员都被隐式地指定为final。

修饰方法:锁定方法,任何继承类都不能修改他,所有的private方法都被隐式地指定为final方法。

修饰变量:若修饰的变量为基本数据类型,该变量值被赋值后不可改变;若修饰的变量为引用类型的变量,该变量被初始化后不可再被定义指向另一个对象,但指向的对象的内容是可变的。

4.transient

一个对象实现了Serializable接口,该对象就会序列化。若是某些属性不希望被序列化(如密码),可以在该属性前加transient修饰。如此,该字段的生命周期仅存在于调用者的内存中而不会被写到磁盘中持久化。

静态变量不管是否被transient修饰都不会被序列化。

在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。

5.synchronized

synchronized 同步锁,使用锁的机制实现同步。

修饰一个代码块,同步代码块,作用对象是调用这个代码块的对象,指定对象加锁。

修饰一个方法,同步方法,作用对象是调用这个方法的对象,当前实例加锁。

修饰一个静态方法,作用对象是这个类的所有对象,当前类对象加锁。

修饰一个类,作用对象是这个类的所有对象,当前类对象加锁。

两个并发进程访问同一个对象object中的synchronized(this)同步代码时,一个时间内只有一个线程得到执行,另一个线程必须等到该线程执行完该代码块才可以执行。

当一个线程访问一个对象object中的synchronized(this)同步代码时,另一个线程可以访问该object的非同步代码块。

当一个线程访问一个对象object中的synchronized(this)同步代码时,其他线程对该object对象中的其他同步代码块的访问也被阻塞。 对象锁

注:使用该关键字,需要注意是否是对同一个对象加锁,对于静态方法或者是类,该类的所有对象同一把锁。

6.volatile

修饰变量

保证不同线程对于这个变量进行操作时的可见性,即一个线程修改了该变量的值,该新值对于其他线程是立即可见的。如果是写操作,会导致其他CPU中对应的缓存行无效,需要到主存中读取该变量的值。

强制将对缓存的修改操作立即写入主存。

动作行为型关键字

package、import、throw、throws、extends、implements、this、supper、instanceof、new。

throw/throws

throw 函数体,用于语句抛出异常,一般会用于程序出现某种逻辑时程序员主动抛出某种特定类型的异常。

throws 函数头,用于方法可能抛出异常的申明,声明方法时跟上throws,交给上层处理抛出的异常

保留字

true、false、null、goto、const。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值