当前位置: 首页 > news >正文

「Java基本语法」标识符、关键字与常量

知识点解析

1.标识符(Identifiers):用于命名类、方法、变量等。

标识符命名规则:

  1. 标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”或美元符号“$”组成。
  2. 标识符不能以数字、空格、特殊字符(例如,@、#)开头。
  3. 标识符不能是Java中的关键字。
  4. 标识符严格区分大小写,例如,nameName是两个不同的标识符。
  5. 标识符的长度无限制,但建议简洁明了。

2.关键字(Keywords)

关键字是Java语言中具有特殊含义的保留字,它们被Java语言本身使用,不能用作标识符,关键字全部小写。

关键字的分类:

  1. 访问修饰符:public、private、protected。
  2. 控制流:if、else、for、while。
  3. 数据类型:int、double、boolean。
  4. 类相关:class、interface、extends。

3.常量(Constants)

常量是指在程序执行过程中其值不能被改变的固定值。

Java 中常量的主要类型:

  1. 字面常量(Literal Constants),直接写在代码中的固定值。

整数常量:10、-100、0x1A(十六进制)。

浮点常量:3.14、2.5f(float)、2.5d(double)。

字符常量:'A'、'\n'(转义字符)。

字符串常量:"Java"、""(空字符串)。

布尔常量:true、false。

  1. 使用final关键字定义的常量。
final int MAX_VALUE = 100;
final double PI = 3.1415926;
final String GREETING = "Hello World";
  1. 枚举常量,通过enum定义的枚举类型中的值
enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY }
  1. 静态常量,通常在类中定义,使用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

代码解析

  1. Java源文件保存为“IdentifierExample.java”。
  2. userName_agePI是合法标识符。
  3. 注释掉的代码是非法标识符,会导致编译错误。

案例:标识符的合法性验证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

代码解析

  1. Java源文件保存为“IdentifierExample.java”。
  2. $countuser_name是合法但非常规的标识符,实际开发中建议避免使用$和下划线开头。
  3. 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

代码解析

  1. Java源文件保存为“ConstantExample.java”。
  2. 浮点常量19.99ff表示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

代码解析

  1. Java源文件保存为“ConstantExample.java”。
  2. 0x1A是十六进制整数常量,值为 26。
  3. \n是转义字符,表示换行。
  4. greeting字符串中的\n会在输出时换行。

案例:关键字与标识符冲突

public class KeywordConflict {public static void main(String[] args) {// 错误示例:关键字不能作为变量名// int public = 10; // 编译错误:public是关键字// 正确做法:使用非关键字标识符int visibility = 10;System.out.println("可见性: " + visibility);}
}

运行结果

可见性: 10

代码解析

  1. Java源文件保存为“KeywordConflict.java”。
  2. public是关键字,不能作为变量名。
  3. 修改为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后缀}
}

http://www.xdnf.cn/news/938863.html

相关文章:

  • Java编程之组合模式
  • Python项目的构建和部署方案推荐
  • remote display server is not supported (e.g. Wayland)
  • CentOS-7 通过 NFS 实现服务器之间的文件共享
  • 深入了解NIO的优化实现原理
  • 二叉树-226.翻转链表-力扣(LeetCode)
  • Python学习(7) ----- Python起源
  • cookie session和token的区别
  • 突破同步训练瓶颈!AReaL如何实现大规模异步强化学习系统的高效语言推理?
  • 树的基本概念与操作:构建数据结构的层级世界
  • leetcode2368. 受限条件下可到达节点的数目-medium
  • JDK8新特性之Steam流
  • 手动实现C#ArrayList容器
  • Boost ASIO 库深入学习(2)
  • Redis持久化策略:RDB与AOF详解
  • shell脚本 --案例实操
  • cognee,有望替代 RAG, 简单了解一下
  • 服务网格技术深度解析:Istio vs Linkerd的选型对比
  • 【Self-Ask with Search Agent机制概述】利用TavilyAnswer实现搜索代理
  • 【文件传输脚本】
  • XSS攻击防御全指南:核心防护技巧
  • UVM的断言assert详谈
  • 【GESP真题解析】第 17 集 GESP 三级 2024 年 12 月编程题 2:打印数字
  • Linux 基础IO(下)
  • Linux 内核内存管理子系统全面解析与体系构建
  • 基于cornerstone3D的dicom影像浏览器 第三十章 心胸比例测量工具CTRTool
  • 深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
  • 隐函数 因变量确定标准
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (三)数据格式
  • (LeetCode 动态规划(基础版))96. 不同的二叉搜索树 (递推 || 递归)