Java关键字

时间:2020-02-23 14:34:30  来源:igfitidea点击:

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");
		}
	}
}