主要内容
- 关键字和标识符
- 变量和常量
- 八大基本数据类型
- Scanner键盘输入
- 基本数据类型的类型转换
- 算术运算符
- 赋值运算符
- 扩展赋值运算符
- 比较运算符
- 逻辑运算符
- 三目运算符
- 运算符的优先级别
学习目标
知识点 | 要求 |
---|---|
关键字和标识符 |
理解 |
变量和常量 |
掌握 |
八大基本数据类型 |
掌握 |
Scanner键盘输入 |
掌握 |
基本数据类型的类型转换 |
掌握 |
算术运算符 |
掌握 |
赋值运算符 |
掌握 |
扩展赋值运算符 |
掌握 |
比较运算符 |
掌握 |
逻辑运算符 |
掌握 |
三目运算符 |
掌握 |
运算符的优先级别 |
了解 |
1.常量和变量
1.1 关键字&保留字
Java关键字是编程语言中预先定义、具有特定含义的标识符,也称为保留字。这些关键字对Java编译器具有特殊意义,用于表示数据类型或程序结构等核心功能。
abstract |
boolean |
break |
byte |
case |
---|---|---|---|---|
catch |
char |
class |
const |
continue |
default |
do |
double |
else |
enum |
extends |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
short |
static |
strictfp |
super |
switch |
synchronized |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
备注:这些关键字不需要刻意去背,后面会慢慢介绍每个关键字的用法。
1.2 标识符
在Java编程中,标识符是用于为变量、类、方法及包等程序元素命名的命名符号。
1.2.1 标识符命名规则
- 标识符由字母(A-Z 和 a-z)、数字(0-9)、下划线(_)和美元符号($)构成;
- 标识符的首字符不能为数字,后续部分可包含字母、下划线、美元符号和数字的任意组合;
- Java 标识符区分大小写,且长度不受限制;
- 标识符不得使用 Java 关键字和保留字。
1.2.2 标识符命名规范
- 类名标识符应采用大驼峰式命名法(PascalCase),即首字母大写且每个单词首字母大写。
例如:Person、GoodStudent - 方法和变量标识符应采用小驼峰式命名法(camelCase),即首字母小写且后续单词首字母大写。
例如:int userName;、public void eatFood(){}
特别说明:由于Java采用Unicode字符集,标识符可使用包括中文在内的多种字符。但为提高代码可读性和维护性,建议避免使用汉字作为标识符。
1.3 变量(Variable)
1.3.1 变量的本质
变量本质上是一个具有确定存储位置的可操作空间,其具体存储值则是不确定的。通过变量名,我们可以访问并操作该存储空间中的内容。
Java作为一门强类型语言,要求所有变量在使用前必须明确声明其数据类型。这种数据类型不仅决定了变量所能存储的值的范围,还直接影响了变量在内存中所占用的存储空间大小。我们可以将内存中的变量形象地比作旅馆的房间,而常量则如同入住这些房间的旅客,每个房间(变量)都有其特定的类型和容量,用于容纳不同类型的旅客(常量)。
1.3.2 变量的声明
变量声明语法:数据类型 变量名;
变量声明本质:就是在内存中开辟一块内存空间,用于存放指定数据类型的数据。
- 声明一个变量
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:08
* @Version: v1.0.0
* @Description: TODO
**/
public class VariableDemo1 {
public static void main(String[] args) {
// 定义整型变量age
int age;
// 定义双精度浮点型变量price
double price;
}
}
- 同时声明多个变量
语法:数据类型 变量名1, 变量名2, 变量名3;
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:08
* @Version: v1.0.0
* @Description: TODO
**/
public class VariableDemo1 {
public static void main(String[] args) {
// 声明一个int类型的变量age
int age;
// 声明一个float类型的变量
double price;
// 声明多个int类型的变量
int num1, num2, num3;
}
}
注意:在同时声明多个变量时,所有变量必须属于同一类型。
1.3.3 变量的赋值
变量赋值的本质是:通过变量名定位对应的内存地址,并将数据存储到该内存区域中。
- 给变量赋值
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:20
* @Version: v1.0.0
* @Description: TODO
**/
public class VariableDemo2 {
public static void main(String[] args) {
// 声明一个int类型的变量age
int age; // 在内存中分配存储空间
// 为age变量赋值
age = 23; // 将等号右侧的值赋给左侧的变量
}
}
注意:赋值的数据类型必须和声明变量类型一致。
- 声明和赋值同时进行
语法: 数据类型 变量名 = 数据值;
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:20
* @Version: v1.0.0
* @Description: TODO
**/
public class VariableDemo2 {
public static void main(String[] args) {
int age2 = 23; // 将右侧的值赋给左侧变量
}
}
- 同时声明和赋值多个变量
语法:数据类型 变量名1 = 数据值1,变量名2 = 数据值2,变量名3 = 数据值3;
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:20
* @Version: v1.0.0
* @Description: TODO
**/
public class VariableDemo2 {
public static void main(String[] args) {
// 一次性声明并初始化多个变量(不推荐,影响代码可读性)
int num1 = 10, num2 = 20, num3 = 30;
}
}
1.3.4 变量总结和提升
变量以"变"为核心特征,其本质在于声明时开辟的内存空间可被重复赋值。
使用变量时需注意以下要点:
1)方法内部声明的变量必须在赋值后才能调用;
2)变量使用需遵循声明优先原则,未经声明的变量名不具备任何意义;
3)命名规范要求变量名采用小写字母开头的驼峰式命名法,且必须符合标识符规则;
4)赋值操作需确保数据类型与变量声明类型严格一致;
5)同一方法内禁止声明多个同名变量。
1.4 常量(Constant)
在编程中,常量指代不可变的固定值,常见示例包括:整型1、浮点型2.1、字符’a’、布尔值true/false、字符串"helloWorld"、空字符串""以及空值null等。
在Java语言中,我们可以通过final关键字来显式声明常量。
语法:final 数据类型 常量名 = 数据值;
常量的核心特性在于其不可变性:一旦完成初始化赋值,其值将始终保持不变,无法被后续程序修改。
/**
* @Author: chenxiezhu
* @Date: 2025/5/12 23:37
* @Version: v1.0.0
* @Description: TODO
**/
public class ConstantDemo1 {
public static void main(String[] args) {
final float PI = 3.1415926f;
}
}
注意:
- 常量仅允许赋值一次,一旦赋值完成,其值便不可修改。
- 常量名称通常采用大写字母,多个单词之间以下划线分隔,例如:final int MAX_VALUE = 100;
2. 基本数据类型
Java 作为一门强类型语言,要求所有变量在使用前必须明确声明其数据类型。
Java 的数据类型主要分为两大类:基本类型(Primitive Type)和引用类型(Reference Type)。
2.1 整数型
整数型常量可分为以下三种表示形式:
- 十进制整数,如:666,-100等
- 八进制整数,要求以0开头,如:016
- 十六进制整数,要求以0x或0X开头,如:0x1A,0x15
数据类型占用存储空间越大,那么表数的范围也就越大。在开发实践中,应根据具体需求选择合适的数值类型,避免超出表数范围。通常情况下,int类型是最常用的选择。
类型 | 占用存储空间 | 数值范围 |
---|---|---|
byte |
1 字节 | (-128 ~ 127) -27~ 27 - 1 |
short |
2 字节 | (-32768 ~ 32767) -215 ~ 215 - 1 |
int |
4 字节 | (-2147483648 ~ 2147483647) 约 21 亿 -231 ~ 231 - 1 |
long |
8 字节 | -263~ 263 - 1 |
注意:
- 需特别关注数据类型的数值范围,防止因超出范围导致精度损失。
- 整型常量默认采用int类型,如需声明long型常量,可在数值后添加"l"或"L",推荐使用"L"以增强可读性。
2.2 浮点型
在Java中,小数类型统称为浮点类型。
浮点型常量有两种表示形式:
- 十进制形式,如:3.14 或 123.45
- 科学计数法形式,如:314E2(表示31400.0)或314E-2(表示3.14)
浮点类型主要分为两种:
- float(单精度)类型:可精确到7位有效数字,但在多数场景下其精度难以满足需求。
- double(双精度)类型:其数值精度是float类型的两倍,是大多数应用程序的首选。需要注意的是,Java中的浮点型常量默认采用double类型。
类型 | 占用存储空间 | 数值范围 |
---|---|---|
float |
4字节 | -3.403E38 ~ 3.403E38 |
double |
8字节 | -1.798E308 ~ 1.798E308 |
使用浮点型常量时需注意以下事项:
- 浮点型常量默认采用 double 类型存储
- 将浮点型常量赋值给 float 类型变量时,需在常量后添加后缀 “f” 或 “F”
- 不建议直接比较两个浮点数的大小,这种比较方式可能导致精度问题
扩展知识:
整数和浮点数在内存中的存储机制存在显著差异,建议对此感兴趣的同学可以进一步查阅相关资料深入了解。
2.3 布尔型
boolean(布尔型)包含两个取值:true(真)和false(假)。它主要用于逻辑判断,是程序流程控制中的核心数据类型。
扩展知识:
根据Java语言规范,boolean类型的具体存储空间并未明确规定。如需深入了解,建议查阅相关技术文档。
2.4 字符型
2.4.1 字符型
在Java中,字符型数据占用2个字节的内存空间。使用单引号括起来的单个字符被称为字符常量。
如:'A’表示一个字符常量,而"A"则表示一个仅包含单个字符的字符串,两者在Java中具有不同的数据类型和存储方式。
【示例】字符型使用
/**
* @Author: chenxiezhu
* @Date: 2025/5/13 19:37
* @Version: v1.0.0
* @Description: TODO
**/
public class CharDemo1 {
public static void main(String[] args) {
char ch1 = 'c'; // 正确:声明并赋值字符'c'
char ch2 = '好'; // 正确:声明并赋值字符'好'
char ch3 = '6'; // 正确:声明并赋值字符'6'
char ch4 = '66'; // 错误:单引号内只能包含单个字符
char ch5 = ''; // 错误:单引号内必须包含一个字符
char ch6 = "你"; // 错误:字符必须使用单引号,双引号用于字符串
}
}
IDEA 会自动检测并提示代码中的错误。
补充说明:char类型用于表示Unicode编码表中的字符,因此它能够完整地表示一个中文字符。
- char类型和int类型的联系和区别
char类型常量在内存中直接存储其对应的Unicode编码值,例如:字符’A’对应65,字符’1’对应49。在特定取值范围内,char类型与int类型可以相互转换并通用。
【示例】char类型和int类型
/**
* @Author: chenxiezhu
* @Date: 2025/5/13 19:51
* @Version: v1.0.0
* @Description: TODO
**/
public class CharDemo2 {
public static void main(String[] args) {
char ch1 = 'C'; // Unicode对应的数值为65
System.out.println(ch1 + 1); // 输出:68
char ch2 = 99; // Unicode对应的字符为'c'
System.out.println((char)(ch2 - 32)); // 输出:'C'
}
}
char类型与int类型的主要区别:
- 内存占用差异:nt类型在内存中占用4个字节,而char类型仅占用2个字节。
- 数值范围不同:int类型能够表示的数值范围远大于char类型,此外,int类型支持表示负数,而char类型通常用于表示字符或较小的非负整数。
2.4.2 字符集
计算机系统仅能识别0和1,所有信息都以二进制形式存储。对于数值型数据,我们可以直接将其转换为二进制并存入内存,那么字符型数据是如何存储的呢?
实际上,字符本身无法直接转换为二进制。我们在屏幕上看到的英文字母、汉字等字符,都是经过二进制转换后的结果。简单来说,将字符存储在计算机中的规则被称为"编码"。例如,字符’A’可以用十进制数65表示,然后将65转换为二进制存储在内存中。
相反,将计算机中存储的二进制数解析并显示出来的过程称为"解码"。例如,当我们从内存中读取数值65时,就表示读取的字符是’A’。
基于这种"编码"和"解码"机制,人类为不同语言创建了相应的编码表。
以下是几种常见的字符编码表:
- ASCII:美国信息交换标准代码,基于拉丁字母的计算机编码系统,主要用于显示现代英语和西欧语言。
- GBK:全称《汉字内码扩展规范》,是用于表示中文的编码标准。
- Unicode:又称万国码或统一码,旨在解决传统编码方案的局限性。它为每种语言的每个字符设定了统一且唯一的二进制编码,满足跨语言、跨平台的文本转换和处理需求。
Unicode编码占用2个字节,可表示65536个字符,一个中文字符在内存中占用2个字节。
2.4.3 转义字符
Java 语言支持使用转义字符来改变后续字符的特定含义。
转义符 | 含义 | Unicode值 |
---|---|---|
\n |
换行符 | \u000a |
\t |
制表符 | \u0009 |
\" |
双引号 | \u0022 |
\' |
单引号 | \u0027 |
\\ |
反斜杠 | \u005c |
3. Scanner键盘输入
Scanner类位于java.util包中,是Java 5引入的一个用于获取用户输入的类。它提供了读取不同类型数据的便捷方法,大大简化了控制台输入的处理过程。
3.1 导入Scanner包
通过在源文件开头导入java.util.Scanner包,我们便可以在代码中直接使用Scanner类。
import java.util.Scanner;
3.2 初始化Scanner对象
Scanner input = new Scanner(System.in);
3.3 获取输入的数据
从控制台读取用户输入的一行文本,并将其转换为指定类型的数据。
String str = input.next(); // 获取控制台输入的字符串
【示例】
import java.util.Scanner;
/**
* @Author: chenxiezhu
* @Date: 2025/5/14 22:17
* @Version: v1.0.0
* @Description: TODO
**/
public class ScannerDemo {
public static void main(String[] args) {
// 创建Scanner对象,从标准输入(键盘)获取数据
Scanner input = new Scanner(System.in);
// 使用Scanner对象的方法读取输入
System.out.println("请输入一个字符串:");
String number = input.next();
System.out.println("您输入的字符串是:" + number