知识点解析

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.pswp.cn/bicheng/84247.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/84247.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/84247.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module

1.为什么需要连接数限流? 数据库/Redis/MQ 连接耗资源:恶意脚本或误配可能瞬间占满连接池,拖垮后端。防御慢速攻击:层叠式限速(连接数+带宽)可阻挡「Slow Loris」之类的 TCP 低速洪水。公平接入…

LLMs之Structured Output:vLLM 结构化输出指南—从约束生成到自动解析与高效实现

LLMs之Structured Output:vLLM 结构化输出指南—从约束生成到自动解析与高效实现 导读:随着大语言模型(LLM)在各类任务中的广泛应用,如何使其输出具备可控性、结构化与可解析性,成为实际部署中的关键问题。…

32 C 语言字符处理函数详解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace

1 isalnum() 函数 1.1 函数原型 #include <ctype.h>int isalnum(int c); 1.2 功能说明 isalnum() 函数用于检查传入的整数参数是否为 ASCII 编码的字母或数字字符&#xff08;A - Z、a - z、0 - 9&#xff0c;对应 ASCII 值 65 - 90、97 - 122、48 - 57&#xff09;。…

在网络排错中,经常会用到的操作命令和其作用

在网络排错中&#xff0c;经常会用到的操作命令和其作用 网络排错是确保网络连接正常运行的重要环节&#xff0c;通过使用一系列工具和命令&#xff0c;可以有效诊断和解决网络问题。以下是常用的网络排错命令及其作用&#xff1a; 1.ping ping 是一个用于测试主机之间连通性…

C++中友元(friend)高级应用和使用示例

下面列出几个 高级友元应用场景 与典型设计模式&#xff0c;并配以示例&#xff0c;帮助大家在实际项目中灵活运用 friend 机制。 1. ADL 友元注入&#xff08;“注入式友元”&#xff09; 场景&#xff1a;为某个类型定义非成员操作符&#xff08;如算术、流插入等&#xff0…

TCP相关问题 第一篇

TCP相关问题1 1.TCP主动断开连接方为什么需要等待2MSL 如上图所示:在被动链接方调用close&#xff0c;发送FIN时进入LAST_ACK状态&#xff0c;但未收到主动连接方的ack确认&#xff0c;需要被动连接方重新发送一个FIN&#xff0c;而为什么是2MSL&#xff0c;一般认为丢失ack在…

STM32启动文件学习(startup_stm32f40xx.s)

原代码 ;******************** (C) COPYRIGHT 2016 STMicroelectronics ******************** ;* File Name : startup_stm32f40xx.s ;* Author : MCD Application Team ;* version : V1.8.0 ;* date : 09-November-2016 ;* Desc…

uni-app学习笔记二十三--交互反馈showToast用法

showToast部分文档位于uniapp官网-->API-->界面&#xff1a;uni.showToast(OBJECT) | uni-app官网 uni.showToast(OBJECT) 用于显示消息提示框 OBJECT参数说明 参数类型必填说明平台差异说明titleString是提示的内容&#xff0c;长度与 icon 取值有关。iconString否图…

【Ragflow】26.RagflowPlus(v0.4.0):完善解析逻辑/文档撰写模式全新升级

概述 在历经半个月的间歇性开发后&#xff0c;RagflowPlus再次迎来一轮升级&#xff0c;正式发布v0.4.0。 开源地址&#xff1a;https://github.com/zstar1003/ragflow-plus 更新方法 下载仓库最新代码&#xff1a; git clone https://github.com/zstar1003/ragflow-plus.…

【论文解读】Toolformer: 语言模型自学使用工具

1st author: ‪Timo Schick‬ - ‪Google Scholar‬ paper: Toolformer: Language Models Can Teach Themselves to Use Tools | OpenReview NeurIPS 2023 oral code: lucidrains/toolformer-pytorch: Implementation of Toolformer, Language Models That Can Use Tools, by…

Spring 官方推荐构造函数注入

