【JAVA基础】JAVA关键字总结及详解

【JAVA基础】JAVA中50个关键字(包含2个保留字)

一、关键字

关键字(Key Word):JAVA语言中预定义的、有特殊意义的标识符,它对于Java编译器有特殊意义,用户只能按照系统规定的方式使用,不能重新定义。JAVA中所有关键字都是小写的。

关键字用来表示数据类型、程序的结构等,不能用作变量名、方法名、类名、包名和参数。另外,Java还有3个标志符:true、false、null,它们不是关键字,作为单独的标识类型,包含Java定义的值。
和关键字一样,它们也不可以作为标识符使用

注意:关键字和保留字均不能用作变量名、方法名、类名、包名和参数。

二、总表:java关键字共50个(其中包含两个保留字const,goto)

在这里插入图片描述

三、关键字的分类

关键字分为:数据类型、程序控制语句、访问控制修饰符、类方法和变量修饰符、错误处理、包相关、变量引用等。

1. 与数据类型相关的关键字(10个):

关键字数据类型备注
byte字节型8bit(位)、1字节
char字符型16bit、2字节
boolean布尔型真或假、1字节
short短整型16bit、2字节
int整型32bit、4字节
float浮点型32bit、4字节
long长整型64bit、8字节
double双精度64bit、8字节
voidnull(空)无返回值
enum枚举新的类型

2. 与条件循环(流程控制)相关的关键字(13个):

关键字含义
if条件判断
else条件转折
do…while…循环语句
for表示循环
switch…cash…条件分支流程
default默认的分支
break结束本层循环,或跳出某层循环
continue跳出本次循环
return返回一个具有特定类型的值
instanceof判断某个对象是否为指定类型的实例对象
assert断言

if (关系表达式){语句块1} else{语句块2}
如果关系表达式的值为true,则执行语句块1,否则执行语句块2。

do {……} while(关系表达式)……
当关系表达式的值为true是继续循环。

for(表达式a; 表达式b; 表达式c)
表达式a用于流程控制的开始值,表达式b表示循环终止条件,表达式c通常用于控制循环的次数,一般会用一个int类型的变量类计数,如(int i=0; i<10; i++)。

switch(表达式)
{
case 常量表达式1:语句1;

case 常量表达式2:语句2;
default:语句;
}

如果表达式为常量表达式1,则执行语句1,如果表达式为常量表达式2,则执行语句2,以此类推,如果在所有case条件下都不成立时就执行default,default并不是必须的;case后的语句可以不用大括号;switch语句的判断条件可以接受int、byte、char、short,不能接受其他类型。

continue跳出本次循环,而break跳出本层循环。

instanceof:二元操作符,和==,>,<是同一类的。判断它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

assert两种使用方法
①assert:如果为true,则程序继续执行,如果为false,则程序抛出AssertionError并终止运行。
②assert <错误信息表达式> :如果为true,则程序继续执行,如果为false则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

3. 与修饰符相关的关键字(10个):

关键字含义用法
public公有的可跨包,所有类均可访问
protected受保护的当前包内可用,可以访问当前类、同包、非同包的子类
private私有的当前类可用,可以从一个包中的任何类访问类成员
static静态的只有内部类可以使用static关键字修饰
final最终的不可被改变的应用于类,以指示不能扩展该类(不能有子类)
native本地native关键字的函数都是操作系统实现的, java只能调用
strictfp精确浮点使得浮点运算更加精确,符合IEEE-754规范的
synchronized锁定当前对象应用于方法或语句块,防止关键代码段一次被多个线程执行
transient声明应用于类的成员变量,声明不用序列化的成员域
volatile同步机制同一时间只有一个线程可以访问volatile变量,保证线程安全

访问控制修饰符:public、protected、private,应用于类、方法或字段(类中声明的变量),所有类成员的默认访问范围都是 package 访问,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
在这里插入图片描述

final的变量的值不能被改变,final的方法不能被重写,final的类不能被继承,final 关键字可以应用于方法,以指示在子类中不能重写此方法。一个类不能同时是 abstract 又是 final,abstract 意味着必须扩展类,final 意味着不能扩展类。一个方法不能同时是 abstract 又是 final,abstract 意味着必须重写方法,final 意味着不能重写方法。

native :以指示该方法是用 Java 以外的语言实现的。Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。

4. 与异常处理相关的关键字(5个):

关键字含义用法
try捕获异常用于包含可能引发异常的语句块
catch处理异常用来在 try-catch 或 try-catch-finally 语句中定义异常处理块
finally有没有异常都执行用在异常处理的最后一个语句块
throw抛出一个异常对象用于引发异常,throw (异常对象);
throws声明一个异常可能被抛出应用于方法,以便指出方法引发了特定类型的异常

try{
 ……
}catch(类型b){
 ……
}finally{
 ……
}

try{……}中放置可能会发生异常的的语句块,catch(){……}用于抓住异常,{}定义当出现异常时的处理方法。finally{……}表示不管异常是否发生,都得进行finally{}中的处理。

throw是一个抛出去的动作,不能单独使用,throw (异常对象);
throws只用在一个方法的末端,表示这个方法体内部如果有异常,就把异常交给他的上级管理,自己不进行异常处理;可以单独使用,(修饰符)(返回值类型)(方法名)([参数列表])[throws(异常类)]{…},如: public void function() throws Exception{…}。

5. 与动作相关的关键字(10个):

