【Java基础|Day02】数据的存储与运算
文章目录
今日学习目标
- 掌握注释的作用与写法。
- 理解关键字的概念与特点。
- 掌握字面量、变量与数据类型的关系。
- 掌握标识符的命名规则与规范。
- 实现简单的控制台输入与输出。
- 认识Java中的常用运算符及其特性。
第一部分:注释—程序的“笔记”
作用:在代码中添加说明性文字,用于对程序代码的解释说明。注释不会被编译和执行,是写给程序员看的“笔记”。
两种常用格式:
- 单行注释:以 // 开始,行内其后内容均为注释。快捷键:Ctrl + /;
- 多行注释:介于 /* 和 */ 之间的所有内容均为注释。快捷键:Ctrl + Shift + /。
最佳实践:对复杂逻辑、重要变量、核心方法进行简洁清晰的注释,是写出可维护代码的好习惯。
第二部分:关键字—编译器预留的特殊单词
概念:预先定义好的、具有特定含义的英文单词。
特点:
- 全部由小写字母组成。
- 在编译软件中通常特有殊颜色高亮显示。
- 不能用作标识符。
常见示例:定义数据类型的int, double, boolean等;流程控制的 if, for等;访问控制的public, private等等。
第三部分:程序的基础—数据如何表示与存储
理解“数据类型 - 变量 - 字面量”这三者的关系,是编程入门的钥匙。一个典型的赋值语句将它们串联起来:数据类型 变量名 = 数据值;
- 字面量:数据的“书写格式”
字面量是直接在代码中写出的、固定不变的数据值,即数据的书写格式。
| 类型 | 示例 |
|---|---|
| 整数 | 123 |
| 小数 | 1.23 |
| 字符 | ‘a’ |
| 字符串 | “abc” |
| 布尔值 | true、false |
| 空值 | null |
public class DAY02 {
public static void main(String[] args) {
// 打印各种类型的字面量
System.out.println(123); // 整数
System.out.println(1.23); // 小数
System.out.println('a'); // 字符
System.out.println("abc"); // 字符串
System.out.println(true); // 布尔值
// System.out.println(null); // 这行会编译错误!
}
}
为什么 System.out.println(null); 会报错?
答:因为 println 方法有多个重载版本,null 可以匹配多个版本(如 println(String) 和 println(char[])),编译器无法确定调用哪一个,因此会报错。
-
变量:数据的“容器”
变量是内存中存储单个数据的容器。可以把它理解成一个带标签的盒子,变量名就是盒子的标签,用于找到这个容器。
注意:变量是容器,而非数据本身。操作变量(如 a = a + 1;)是在操作容器里的数据。 -
基本数据类型:容器的“规格”
Java为最常见的数值定义了8种基本数据类型,它们限定了变量存储的数值类型和范围。
| 类别 | 类型 | 说明 |
|---|---|---|
| 整型 | byte, short, int, long | 存储整数,范围依次增大 |
| 浮点型 | float, double | 存储小数,double精度更高 |
| 字符型 | char | 存储单个字符(如 ‘A’) |
| 布尔型 | boolean | 仅存储 true 或 false |
对于多个字符的文本,我们使用 String 类表示,后续章节会详细学习
- 总结与理解:数据类型 变量名 = 数据值;
- 变量:存储单个数据的“容器”。
- 变量名:容器的“标签”,用于找到这个“容器”。
- 数据类型:规定了这个“容器”能装什么类型和范围的数据。
- 数据值:容器中实际存放的数据。
第四部分:标识符—为代码元素起名
概念:标识符就是给类,方法,变量起名字。
命名规则(必须遵守,否则编译错误):
- 组成:只能包含字母、数字、下划线(_)、美元符($);
- 开头:不能以数字开头。
- 关键字:不能是关键字(如 int, class)。
- 大小写:严格区分大小写(age 和 Age 是两个不同的变量)。
命名规范(约定俗成,提高可读性):
- 见名知意:name 比 n 好,student 比 a 好。
- 小驼峰法(变量/方法名):第一个单词全小写,后续单词首字母大写。如:userName。
- 大驼峰法(类名):每个单词首字母都大写。如:StudentManager。
第五部分:输入与输出—与程序互动
- 输出:让程序“说话”
- System.out.println(): 将内容打印到控制台,并换行。
- System.out.print() :将内容打印到控制台,不换行。
//输出:
//123123
//123
System.out.print(123);
System.out.println(123);
System.out.print(123);
- 输入:让程序“聆听”
Java使用 Scanner 类来接收键盘输入。
// 1. 导包(告诉程序我们要用Scanner工具)
import java.util.Scanner;
public class DAY02 {
public static void main(String[] args) {
// 2. 创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 采用输出来进行输入提示
System.out.println("请输入一个整数:");
// 3. 使用Scanner对象接收数据
int num = scanner.nextInt(); // 读取一个整数
//输出读取数据
System.out.println("您输入的是:" + num);
// 释放资源
scanner.close();
}
}
注意:Scanner 直接支持基本数据类型:nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、nextBoolean()以及字符串的两种读取方式next() 读取单词,读取到空格或换行符停止,nextLine() 读取整行,读取整行包括空格,直到换行符。但是不提供 nextChar() 。
第六部分:运算符—数据的“加工”
| 类别 | 符号 |
|---|---|
| 算术运算符 | +, -, *, /, % |
| 赋值运算符 | =, +=, -=,*=,/=,%= |
| 比较运算符 | ==, !=, >,>=,<, <= |
| 逻辑运算符 | !, &, |, &&, || |
| 自增自减运算符 | ++,– |
| 三元运算符 | 关系表达式?表达式1:表达式2 |
- 算术运算符:
- 隐式类型转换:运算时,小范围类型自动提升为大范围类型
- 自动类型提升:byte、short、char 参与运算时自动提升为 int。
- 字符串连接:+ 与字符串相遇时,作为连接符,并将非字符串操作数转为字符串。
- 运算顺序:从左到右,优先级遵循数学规则,可用 () 改变顺序。
- %注意与C++不同,%两端不是只能用于整数类型,可以用于浮点数类型
public class DAY02 {
public static void main(String[] args) {
//1.隐式类型转换:运算时,小范围类型自动提升为大范围类型(如 int → double)
int a = 10;
double b = 3.14;
System.out.println(a + b);//13.14
//2.自动类型提升:byte、short、char 参与运算时自动提升为 int;
// 若表达式中有更大范围类型(如 long、double),则继续向更高类型提升。
byte c = 10;byte d = 1;
System.out.println(c + d);//11
char e = 'a'; char f = 'b';
System.out.println(e + f);//195
System.out.println(e + c);//107
System.out.println(e + b);//100.14
//3.字符串连接:+ 与字符串相遇时,作为连接符,并将非字符串操作数转为字符串。
String g = "a";String h = "b";
System.out.println(g + h);//"ab"
//4.运算顺序:从左到右,优先级遵循数学规则,可用 () 改变顺序。
System.out.println("a+b=" + a + b);//a+b=103.14 从左到右先被认定为是字符串连接"a+b=10"+b,同理还是字符串连接,最后结果是:a+b=103.14
System.out.println("a+b=" +(a + b));//a+b=13.14 先计算小括号数值加法,结果是13.14,再把结果和字符串连接,结果是:a+b=13.14
}
}
- 赋值运算符:
| 赋值运算符 | 说明 |
|---|---|
| = | num=2 把 = 右边的值赋值给左边变量 |
| += | num += 2 等效于 num = num + 2 |
| -= | num -= 2 等效于 num = num - 2 |
| *= | num *= 2 等效于 num = num * 2 |
| /= | num /= 2 等效于 num = num / 2 |
| %= | num %= 2 等效于 num = num % 2 |
- 比较运算符:
比较运算符也称关系运算符,返回一个布尔值作为结果。
| 比较运算符 | 说明 |
|---|---|
| == | a == b 判断 a是否等于b 注意!==和=是不同的运算符 |
| != | a != b 判断 a是否不等于 b |
| > | a > b 判断 a是否大于 b |
| >= | a >= b 判断 a是否大于等于 b |
| < | a < b 判断 a是否小于 b |
| <= | a <= b 判断 a是否小于等于 b |
- 逻辑运算符:
逻辑运算符用于连接多个关系表达式,并返回一个布尔值作为结果。
| 逻辑运算符 | 说明 |
|---|---|
| ! | 逻辑非:取反操作,true变false,false变true |
| & | 逻辑与:只有左右侧表达式都为真才为真 |
| | | 逻辑或:左右侧只有一侧表达式为真就是真 |
public class DAY02 {
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a>3&b++<3);//false a>3为false但是b++仍会执行,b的值会加1
System.out.println("a:"+a+" b:"+b);//"a:1 b:3"
System.out.println(a>0|b++<3);//true a>0为true但是b++仍会执行,b的值会加1
System.out.println("a:"+a+" b:"+b);//"a:1 b:4"
}
}
我们可以注意到对于 & 和 | 两侧的表达式均执行判断然后得到最终结果,所以引入了短路逻辑运算符,若左侧能确定结果,右侧不执行:
| 短路逻辑运算符 | 说明 |
|---|---|
| && | 只有左右侧表达式都为真才为真 所以当左侧表达式为false,右侧表达就不会执行,最后结果为false |
| || | 左右侧只有一侧表达式为真就是真 所以当左侧表达式为true,右侧表达就不会执行,最后结果为true |
public class DAY02 {
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a>3&&b++<3);//false a>3为false,b++不会执行,b的值不会加1
System.out.println("a:"+a+" b:"+b);//"a:1 b:2"
System.out.println(a>0||b++<3);//true a>0为true,b++不会执行,b的值不会加1
System.out.println("a:"+a+" b:"+b);//"a:1 b:2"
}
}
- 自增自减运算符:
| 自增自减运算符 | 说明 | 示例(a=5) |
|---|---|---|
| a++ | 后置自增:表达式结果是a的当前值,然后再将a加1 | int b = a++; // b=5, a=6 |
| ++a | 前置自增:先将a加1,然后表达式结果是a的新值 | int b = ++a; // b=6, a=6 |
| a– | 后置自减:表达式结果是a的当前值,然后再将a减1 | int b = a–; // b=5, a=4 |
| –a | 前置自减:先将a减1,然后表达式结果是a的新值 | int b = --a; // b=4, a=4 |
- 三元运算符:
| 三元运算符 | 说明 |
|---|---|
| 关系表达式?表达式1:表达式2 | 如果关系表达式为true,则执行并返回表达式1的结果; 如果关系表达式为false,则执行并返回表达式2的结果; 重要特性:只有被选中的表达式才会执行! |
public class DAY02 {
public static void main(String[] args) {
int a=1;
int b=2;
System.out.println(a<b?a++:b++);//1
System.out.println("a:"+a+" b:"+b);//a:2 b:2
}
}
以上为个人学习总结,旨在梳理个人理解。如有疏漏或不当之处,欢迎指正与交流。
更多推荐




所有评论(0)