Java关键字
Java关键字是Java编译器使用的保留字。
这些关键字对Java编译器具有特殊含义。
保留的关键字可帮助我们编写代码,并帮助编译器理解代码并创建字节码。
我们无法创建与保留关键字同名的标识符(类,变量,方法)。
Java关键字
Java有64个保留关键字。
我们可以将它们分为以下几类。
- 原始类型和无效:9个关键字
- 修饰词:10个关键字
- 声明:7个关键字
- 控制流:15个关键字
- 杂项:13个关键字
让我们简要了解所有这些关键字。
1.原始类型和无效
这些关键字用于创建原始数据类型的变量。
当该方法不返回任何内容时,将使用void。
布尔值:创建布尔值变量。
唯一可能的值为true和false,默认值为false。byte:创建一个字节变量。
字节为8位,范围为-128至127。char:用于创建字符变量。
它需要2个字节,并且是无符号的。
取值范围是0~65536。short:创建一个2字节的short变量。
取值范围是-32,768~32,767。int:创建一个整数变量,占用4个字节,范围从-2,147,483,648到2,147,483,647
long:创建一个long变量,占用8个字节,范围为-9,223,372,036,854,775,808至
9,223,372,036,854,775,807。float:使用4个字节创建带符号的浮点变量。
double:使用8字节创建带符号的double。
void:与方法配合使用,以指定它不返回任何内容。
这是显示这些关键字用法的简单示例。
请注意,在Java main函数中使用了void关键字来表明它没有返回任何内容。
package com.theitroad.examples; public class JavaKeywords { public static void main(String[] args) { boolean flag = true; byte b = 10; char c = 'a'; short s = 2; int i = 1000; long l = 12345678L; float f = 1.23F; double d = 1.2e3D; } }
2.修饰词
这些关键字用于指定变量,方法和类的范围。
public:与类,方法和字段一起使用以定义其范围。
私有标识符可以从任何地方访问。protected:与内部类,方法和字段一起使用。
仅可从同一包中的类,子类和其他类内部访问受保护的成员。private:private关键字与类变量,方法和内部类一起使用。
私有成员只能在程序代码中访问。abstract:用于在Java中实现抽象。
它与类声明一起用于创建抽象类。
它也可以与抽象类内部的方法一起使用,以声明抽象方法。
抽象方法必须由子类实现。
我们无法创建抽象类的实例。静态:可与字段,方法和内部类一起使用。
静态成员属于该类,并由该类的所有实例共享。final:与类,字段和方法一起使用。
期末程序无法延长。
最终字段的值一经分配就无法更改。
最终方法不能在子类中覆盖。瞬态:与类字段一起使用,以声明它们将不属于序列化。
序列化对象时,只有非瞬态字段才是序列化过程的一部分。
反序列化对象时,会为瞬态字段分配其默认值。volatile:与类字段一起使用,以声明其值可能被其他线程更改。
它原本打算在多线程的情况下使用,但是它有几个问题,因此最好坚持同步。同步:与方法一起使用或者创建代码块。
它用于创建一个代码块,一次只能由一个线程执行。
这对于在多线程环境中保持数据一致性非常有用。native:与java方法声明一起使用,以指定该方法不是在同一Java类中实现,而是在另一种语言中实现。
例如,系统类currentTimeMillis()和arraycopy()是本机方法。
推荐读物:
这是一个简单的示例,显示Java程序中修饰符关键字的用法。
这些关键字用于在Java中创建实体。
package com.theitroad.examples; public class JavaKeywords { private int y = 20; protected int x = 10; final String name = "JavaKeywords"; static int count = 0; transient Object mutex = new Object(); volatile int v_random = 999; public void print(String s) { System.out.println(s); } synchronized void bar(int i) { count = i; } } abstract class Abs { abstract void foo(); }
3.声明关键字
这些关键字用于定义Java代码的执行流程。
Java访问修饰符
Java抽象类
Java中的static关键字
Java同步关键字
class:用于创建一个类。
接口:创建一个接口。
枚举:在Java 1.5中添加以创建枚举。
package com.theitroad.examples; class Cls{} interface Int{} enum En{} class ClsChild extends Cls{} class IntImpl implements Int{} class Utils{ void foo() throws Exception{} }
4.控制流关键字
这是显示Java中控制流关键字用法的示例。
extend:用于通过扩展另一个类来创建子类。
实现:用于实现接口。
包:定义类,接口或者枚举定义的内容。
throws:与方法一起使用,以指定方法可能抛出的异常。
if:用于创建if语句。
else:与if一起使用,以创建if-else语句。
try:用于创建代码块以进行异常处理。
catch:与try块结合使用,以捕获异常并对其进行处理。
最终:与try-catch块一起使用。
最终块代码始终执行。do:与while结合使用以创建do-while循环。
while:可用于创建while循环或者do-while循环。
for:用于创建for循环。
继续:在循环中使用,以跳过当前循环的执行并继续下一个循环。
switch:用于创建switch-case语句。
case:与switch结合使用以创建switch-case语句。
package com.theitroad.examples; public class JavaKeywords { static int x = 10; public static int foo() { if (x < 10) { //do something } else { //do something else } try { throw new Exception("Excp"); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("Done"); } do { //some code } while (false); for (int i = 0; i < x; i++) { if (i == 5) continue; if (i == 8) break; System.out.println(i); } switch (x) { case 1, 2, 3, 4, 5: System.out.println(x); break; default: System.out.println("NA"); } return -1; } }
默认值:与switch-case语句一起使用时使用默认大小写。
从Java 8开始,它还可用于在接口中创建默认方法。
我们还可以使用它在注释中声明默认值。break:在循环中使用,以结束当前循环主体的执行。
throw:用于引发异常。
return:用于从方法返回值。
5.其他关键字
this:用于访问当前对象。
new:用于通过调用构造函数来创建实例。
super:在继承的情况下用于访问超类方法,构造函数和变量。
import:用于导入一个类,以便我们可以使用其功能。
instanceof:用于检查对象是否为类实例的运算符。
null:用于定义变量的空值。
true:布尔文字,当条件为true时返回。
false:布尔文字,当条件为false时返回。
strictfp:用于限制浮点计算的精度和舍入以确保可移植性。
package com.theitroad.examples; import java.util.Arrays; public class JavaKeywords { private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } public static void main(String[] args) { JavaKeywords jk = new JavaKeywords(); System.out.println(Arrays.toString(new int[] { 1, 2, 3 })); String s = "abc"; if (s instanceof String) { System.out.println(s); } s = null; boolean flag = false; flag = true; } } class Base { Base(int i) { } } class Child extends Base { Child(int i) { super(i); } }
如何检查字符串是否为关键字?
我们可以使用SourceVersion.isKeyword()方法来检查字符串是否是保留关键字的一部分。
package com.theitroad.examples; import javax.lang.model.SourceVersion; public class JavaKeywords { public static void main(String[] args) { String key = "try"; if (SourceVersion.isKeyword(key)) { System.out.println(key + " is a keyword"); } else { System.out.println(key + " is not a keyword"); } } }