Java 中的标识符是赋予变量、类、方法、包、接口等的名称。这些是唯一的名称,每个 Java 变量都必须使用唯一名称进行标识。
例:
public class Test
{
public static void main(String[] args)
{
int a = 20;
}
}
在上面的 Java 代码中,我们有 5 个标识符,如下所示:
定义有效的 Java 标识符有一定的规则。必须遵守这些规则,否则会出现编译时错误。这些规则也适用于其他语言,如 C 和 C++。
有效标识符示例:
MyVariable
MYVARIABLE
myvariable
x
i
x1
i1
_myvariable
$myvariable
sum_of_array
geeks123
无效标识符示例:
My Variable // 包含空格
123geeks // 以数字开头
a+c // 加号不是字母数字字符
variable-2 // 连字符不是字母数字字符
sum_&_difference // 连字符不是字母数字字符
任何编程语言都会保留一些单词来表示该语言定义的功能。这些字称为 保留字。它们可以简要地分为两部分:关键字(50) 和 文本(3)。关键字定义功能,文本定义值。标识符由符号表在编译器体系结构的各个分析阶段(如词法、语法和语义)中使用。
abstract | continue | for | protected | transient |
---|---|---|---|---|
Assert | Default | Goto | public | Try |
Boolean | Do | If | Static | throws |
break | double | implements | strictfp | Package |
byte | else | import | super | Private |
case | enum | Interface | Short | switch |
Catch | Extends | instanceof | return | void |
Char | Final | Int | synchronized | volatile |
class | finally | long | throw | Date |
const | float | Native | This | while |
在 Java 中,关键字是编程语言中的保留字,用于某些内部流程或表示某些预定义作。因此,不允许将这些单词用作**变量**名称或对象。
例:
// Java 关键字
class GFG
{
public static void main(String[] args)
{
// Using final and int keyword
final int x = 10;
// Using if and else keywords
if(x>10){
System.out.println("Failed");
}
else{
System.out.println("Succesful Demonstration"
+" of keywords");
}
}
}
输出
Succesful Demonstration of keywords
Java 包含关键字或保留字列表,这些关键字或保留字也以不同的颜色突出显示,无论是 IDE 还是编辑器,以区分灵活字和保留字之间的差异。它们列在下表中,并附有与它们相关的主要操作。
Keyword | 用法 |
---|---|
abstract | 用于创建抽象类和抽象方法 |
assert | 用于测试开发者认为应该在程序中为真的条件的工具 |
boolean | 只能保存 True 和 False 值的数据类型 |
break | 用于打破循环的控制语句。 |
byte | 可以保存 8 位数据值的数据类型 |
case | 在 switch 语句中用于标记文本块 |
catch | 捕获 try 语句生成的异常 |
char | 保存无符号 16 位字符的数据类型 |
calss | 声明一个新类 |
continue | 将控制权发送回循环外部 |
default | 指定 switch 语句中的默认代码块 |
do | 启动 do-while 循环 |
double | 保存 64 位浮点数的数据类型 |
else | 可以保存 64 位浮点数的数据类型 |
enum | Java 关键字用于声明枚举类型 |
extends | 指示一个类派生自另一个类或接口 |
final | 指示变量保持常量值或不会覆盖方法 |
finally | 指示将始终执行的 try-catch 结构中的代码块 |
float | 保存 32 位浮点数的数据类型 |
for | 用于启动 for 循环 |
if | 测试 true/false 表达式并相应地进行分支 |
implements | 指定类实现接口 |
import | 引用其他类 |
instanceof | 指示对象是特定类的实例还是实现接口 |
int | 可以保存 32 位有符号整数的数据类型 |
interface | 声明一个接口 |
long | 一种包含 64 位整数的数据类型 |
native | 指定使用本机(特定于平台的)代码实现方法 |
new | 创建新对象 |
null | 这表示引用不引用任何内容 |
package | 声明 Java 包 |
private | 一个访问说明符,指示只能在声明方法或变量的类中访问 |
protected | 一个访问说明符,指示一个方法或变量只能在声明它的类(或声明它的类的子类或同一包中的其他类)中访问 |
public | 用于类、接口、方法和变量的访问说明符,指示项在整个应用程序中可访问(或定义它的类可访问) |
return | 从调用的方法发送回控制权和可能的返回值 |
short | 可以保存 16 位整数的数据类型 |
static | 指示变量或方法是类方法(而不是仅限于一个特定对象) |
strictfp | Java 关键字用于限制浮点计算的精度和舍入,以确保可移植性。 |
super | 引用类的基类(在方法或类构造函数中使用) |
switch | 根据测试值执行代码的语句 |
synchronized | 指定多线程代码中的关键部分或方法 |
this | 引用方法或构造函数中的当前对象 |
throw | 创建异常 |
throws | 指示方法可能引发的异常 |
transient | 指定变量不是对象的持久状态的一部分 |
try | 启动将进行异常测试的代码块 |
void | 没有返回值 |
volatile | 这表示变量可能会异步更改 |
while | 启动 while 循环 |
sealed | sealed 关键字用于将类声明为 “sealed”,这意味着它限制哪些类可以扩展它。 |
permits | permits 关键字在 sealed 类声明中使用,以指定允许扩展它的子类。 |
示例:使用关键字作为变量名称。它将给出一个错误,如图所示。
// Java 程序如果使用关键字作为变量名会怎样?
class GFG
{
public static void main(String[] args)
{
// Note "this" is a reserved
// word in java
String this = "Hello World!";
System.out.println(this);
}
}
./HelloWorld.java:6: error: not a statement
String this = "Hello World!"; System.out.println(this);
^
./HelloWorld.java:6: error: ';' expected
String this = "Hello World!"; System.out.println(this);
^
2 errors
Java 是静态类型的,也是一种强类型语言,因为在 Java 中,每种类型的数据(如整数、字符、十六进制、打包十进制等)都预定义为编程语言的一部分,并且为给定程序定义的所有常量或变量都必须使用其中一种 Java 数据类型进行描述。
Java 中的数据类型具有不同的大小和值,可以存储在根据方便和情况制作的变量中,以涵盖所有测试用例。Java 有两类数据类型被隔离
例:
// Java 程序演示 int 数据类型
import java.io.*;
class GFG
{
public static void main (String[] args)
{
// 声明两个 int 变量
int a = 15;
int b = 20;
System.out.println( a + b );
}
}
输出
35
JAVA 中的数据类型
原始数据只是单个值,没有特殊功能。有 8 种原始数据类型。它们在下面以表格格式描述如下:
类型 | 描述 | Default | 大小 | 示例 | 值范围 |
---|---|---|---|---|---|
boolean | 对或错 | false | 8 bits | true, false | true, false |
byte | 二进制补码整数 | 0 | 8 bits | (无) | -128 to 127 |
char | Unicode 字符 | \u0000 | 16 bits | ‘a’, ‘\u0041’, ‘\101’, ‘\\’, ‘\’, ‘\n’, ‘β’ | 0 to 255 |
short | 二进制补码整数 | 0 | 16 bits | (无) | -32,768 to 32,767 |
int | 二进制补码整数 | 0 | 32 bits | -2,-1,0,1,2 | -2147483648 to 2147483647 |
long | 二进制补码整数 | 0 | 64 bits | -2L,-1L,0L,1L,2L | -9,223,372,036,854,775,808 to 9223372036854775808 |
float | 浮点数 | 0.0 | 32 bits | 1.23e100f , -1.23e-100f , .3f ,3.14F | 最多7个十进制数字 |
double | 双精度浮点数 | 0.0 | 64 bits | 1.23456e300d , -123456e-300d , 1e1d | 最多16个十进制数字 |
boolean 数据类型表示可以为真或假的逻辑值。从概念上讲,它表示单个信息位,但虚拟机使用的实际大小取决于实现,通常至少为一个字节(8 位)。boolean 类型的值不会使用强制类型转换隐式或显式转换为任何其他类型。但是,程序员可以根据需要编写转换代码。
语法:
boolean booleanVar;
大小 :取决于虚拟机(通常为 1 字节,8 位)
byte 数据类型是 8 位有符号二进制补码整数。byte 数据类型可用于节省大型数组中的内存。
语法:
byte byteVar;
大小 : 1 字节 (8 位)
short 数据类型是 16 位有符号二进制补码整数。与字节类似,当内存节省很重要时,会使用短整型,尤其是在空间受限的大型数组中。
语法:
short shortVar;
大小 : 2 字节 (16 位)
一个 32 位有符号二进制补码整数。
语法:
int intVar;
大小 : 4 字节 ( 32 位 )
在 Java SE 8 及更高版本中,可以使用 int 数据类型来表示无符号 32 位整数,其值在 [0, 2 32-1]。使用 Integer 类将 int 数据类型用作无符号整数。
long 数据类型是一个 64 位有符号二进制补码整数。当 int 不足以容纳值时使用它,提供更广泛的范围。
语法:
long longVar;
大小 : 8 字节(64 位)
在 Java SE 8 及更高版本中,您可以使用 long 数据类型来表示无符号的 64 位 long,其最小值为 0,最大值为 2 64-1。Long 类还包含比较 Unsigned、除以 Unsigned 等方法,以支持 unsigned long 的算术运算。
float 数据类型是单精度 32 位浮点数。如果需要在大型浮点数数组中节省内存,请使用 float (而不是 double)。float 数据类型的大小为 4 字节(32 位)。
语法:
float floatVar;
大小 : 4 字节(32 位)
double 数据类型是双精度 64 位浮点数。对于十进制值,此数据类型通常是默认选择。double 数据类型的大小为 8 个字节或 64 位。
语法:
double doubleVar;
大小 : 8 字节(64 位)
float 和 double 数据类型都是专为科学计算而设计的,其中近似误差是可以接受的。如果准确性是首要考虑因素,则建议不要使用这些数据类型,而应使用 BigDecimal 类。
char 数据类型是单个 16 位 Unicode 字符,大小为 2 字节(16 位)。
语法:
char charVar;
大小 : 2 字节 (16 位)
与使用 ASCII 字符集的语言(如 C 或 C++)不同 ,Java 使用 Unicode 字符集来支持国际化。Unicode 需要 8 位以上的位来表示来自不同语言的各种字符,包括拉丁语、希腊语、西里尔语、中文、阿拉伯语等。因此,Java 使用 2 个字节来存储一个字符,确保它可以表示任何 Unicode 字符。
例:
// Java 程序演示 Char 基本数据类型
class GFG
{
public static void main(String args[])
{
// 创建和初始化自定义字符
char a = 'G';
// 整数数据类型通常用于数值
// used for numeric values
int i = 89;
// 如果内存受限,请使用 byte 和 short
byte b = 4;
// 由于数字大于字节范围,因此这将导致错误
// byte b1 = 7888888955;
short s = 56;
// 由于数字大于字节范围,因此这将导致错误
// short s1 = 87878787878;
// 默认情况下,Java 中的分数值为双精度
double d = 4.355453532;
// 对于浮点数,标准后缀为“f”
float f = 4.7333434f;
// 需要保存大范围的数字,那么我们需要这种数据类型
long l = 12121;
System.out.println("char: " + a);
System.out.println("integer: " + i);
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("float: " + f);
System.out.println("double: " + d);
System.out.println("long: " + l);
}
}
输出
char: G
integer: 89
byte: 4
short: 56
float: 4.7333436
double: 4.355453532
long: 12121
非基本(引用)数据类型将包含变量值的内存地址,因为引用类型不会将变量值直接存储在内存中。它们是字符串、对象、数组等。
字符串 定义为字符数组。Java 中字符数组和字符串之间的区别在于,字符串旨在在单个变量中保存字符序列,而字符数组是单独的 char 类型实体的集合。与 C/C++ 不同,Java 字符串不以 null 字符结尾。
语法: 声明字符串
<String_Type> <string_variable> = “<sequence_of_string>”;
例:
// 不使用 new 运算符声明字符串
String s = "GeeksforGeeks";
// 使用 new 运算符声明字符串
String s1 = new String("GeeksforGeeks");
类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象通用的属性或方法集。通常,类声明可以按顺序包含这些组件:
对象是面向对象编程的基本单位,代表现实生活中的实体。典型的 Java 程序会创建许多对象,您知道,这些对象通过调用方法进行交互。对象由以下部分组成:
与类一样, 接口 可以具有方法和变量,但在接口中声明的方法默认是抽象的(只有方法签名,没有正文)。
数组是一组类型相同的变量,它们由一个通用名称引用。Java 中的数组的工作方式与 C/C++ 中的不同。以下是有关 Java 数组的一些要点。
- 强类型:Java 在编译时强制执行严格的类型检查,从而减少运行时错误。
- 内存效率:根据所需的范围和精度选择正确的数据类型有助于高效的内存管理。
- 字符串的不变性:Java 中的字符串一旦创建就无法更改,从而确保多线程环境中的安全性。
- 数组长度:Java 中数组的长度一旦声明就固定了,可以使用 属性
length
了解 Java 的数据类型是高效编程的基础。每种数据类型都有特定的用例和约束,因此必须为手头的任务选择正确的类型。这确保了最佳的内存使用和程序性能,同时利用 Java 的强大类型系统在开发过程的早期捕获错误。