目录
1. 注释
1.1 什么是注释
注释是程序员在代码中写的“说明文字”,不会被计算机执行。
Java支持三种注释:
1. 单行注释
2. 多行注释
3. 文档注释
常用的注释有单行注释和多行注释这两种,文档注释初学者只需了解即可。
1.2 为什么要写注释
1. 提高代码可读性:别人(或未来的你)能快速理解代码逻辑。
2. 方便调试:可以临时注释掉代码,排查问题。
3. 生成文档:用文档注释 (/** */
) 可以直接生成 API 文档(如 JDK 官方文档)。
1.3 三种注释的用法
1.3.1 单行注释 //
作用:注释一行代码,适合简短说明
实例:
// 这是一个单行注释
1.3.2 多行注释 /*...*/
作用:注释多行代码,适合较长的解释或临时禁用代码块
/*
这是一个多行注释
可以写很多行
下面的代码被注释掉了,不会执行:
System.out.println("这行不会运行");
*/
1.3.3 文档注释 /**...*/
作用:用于生成JavaDoc文档
示例:
/**
* 这是一个计算两数相加的方法
* @param a 第一个数
* @param b 第二个数
* @return 返回 a + b 的结果
*/
1.4 注释的建议
1. 不要写无意义的注释(如 int a = 10; // 定义a为10
)
2. 注释要清晰简洁,解释 为什么 而不是 做什么(代码本身能看出做什么)。
2. 关键字
2.1 什么是关键字
关键字 是 Java 语言预定义的、有特殊含义的单词(如 class
、public
、if
)。
特点:
1. 全部为小写(如 int
,不是 INT
)。
2. 不能用作变量名、方法名等(否则编译报错)。
2.2 常见关键字分类
类别 | 示例关键字 | 用途 |
---|---|---|
数据类型 | int , double , boolean | 定义变量类型 |
流程控制 | if , else , for , while | 控制代码逻辑分支和循环 |
访问修饰符 | public , private , protected | 控制类、方法的访问权限 |
类与对象 | class , new , this , super | 面向对象编程 |
异常处理 | try , catch , throw | 处理程序错误 |
注意:String是类名不是关键字。
2.3 常见问题解答
Q1:main
是关键字吗?
不是!main
只是一个约定俗成的方法名,可以被重命名(但程序入口方法必须是 public static void main(String[] args)
)。
Q2:true
和 false
是关键字吗?
它们是 字面量(Literal),不是关键字,但也不能作为标识符。
3. 标识符
3.1 什么是标识符?
标识符是程序员自定义的名称(如类名、变量名、方法名)。
示例:
public class Hello{
public static void main(String[] args){
String name = "wei"; // String用来定义一个字符串变量,name是变量名,wei是字符串字面量
int age = 20; // int用来定义一个整数变量
}
}
3.2 标识符的命名规则(必须遵守)
1. 组成字符:
字母(A-Z/a-z)、数字(0-9)、下划线(_
)、美元符($
)。
不能以数字开头(如 1name
错误,name1
正确)。
2. 区分大小写:age 和 Age是两个不同的标识符
3. 不能是关键字(如 int public = 10;
会报错)。
3.3 标识符的命名规范(建议遵守)
类型 | 规范示例 | 错误示例 |
---|---|---|
类名 | Student , Car | student , CAR |
方法名 | getName() , calculateSum() | GetName() , CALCULATE() |
变量名 | userName , maxValue | username , MAX_VALUE |
常量名 | MAX_SIZE , PI | maxSize , pi |
3.4 代码示例对比
// 合法的标识符
String userName = "Alice"; // 驼峰命名
final double PI = 3.14; // 常量全大写
// 非法的标识符
int 2ndPlace; // 错误:数字开头
String class; // 错误:class 是关键字
注意:标识符最好不要用中文或者拼音
3.5 巩固练习
找出下面代码中的关键字和标识符:
public class Hello {
public static void main(String[] args) {
String message = "Hello World";
System.out.println(message);
}
}
答案:
关键字:public
, class
, static
, void
标识符:Hello
, main
, args
, message
, println
4. 数据类型
4.1 数据类型概述
在 Java 中,数据类型用于定义变量可以存储的数据种类和大小。Java 的数据类型分为两大类:
1. 基本数据类型(Primitive Types):存储简单的数据值
2. 引用数据类型(Reference Types):存储对象的引用(地址)
4.2 基本数据类型
Java 有 8 种基本数据类型:
数据类型 | 关键字 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|---|
字节型 | byte | 1字节 | -128 ~ 127 | 0 | byte b = 100; |
短整型 | short | 2字节 | -32,768 ~ 32,767 | 0 | short s = 5000; |
整型 | int | 4字节 | -2³¹ ~ 2³¹-1 (约±21亿) | 0 | int i = 100000; |
长整型 | long | 8字节 | -2⁶³ ~ 2⁶³-1 | 0L | long l = 100L; |
单精度 | float | 4字节 | ±3.4E+38 (约6-7位有效数字) | 0.0f | float f = 3.14f; |
双精度 | double | 8字节 | ±1.7E+308 (约15位有效数字) | 0.0d | double d = 3.14; |
字符型 | char | 2字节 | Unicode字符(\u0000~\uffff) | '\u0000' | char c = 'A'; |
布尔型 | boolean | 1位 | true/false | false | boolean flag=true; |
注意事项
1. 整型默认是int,声明long需加L
后缀(推荐大写,避免与1混淆)
long bigNum = 10000000000L; // 不加L会报错
2. 浮点型默认是double,声明float需加f
后缀
float pi = 3.14159f; // 不加f会报错
3. char使用单引号,可存储Unicode字符
char ch1 = '中'; // 中文字符
char ch2 = '\u0041'; // Unicode编码(A)
4. boolean只有true/false,不能用0/1代替
boolean isJavaFun = true; // 正确
// boolean flag = 1; // 错误!
4.3 引用数据类型
引用类型存储的是对象的引用(内存地址),包括:
类(如String
、自定义类)
接口
数组
枚举
示例
String name = "张三"; // String是类
int[] numbers = {1, 2, 3}; // 数组
Scanner sc = new Scanner(System.in); // 自定义类
与基本类型的区别
特性 | 基本类型 | 引用类型 |
---|---|---|
存储内容 | 实际数据值 | 对象的引用(地址) |
内存分配 | 栈内存 | 堆内存(对象在堆中) |
默认值 | 有(如int为0) | null |
比较方式 | == 比较值 | == 比较地址,equals() 比较内容 |
4.4 类型转换
1. 自动类型转换(隐式转换)
小范围类型 → 大范围类型(编译器自动完成)
int i = 100;
long l = i; // 自动转为long
double d = 3.14f; // float自动转为double
2. 强制类型转换(显式转换)
大范围类型 → 小范围类型(可能丢失精度)
double d = 3.14;
int i = (int)d; // 强制转为int,值为3(丢失小数部分)
char c = (char)65; // 输出'A'
转换规则
4.5 常见问题
Q1:float和double如何选择?
需要高精度计算(如货币)用 BigDecimal
一般情况用 double
(默认)
内存敏感场景用 float
Q2:char能存中文吗?
可以,Java的char是Unicode编码(2字节),支持中文
char ch = '中'; // 合法
Q3:基本类型和包装类的区别?
基本类型:直接存储值,效率高
包装类(如Integer
):是对象,可用于泛型、集合
int num = 10; // 基本类型
Integer objNum = 10; // 包装类
4.6 实战练习
1. 指出以下代码的错误:
long phone = 13812345678; // 错误:超出int范围,需加L
float price = 19.99; // 错误:需加f后缀
2. 计算以下表达式的类型:
double result = 5 + 3.14f; // 结果为float还是double?
// 答案:double(float自动提升为double)