这周我开始了JAVA的学习。说实话,刚开始的时候我心里还挺没底的,毕竟 Java 这玩意儿听起来就挺高大上,什么虚拟机、垃圾回收、面向对象,一堆名词砸过来,感觉像是要学一门"天书"。不过因为之前学过 C 语言,所以上手的时候其实没那么慌——像变量、数据类型、运算符这些概念,在 C 里都见过,只是换了个写法而已。而且说实话,C 语言当年也没少折磨我,什么数组、内存管理,那叫一个头大,现在回头看,那些"痛苦"反而成了学 Java 的底气。不过 Java 毕竟是面向对象的语言,很多细节和 C 还是不太一样,比如类型转换的规则、字符串的拼接方式,还有底层那些原码反码补码的运算,都得重新捋一遍。有时候写着写着也会卡壳,查半天资料才发现原来是个小细节没注意到,那种感觉真是“酸爽”。下面这份笔记,就是我最近整理出来的 Java 基础核心知识,从字面量、变量到原码反码补码,再到运算符和 Scanner 录入,希望能帮到和我一样正在入门路上的小伙伴。大家一起加油,慢慢来,总会啃下来的!
一、基础语法:字面量与变量
这一节算是 Java 里最基础的东西了,说白了就是先搞清楚“数据长什么样、怎么存起来”。
1. 字面量(Literals)
字面量这个词听起来挺唬人,其实说白了就是程序里直接写出来的那些数据值,比如你写个 18,写个 "中国",这些都是字面量。不同类型的字面量,写法上还有点讲究,咱们看下面这张表就清楚了:
| 字面量类型 | 说明 | 举例 |
|---|---|---|
| 整数类型 | 直接写 | 18, -88 |
| 小数类型 | 直接写,加上小数点 | 1.93, -5.21 |
| 字符串类型 | 用双引号引起来 | "中国" |
| 字符类型 | 用单引号引起来,内容只能有一个 | '男', 'A', '0' |
| 布尔类型 | 表示真假 | true, false |
| 空类型 | 一个特殊的值,空值 | null |
这里有个小坑得提醒一下:字符串和字符看着像,其实完全不是一回事。字符串用双引号,里面可以装一长串;字符用单引号,里面只能放一个,多一个都不行,写错了编译器直接给你报错,别问我怎么知道的。
2. 变量(Variables)
变量这东西,你可以把它想象成一个带名字的小盒子,里面可以放数据。为啥要有变量?因为很多时候数据是会变的,你总不能每次都重新写一遍吧,那多麻烦。
- 定义格式:数据类型 变量名 = 数据值;
- 使用场景:当某个数据经常发生改变时,将其定义为变量。
- 注意事项:
- 变量中只能存一个值;变量名不能重复。
- 变量使用前一定要赋值(初始化)。
- 一条语句可以定义多个变量(如 int a = 1, b = 2;)。
注意:变量名别乱起,最好起个能看懂的名字,不然过两天你自己回头看代码,都得猜半天这变量是干嘛的。
二、数据类型与标识符
1. 计算机存储规则
- 在计算机中,任意数据都是以二进制的形式来存储的。
- 字节(Byte)是计算机最小的存储单元,1个字节 = 8个bit位(bits)。
- 在 Java 中,int 类型占 4个字节 / 32个bit位。
2. 基本数据类型(四类八种)
- 整数:byte(1字节),short(2字节),int(4字节),long(8字节)
- 小数:float(4字节),double(8字节)
- 字符:char(2字节)
- 布尔:boolean(1字节)
- 取值范围大小关系:double > float > long > int > short > byte
- 后缀说明:定义 long 类型需加 L 后缀;定义 float 类型需加 F 后缀。
3. 标识符
标识符就是代码中所有我们自己起名的名字(如类名、变量名)。
- 硬性要求:由数字、字母、下划线 _、美元符 $ 组成;不能以数字开头;不能是 Java 关键字。
三、计算机底层数据表示:原码、反码与补码
在 Java(及现代计算机)中,整数的运算在底层都是以补码的形式进行的。理解这三者,是理解计算机处理负数运算的关键。
1. 原码
最直观的二进制形式。最高位是符号位(0正,1负)。弊端:负数计算时结果会出错,运算方向与正确方向相反。
2. 反码
为了解决原码不能计算负数的问题。正数反码不变,负数反码在原码基础上,符号位不变,数值位取反(0变1,1变0)。弊端:负数运算时,如果结果跨越了 0,结果会与实际不符。
3. 补码
彻底解决跨 0 运算出错的问题。计算机底层存储和运算统一使用补码。正数补码与原码相同;负数补码 = 反码 + 1。
四、运算符与类型转换
1. 类型转换
- 隐式转换(小 -> 大):不同类型数据计算时,Java 自动转换。如有 byte/short 先提升为 int,再将取值范围小的提升为大的。
- 强制转换(大 -> 小):需要显式写代码,弊端:有可能导致精度丢失。
2. 字符与字符串运算
- ASCII 码:字符参与算术运算时,会先根据 ASCII 码表转化为对应的整数(如 'A' 是 65,'a' 是 97)。
- 字符串运算:字符串只有 + 操作。任意数据 + 字符串都是拼接操作,并产生一个新的字符串。例如:10 + 8 + "岁" + 1 + 2 的结果是 "18岁12"。
3. 常见运算符
- 算术运算符:+, -, *, /, %(取余)。
- 赋值运算符:=, +=, -= 等。
- 三元运算符:关系表达式 ? 表达式1 : 表达式2;。表达式成立执行1,不成立执行2。
- 优先级:括号 () 最高;其次是 !、正负号;再次是 * / %;然后是加减;最后是关系、逻辑运算符等。
五、键盘录入(Scanner)
使用 Scanner 类可以接收键盘输入的数据:
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 1. 创建对象 // 2. 接收数据 // int num = sc.nextInt(); // 接收整数 // double d = sc.nextDouble(); // 接收小数 String str = sc.next(); // 接收字符串 } }*下周学习目标:逻辑与结构
从下周开始,我将告别单一的语法零件,开始学习如何让程序"思考"和"动"起来。
目标一:流程控制语句
- 掌握 if、switch 判断语句和 for、while 循环语句。
- 学会使用 break 和 continue 控制流程。
目标二:数组
- 掌握数组的初始化、遍历和常见操作。
- 理解数组的内存原理,学会处理越界、空指针等异常。
目标三:方法
- 理解方法的作用,掌握方法的定义与调用。
- 掌握带参数、带返回值的方法。
学习注意:下周内容逻辑性强,多画流程图,多敲代码。遇到报错不要慌,学会看控制台的报错信息。祝大家学习顺利!