1. 依赖关系明确 构造函数注入可以清晰地声明类的依赖关系&#xff0c;所有必需的依赖项都通过构造函数参数传递&#xff0c;使得代码的可读性更高。这种方式让类的使用者能够直观地了解类的依赖&#xff0c;而不需要通过注解或反射来猜测。 2. 增强代码健壮性 构造函数注入…

[深度学习]搭建开发平台及Tensor基础

一、实验目的 1. 掌握Windows下PyTorch 深度学习环境的配置 2. 掌握一种PyTorch开发工具 3. 理解张量并掌握Tensor的常用操作&#xff08;创建、调整形状、加、减、乘、除、取绝对值、比较操作、数理统计操作 4. 掌握Tensor与Numpy的互相转换操作 5. 掌握Tensor 的降维和…

【Zephyr 系列 14】使用 MCUboot 实现 BLE OTA 升级机制:构建安全可靠的固件分发系统

🧠关键词:Zephyr、MCUboot、OTA 升级、BLE DFU、双分区、Bootloader、安全固件管理 📌面向读者:希望基于 Zephyr 为 BLE 设备加入安全 OTA 升级功能的开发者 📊预计字数:5200+ 字 🧭 前言:为什么你需要 OTA? 随着设备部署数量增多与产品生命周期延长,远程升级(…

App Search 和 Workplace Search 独立产品现已弃用

作者&#xff1a;来自 Elastic The Search Product Team App Search 和 Workplace Search 的核心功能已集成到 Elasticsearch 和 Kibana 中。 我们宣布在 9.0 版本中弃用 App Search 和 Workplace Search。 如果你是 Elastic 的客户&#xff0c;当前正在使用 App Search 和 Wo…

Spring Boot + OpenAI 构建基于RAG的智能问答系统

一、技术架构设计 1.1 系统架构图 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [问答处理服务层]├─▶ [知识库检索模块] ──▶ [向量数据库]└─▶ [OpenAI集成模块] ──▶ [OpenAI API]│▼ [结果组装与返回] 1.2 技术选型 组件技术栈版本要求…

Oracle实用参考(13)——Oracle for Linux物理DG环境搭建(2)

13.2. Oracle for Linux物理DG环境搭建 Oracle 数据库的DataGuard技术方案,业界也称为DG,其在数据库高可用、容灾及负载分离等方面,都有着非常广泛的应用,对此,前面相关章节已做过较为详尽的讲解,此处不再赘述。 需要说明的是, DG方案又分为物理DG和逻辑DG,两者的搭建…

【论文阅读29】区间预测CIPM(2025)

这篇论文主要研究的是滑坡位移的区间预测方法&#xff0c;提出了一种新型的预测模型&#xff0c;叫做复合区间预测模型&#xff08;CIPM&#xff09;&#xff0c;并以三峡库区的白家堡滑坡为案例进行了应用和验证。论文的核心内容和贡献包括&#xff1a; 背景与问题 滑坡位移预…

Linux 文件系统底层原理笔记:磁盘结构、ext2 文件系统与软硬链接解析

文章目录 一、理解硬件1.1 磁盘、服务器、机柜、机房1.2 磁盘物理结构1.3 磁盘的存储结构1.4 磁盘的逻辑结构1.4.1 理解过程1.4.2 真实过程 1.5 CHS && LBA地址 二、引入文件系统2.1 引入"块"概念2.2 引入"分区"概念2.3 引入"inode"概念…

75Qt窗口_Qt窗口概览

Qt 窗⼝ 是通过 QMainWindow类 来实现的。 QMainWindow 是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃ QWidget 类&#xff0c;并且提供了⼀个预定义的布局。 QMainWindow 包含 ⼀个菜单栏&#xff08;menu bar&#xff09;、多个⼯具栏(tool bars)、多个浮动窗⼝&#x…

Appium+python自动化(九)- 定位元素工具

简介 环境搭建好了&#xff0c;其他方面的知识也准备的差不多了&#xff0c;那么就开始下一步元素定位&#xff0c;元素定位主要介绍如何使用uiautomatorviewer&#xff0c;通过定位到页面上的元素&#xff0c;然后进行相应的点击等操作. 此外在介绍另一款工具&#xff1a;Insp…