关键字含义作用
class用来声明新的Java类,该类是相关变量或方法的集合
interface接口用来声明新的Java 接口,接口是方法的集合
package定义包指定在 Java 源文件中声明的类所驻留的 Java 包
import引入包使一个包中的一个或所有类在当前 Java 源文件中可见
extends继承用在 class 或 interface 声明中,指示所声明的类或接口是子类
implements实现在 class 声明中使用,表明一个类实现了给定的接口
abstract声明抽象可以用定义抽象类,抽象函数,表明类或者方法具有抽象属性
this当前类的父类对象用于引用当前实例
super调用父类的方法用于引用使用该关键字的类的超类
new创建新实例对象A a=new A(); A表示一个类

抽象类的用法规则如下
a,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,这个方法叫做抽象方法;
b,含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;
c,抽象类不能被实例化;
d,抽象方法只需声明,而不需实现。

6. 保留字(2个):

保留字(Reserve Word):保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。即它们在Java现有版本中没有特殊含义,以后版本可能会作为有特殊含义的词,或者该词虽然在Java中没有特殊含义,以后版本也不打算使用,但在其它语言中有特殊含义,不宜在Java中定义为变量名称等,因为容易混淆。

保留字含义作用
goto跳转无任何作用,Java 不允许 goto 跳转
const静态类型修饰符,使用const声明的对象不能更新

四、补充

标志符
(1) null :表示无值,将 null 赋给非原始变量,相当于释放该变量先前所引用的对象。 不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。
(2) true : boolean 变量的两个合法值之一。
(3) false : boolean 变量的两个合法值之一。

### 回答1: volatile是Java中的一个关键字,用于修饰变量。它的作用是告诉编译器,该变量可能会被多个线程同时访问,因此需要特殊处理,以保证线程安全。 具体来说,volatile关键字有以下几个特点: 1. 可见性:当一个线程修改了volatile变量的值,其他线程能够立即看到这个修改。 2. 有序性:volatile变量的读写操作会按照程序的顺序执行,不会被重排序。 3. 不保证原子性:虽然volatile变量能够保证可见性和有序性,但是它并不能保证多个线程同时修改变量时的原子性。 因此,如果需要保证原子性,需要使用synchronized关键字或者Lock接口来进行同步。 总之,volatile关键字Java中用于保证多线程访问变量的安全性的一种机制,它能够保证可见性和有序性,但是不能保证原子性。 ### 回答2: Java中的volatile关键字是一种轻量级的同步机制,用于确保多个线程之间的可见性和有序性。它可以用于修饰变量、类和方法。 1. 修饰变量:当一个变量被volatile修饰时,它会被立即写入到主内存中,并且每次读取变量时都会从主内存中重新获取最新的值。这样可以保证多个线程操作同一个变量时的可见性和一致性。 2. 修饰类:当一个类被volatile修饰时,它的实例变量就会被同步,而且每个线程都会获取最新的变量值。这样可以保证多线程操作同一对象时的可见性和一致性。 3. 修饰方法:当一个方法被volatile修饰时,它的调用会插入内存栅栏(memory barrier)指令,这可以保证方法调用前的修改操作都已经被写入主内存中,而方法调用后的读取操作也会重新从主内存中读取最新值。这样可以确保多线程之间的调用顺序和结果可见性。 需要注意的是,volatile并不能完全取代synchronized关键字,它只适用于并发度不高的场景,适用于只写入不读取的场景,不能保证复合操作的原子性。 总之,volatile关键字Java中具有广泛的应用,可以保证多线程之间的数据同步和可见性,但也需要谨慎使用,以免造成数据不一致和性能问题。 ### 回答3: Java中的volatile关键字意味着该变量在多个线程之间共享,并且每次访问该变量时都是最新的值。简单来说,volatile保证了线程之间的可见性和有序性。下面我们详细解释一下volatile的用法和作用。 1. 线程之间的可见性 volatile关键字保证了对该变量的读写操作对所有线程都是可见的。在没有用volatile关键字修饰变量的情况下,如果多个线程并发访问该变量,每个线程都会从自己的线程缓存中读取该变量的值,而不是直接从主存中读取。如果一个线程修改了该变量的值,但是其他线程不知道,那么可能导致其他线程获取到的数据不是最新的,从而引发一系列问题。而用了volatile关键字修饰该变量后,每次修改操作都会立即刷新到主存中,其他线程的缓存中的变量值也会被更新,从而保证了线程之间的可见性。 2. 线程之间的有序性 volatile关键字也保证了线程之间的有序性。多个线程并发访问同一个volatile变量时,JVM会保证每个线程按照程序指定的顺序执行操作。例如,在一个变量被volatile修饰的情况下,多个线程同时对该变量进行读写操作,JVM会保证先执行写操作的线程能够在后续的读操作中获取到最新的变量值。这么做的好处是,可以避免出现线程间操作顺序的乱序问题,从而保证了程序的正确性。 需要注意的是,并不是所有的变量都需要用volatile关键字修饰。只有在多个线程之间共享变量并且对变量的读写操作之间存在依赖关系的情况下,才需要使用volatile关键字。此外,volatile关键字不能保证原子性,如果需要保证操作的原子性,需要使用synchronized或者Lock等其他并发工具。 总之,volatile关键字Java中非常重要的关键字之一,它可以在多个线程之间保证可见性和有序性,从而保证了程序的正确性。在开发过程中,我们应该根据具体情况来选择是否使用volatile关键字,以及如何使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值