「Java基本语法」标识符、关键字与常量
知识点解析
1.标识符(Identifiers):用于命名类、方法、变量等。
标识符命名规则:
- 标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”或美元符号“$”组成。
- 标识符不能以数字、空格、特殊字符(例如,@、#)开头。
- 标识符不能是Java中的关键字。
- 标识符严格区分大小写,例如,name和Name是两个不同的标识符。
- 标识符的长度无限制,但建议简洁明了。
2.关键字(Keywords)
关键字是Java语言中具有特殊含义的保留字,它们被Java语言本身使用,不能用作标识符,关键字全部小写。
关键字的分类:
- 访问修饰符:public、private、protected。
- 控制流:if、else、for、while。
- 数据类型:int、double、boolean。
- 类相关:class、interface、extends。
3.常量(Constants)
常量是指在程序执行过程中其值不能被改变的固定值。
Java 中常量的主要类型:
- 字面常量(Literal Constants),直接写在代码中的固定值。
整数常量:10、-100、0x1A(十六进制)。
浮点常量:3.14、2.5f(float)、2.5d(double)。
字符常量:'A'、'\n'(转义字符)。
字符串常量:"Java"、""(空字符串)。
布尔常量:true、false。
- 使用final关键字定义的常量。
final int MAX_VALUE = 100;
final double PI = 3.1415926;
final String GREETING = "Hello World";
- 枚举常量,通过enum定义的枚举类型中的值
enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY }
- 静态常量,通常在类中定义,使用static final组合:
public class Constants {public static final int MAX_USERS = 1000;public static final String DEFAULT_NAME = "Guest";
}
案例解析
案例:标识符的合法性验证1
public class IdentifierExample {public static void main(String[] args) {// 合法标识符String userName = "Alice";int _age = 25;final double PI = 3.14159;// 非法标识符(编译错误)// int 123name = 10; // 不能以数字开头// String class = "Math"; // 关键字不能作为标识符System.out.println("用户名: " + userName);System.out.println("年龄: " + _age);System.out.println("圆周率: " + PI);}
}
运行结果
用户名: Alice
年龄: 25
圆周率: 3.14159
代码解析
- Java源文件保存为“IdentifierExample.java”。
- userName、_age、PI是合法标识符。
- 注释掉的代码是非法标识符,会导致编译错误。
案例:标识符的合法性验证2
public class IdentifierExample {public static void main(String[] args) {// 合法标识符String user_name = "Alice"; // 包含下划线int $count = 10; // 美元符号开头final double PI_VALUE = 3.14159; // 常量全大写// 非法标识符(取消注释会报错)// int 123name = 20; // 数字开头// String void = "key"; // 关键字冲突// String user name = "Bob"; // 包含空格System.out.println("用户名: " + user_name);System.out.println("计数: " + $count);System.out.println("圆周率: " + PI_VALUE);}
}
运行结果
用户名: Alice
计数: 10
圆周率: 3.14159
代码解析
- Java源文件保存为“IdentifierExample.java”。
- $count和user_name是合法但非常规的标识符,实际开发中建议避免使用$和下划线开头。
- PI_VALUE遵循常量命名规范。
案例:常量的使用
public class ConstantExample {public static void main(String[] args) {// 整数常量int count = 100;// 浮点常量float price = 19.99f;// 字符常量char grade = 'A';// 字符串常量String message = "欢迎学习Java!";// 布尔常量boolean isActive = true;System.out.println("数量: " + count);System.out.println("价格: " + price);System.out.println("等级: " + grade);System.out.println("消息: " + message);System.out.println("是否激活: " + isActive);}
}
运行结果
数量: 100
价格: 19.99
等级: A
消息: 欢迎学习Java!
是否激活: true
代码解析
- Java源文件保存为“ConstantExample.java”。
- 浮点常量19.99f的f表示float类型。
案例:常量的类型与使用
public class ConstantExample {public static void main(String[] args) {// 整数常量(十进制、十六进制)int decimal = 100;int hex = 0x1A; // 十六进制,值为26// 浮点常量(float和double)float floatValue = 19.99f;double doubleValue = 3.14159;// 字符常量(普通字符和转义字符)char letter = 'Z';char newline = '\n';// 字符串常量String greeting = "Hello,\nJava!"; // 包含转义字符// 布尔常量boolean isReady = true;System.out.println("十进制: " + decimal);System.out.println("十六进制: " + hex);System.out.println("浮点数: " + floatValue);System.out.println("双精度: " + doubleValue);System.out.println("字符: " + letter);System.out.println("换行符演示:" + newline + "结束");System.out.println(greeting);System.out.println("状态: " + isReady);}
}
运行结果
十进制: 100
十六进制: 26
浮点数: 19.99
双精度: 3.14159
字符: Z
换行符演示:
结束
Hello,
Java!
状态: true
代码解析
- Java源文件保存为“ConstantExample.java”。
- 0x1A是十六进制整数常量,值为 26。
- \n是转义字符,表示换行。
- greeting字符串中的\n会在输出时换行。
案例:关键字与标识符冲突
public class KeywordConflict {public static void main(String[] args) {// 错误示例:关键字不能作为变量名// int public = 10; // 编译错误:public是关键字// 正确做法:使用非关键字标识符int visibility = 10;System.out.println("可见性: " + visibility);}
}
运行结果
可见性: 10
代码解析
- Java源文件保存为“KeywordConflict.java”。
- public是关键字,不能作为变量名。
- 修改为visibility后代码合法。
常见错误
错误:标识符以数字开头
示例:int 123value = 10;
错误提示:Identifier expected
解决方法:改为字母开头,如int value123 = 10;。
错误:标识符包含非法字符
示例:String user@name = "Alice";
错误提示:'@' is not a valid character
解决方法:移除特殊字符,如String userName = "Alice";。
错误:使用关键字作为标识符
示例:String class = "Java";
错误提示:'class' cannot be used as an identifier
解决方法:改为非关键字,如String className = "Java";。
错误:浮点常量缺少后缀
示例:float price = 19.99;
错误提示:possible loss of precision
解决方法:添加f后缀,如float price = 19.99f;。
错误:混淆常量与变量
示例:
final int MAX = 100;
MAX = 200; // 编译错误:常量不可修改
错误提示:Cannot assign a value to final variable MAX
解决方法:确保常量只赋值一次。
错误:浮点常量未指定类型
示例:float price = 9.99;
错误提示:possible loss of precision
解决方法:明确指定类型,如,float price = 9.99f;。
知识总结
标识符:用于命名,需遵循规则(字母/数字/下划线/美元符号,不能以数字开头,不能是关键字)。遵循标识符的命名规则,避免使用 $ 和下划线开头。
关键字:Java预定义的保留字,不可用作标识符。
常量:固定值,包括整数、浮点、字符、字符串和布尔类型。默认是final修饰,值不可变。
理论练习
判断标识符的合法性
_name
123abc
class
user$Name
答案:合法标识符包括,_name、user$Name(合法但非常规)。
以下哪些是关键字
int
String
if
final
答案:关键字包括,int、if、final。
以下哪些是合法的常量?
3.14
'A'
"Hello"
true
答案:合法常量包括,3.14、'A'、"Hello"、true。
实操练习
练习:编写代码,定义一个合法的类名、变量名和常量名,并输出它们的值。
参考答案
public class MyClass {public static void main(String[] args) {String studentName = "Bob";final int MAX_SCORE = 100;System.out.println("学生姓名: " + studentName);System.out.println("最高分: " + MAX_SCORE);}
}
运行结果
学生姓名: Bob
最高分: 100
说明:Java源文件保存为“MyClass.java”。
练习:修改以下代码中的错误:
public class ErrorExample {public static void main(String[] args) {int 1stNumber = 10; // 错误1String class = "Math"; // 错误2float price = 25.5; // 错误3}
}
参考答案
public class ErrorExample {public static void main(String[] args) {int firstNumber = 10; // 修改为字母开头String className = "Math"; // 修改为非关键字float price = 25.5f; // 添加f后缀}
}