知识点解析
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”。
- 和下划线开头。
- 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; // 错误1
String class = "Math"; // 错误2
float price = 25.5; // 错误3
}
}
参考答案
public class ErrorExample {
public static void main(String[] args) {
int firstNumber = 10; // 修改为字母开头
String className = "Math"; // 修改为非关键字
float price = 25.5f; // 添加f后缀
}
}