1、标识符
1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴
2. 标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以。标识符没有长度限制。
3. 标识符是严格区分大小写的。 一定要分清楚 imooc 和 IMooc 是两个不同的标识符。
4. 标识符的命名最好能反映出其作用,做到见名知意。
Java 预留的关键字如下
访问控制 |
private 、protected、public |
程序控制 |
if、else、for、while、break、continue、return、do、switch、case、default、instanceof |
类、方法、变量修饰符 |
abstract、class、extends、final、implements、interface、native、new、static、strictfp、synchronize、transient、volatile |
错误处理 |
try、catch、throw、throws |
包相关 |
import、package |
基本类型 |
byte、short、int、long、float、double、char、boolean、null、true、false |
变量引用 |
super、this、void |
保留字 |
goto、const |
2、常量
指在程序执行期间其值不能发生改变的数据。
一种是值的本身如整数123,布尔类型的true false;
一种是final关键字修饰的变量 变量名大写(约定俗成的编程习惯),赋值后也是常量。
3、变量
是指在程序运行期间可以改变的量。在程序中使用变量 必须先声明:变量类型和变量标识符
4、常量池相关知识点
4.1字符串常量池
字符串常量池(String Constant Pool)是Java中一个重要的内存优化机制,用于存储字符串字面量和显式intern的字符串对象。
核心要点:
- 目的:减少重复字符串对象的创建,节省内存并提高性能;
- 存储内容:字符串字面量(如"hello")和通过intern()方法加入的字符串
- 不可变性:字符串内容不可变,使得共享成为可能。
关键机制:
- 字面量创建:JVM会检查常量池,存在则返回引用,否则创建新的对象加入池中。
- new创建:无论常量池是否存在,都会在堆内存(元空间)中创建新对象。
String s1 = "hello"; // 字面量方式,直接使用常量池
String s2 = new String("hello"); // new方式,强制创建新对象
String s3 = s2.intern(); // 手动将对象加入常量池
s1 == s2 // false
s2 == s3 //true
String s4 = "hello2"; // 字面量方式,直接使用常量池
String s5 = "hello"+"2"; //编译器会将"hello"+"2"直接优化为"hello2"(常量折叠)
String s6 = s4+"2"; //存在引用,运行时拼接,会创建新的对象
s4 == s5 // true
s4 == s6 //false