国庆节10月1日
--


嘿,欢迎来到Java基础小课堂!别被“基础”俩字骗了——它看似简单,实则藏着好多容易踩坑的细节:比如文件名和类名不一致就编译不过,换行符在Windows和Mac上还不一样,甚至一个分号忘了写,IDE都会默默盯着你叹气…咱们不讲大道理,就聊最真实、最常遇到的那些事儿,边踩坑边记牢。准备好了?一起从第一行`public class`开始吧~
Java 语言是面向对象的(oop)、有跨平台性(一次编译到处运行)
Java 技术体系平台
Java 语言是解释型的
解释性语言:javascript,PHP,java
编译性语言
Java 核心机制-Java 虚拟机 [JVM java virtual machine]
基本介绍:JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK 中。对于不同的平台,有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行“。
什么是JDK,JRE
javac :命令对该 java 文件进行编译, 生成 .class 文件。
java : 命令对生成的 class 文件进行运行
Java常用转义字符
| 转义序列 | 含义 | 描述 |
|---|---|---|
| ’ | 单引号 | 用于在字符常量’ ‘或字符串中包含单引号。 |
| ” | 双引号 | 用于在字符串” “中包含双引号。 |
| \ | 反斜杠 | 表示一个实际的反斜杠字符\。 |
| \n | 换行符 | 将光标移动到下一行的开头(Line Feed)。 |
| \r | 回车符 | 将光标移动到当前行的开头(Carriage Return)。 (注:Windows 换行通常是\r\n,Unix/Linux/macOS 通常是\n) |
| \t | 制表符 | 插入一个水平制表符(Tab),通常相当于 4 或 8 个空格。 |
| \b | 退格符 | 将光标向后移动一格(Backspace)。 |
| \f | 换页符 | 用于打印机控制,表示换页(Form Feed)。 |
| \0 | 空字符 | ASCII 码为 0 的字符(Null),常用于 C 风格字符串结尾,Java 中较少直接使用。 |
初学java易犯错误
注释
变量的注意事项:
基本数据类型:
| 类型 | 关键字 | 位数 (bit) | 字节 (byte) | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|---|---|
| 整数型 | byte | 8 | 1 | -128 ~ 127 | 0 | 最小整数类型,常用于节省内存数组 |
| short | 16 | 2 | -32,768 ~ 32,767 | 0 | 较少使用 | |
| int | 32 | 4 | -2³¹ ~ 2³¹-1 | 0 | 最常用的整数类型 | |
| long | 64 | 8 | -2⁶³ ~ 2⁶³-1 | 0L | 用于大整数,字面量需加L | |
| 浮点型 | float | 32 | 4 | 约 ±3.4E38 (7位有效数字) | 0.0f | 单精度,字面量需加F |
| double | 64 | 8 | 约 ±1.8E308 (15-17位有效数字) | 0.0d | 最常用的浮点类型 | |
| 字符型 | char | 16 | 2 | \u0000~\uffff(0 ~ 65535) | ‘\u0000’ | 存储单个 Unicode 字符 |
| 布尔型 | boolean | - | - | true或false | false | 仅用于逻辑判断,大小由 JVM 决定 |
java数据类型分为两大类基本数据类型,引用类型
网站:
自动类型转换
规则:byte → short → char → int → long → float → double
1 byte → short → int → long → float → double2 ↘ char ↗细节:
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。
1 目标类型 变量名 = (目标类型) 原值;细节:当进行数据的大小从大一一>小,就需要使用到强制转换
强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
char类型可以保存int的常量值,但不能保存int的变量值,需要强转
byte和short,char类型在进行运算时,当做int类型处理。
基本类型转String类型
语法:将基本类型的值+即可
String类型转基本数据类型【体验】
语法:通过基本类型的包装类调用parseXX方法即可
算术运算符、赋值运算符、关系运算符 [比较运算符]、逻辑运算符、位运算符 [需要二进制基础]、三元运算符
| 运算符 | 运算 | 范围 | 结果 |
|---|---|---|---|
| + | 正号 | +7 | 7 |
| - | 负号 | b=11; -b | -11 |
| + | 加 | 9+9 | 18 |
| - | 减 | 10-8 | 2 |
| * | 乘 | 7*8 | 56 |
| / | 除 | 9/9 | 1 |
| % | 取模(取余) | 11%9 | 2 |
| ++ | 自增(前):先运算后取值 自增(后):先取值后运算 | a=2;b=++a; a=2;b=a++; | a=3;b=3 a=3;b=2 |
| — | 自减(前):先运算后取值 自减(后):先取值后运算 | a=2;b=—a; a=2;b=a—; | a=1;b=1 a=1;b=2 |
| + | 字符串相加 | “hsp”+“edu” | “hsp edu” |
细节说明:
对于除号 ”/“,它的整数除和小数除是有区别的
当对一个数取模时,可以等价表示为:a % b = a - (a / b) * b
示例:11 % 9 = 11 - (11/9)9 = 11 - 19 = 2
当自增当做一个独立语句使用时,不管是 ++i; 还是 i++; 都是一样的,等价于:→ i = i + 1;
当自增当做一个表达式使用时,
j = ++i 等价于:→ i = i + 1; j = i;
j = i++ 等价于:→ j = i; i = i + 1;
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| == | 相等于 | 8 == 7 | false |
| != | 不等于 | 8 != 7 | true |
| < | 小于 | 8 < 7 | false |
| > | 大于 | 8 > 7 | true |
| <= | 小于等于 | 8 <= 7 | false |
| >= | 大于等于 | 8 >= 7 | true |
| instanceof | 检查是否是类的对象 | “hsp” instanceof String | true |
细节说明:
| a | b | a & b | a && b | a | b | a | b | !a | a ^ b |
|---|---|---|---|---|---|---|---|
| true | true | true | true | true | true | false | false |
| true | false | false | false | true | true | false | true |
| false | true | false | false | true | true | true | true |
| false | false | false | false | false | false | true | false |
| 运算符 | 名称 | 类型 | 说明 |
|---|---|---|---|
| & | 按位与 / 逻辑与 | 位运算/逻辑 | 两边都为 true 才返回 true;无短路 |
| && | 短路与 | 逻辑运算 | 左边为 false 时右边不执行,直接返回 false |
| | | 按位或 / 逻辑或 | 位运算/逻辑 | 任一边为 true 就返回 true;无短路 |
| | | 短路或 | 逻辑运算 | 左边为 true 时右边不执行,直接返回 true |
| ! | 非 | 逻辑运算 | 取反 |
| ^ | 异或 | 位运算/逻辑 | 两边不同为 true,相同为 false |
💡 注意:
虽然 &, |, ^ 可用于布尔值作逻辑运算,但它们也常用于整数的位运算。
而 &&, || 仅用于布尔逻辑,且具有“短路”特性。
📌 记忆口诀:
“与要全真才为真,或有一真即为真;
非是取反很简单,异或不同才是真;
短路运算效率高,左边决定右不跑!”
| 运算符 | 名称 |
|---|---|
| = | 基本赋值 |
| += | 加后赋值 |
| -= | 减后赋值 |
| *= | 乘后赋值 |
| /= | 除后赋值 |
| %= | 取模后赋值 |
| &= | 按位与后赋值 |
| |= | 按位或后赋值 |
| ^= | 按位异或后赋值 |
| <<= | 左移后赋值 |
| >>= | 右移后赋值 |
| >>>= | 无符号右移后赋值 |
条件表达式 ? 表达式 1: 表达式 2;
运算规则:
| 优先级 | 运算符 | 类型 | 结合性 | 示例 |
|---|---|---|---|---|
| 1 | () [] . | 括号、数组索引、成员访问 | 左 → 右 | obj.method(),arr[0] |
| 2 | expr++ expr— | 后缀自增/自减 | 左 → 右 | i++,count— |
| 3 | ++expr —expr + - ~ ! (type) | 前缀操作符、正负号、按位非、逻辑非、强制类型转换 | 右 → 左 | ++i,-x,!flag,(int)y |
| 4 | * / % | 乘、除、取模 | 左 → 右 | a * b,x % 3 |
| 5 | + - | 加、减 | 左 → 右 | a + b,x - 1 |
| 6 | << >> >>> | 移位运算 | 左 → 右 | x << 2,y >>> 1 |
| 7 | < > <= >= instanceof | 关系运算 | 左 → 右 | a > b,obj instanceof Class |
| 8 | == != | 相等性判断 | 左 → 右 | x == 5,a != b |
| 9 | & | 按位与 | 左 → 右 | a & b |
| 10 | ^ | 按位异或 | 左 → 右 | a ^ b |
| 11 | | | 按位或 | 左 → 右 | a | b |
| 12 | && | 逻辑与 | 左 → 右 | a && b |
| 13 | | | 逻辑或 | 左 → 右 | a | b |
| 14 | ? : | 三元条件运算符 | 右 → 左 | cond ? a : b |
| 15 | = += -= *= /= %= &= ^= |= <<= >>= >>>= | 赋值运算 | 右 → 左 | x = 5,sum += i |
标识符概念:
标识符的命名规则(必须遵守)
软性规范(行业最佳实践)
命名风格(驼峰命名法)
特殊场景规范
二进制:0,1,满2进1.以0b 或0B 开头
十进制:0-9,满10进1
八进制:0-7,满8进1.以数字0开头表示
十六进制:0-9 及 A(10)-F(15),满16 进1.以0x或0X开头表示。此处的 A-F 不区分大小写
进制的转换
二进制转十进制:
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
案例:0b1011 → 十进制
10b1011 =2= 1*1 + 1*2 + 0*4 + 1*83= 1 + 2 + 0 + 8 = 11八进制转十进制:
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
案例:0234 → 十进制
10b1011 =2= 1*1 + 1*2 + 0*4 + 1*83= 1 + 2 + 0 + 8 = 11十六进制转十进制:
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
案例:0x1A3 → 十进制
10x1A3 =2= 3×16⁰ + A×16¹ + 1×16²3= 3×1 + 10×16 + 1×256 = 3 + 160 + 256 = 419如果你喜欢,那么欢迎来到我的世界!
了解更多暂未播放



"所有的相遇都是久别重逢。"—— 未知


