Java 基础
这篇文章是按照 B 站狂神说的 Java 零基础课程的内容整理的 (实际上就是学习笔记的性质).
希望我能够坚持下去o(≧口≦)o
为了未来能够有一个不需要和别人打太多交道的岗位, 瓦达西要狠狠拼了😤😤.
之前在学校的课里有上过一些 C 语 (学校的课……懂的都懂🙏) 所以入 Java 这个坑应该不会特别困难 (大概……)
但不管怎么说, 为了将来总还是要硬着头皮去学的 (超绝脆弱 INFP 一和人交谈就能直接化成一滩水蒸发说是, 而且以后都是 AI 的时代了, 现在却连其皮毛都并不知晓也很是令人焦虑.) 现在暂且尽量每天的睡前几个小时来学习课程, 功崇惟志, 业广为勤, 愿我能坚持到最后吧.
原此行, 终抵群星.
(这文章会有人看嘛? 但是初学者的文章大抵也没什么营养的吧……)
这一段话是笔记写完了才过来写的,而刚刚惊喜地发现,存放项目的文件夹的创建日期是 3 月 7 日ヾ(≧▽≦*)o
数据类型与转换
Java 是一种强类型语言, 变量需要定义后才能使用.
数据类型
基本数据类型

整数: byte, short, int, long (long 类型须在数字后加L) .
分别占用 1B, 2B, 4B, 8B.
浮点数: float, double (float 类型须在数字后加 F) .
分别占用 4B, 8B.
需注意: float 有舍入误差,需避免使用 float 进行比较.
字符: char, String (String 不是关键字, 是一种引用类型) .
char 使用单引号, 而 String 使用双引号.
char letter1 = 'A';
String letter2 = "B";
布尔值: boolean.
表示 "是" 与 "非".
boolean flag = ture;
if(flag == ture){}
if(flag ==) {}//这种写法更常用.
进制
| 进制 | 前缀 |
|---|---|
| 二进制 | 0b |
| 八进制 | 0 |
| 十进制 | - |
| 十六进制 | 0x |
char character = 'A';
System.out.println((int)character);//加上int可以打印出字符的Unicode编码.(强制转化)
类型转换
由于 Java 是强类型语言, 需要进行类型转化 (将不同类型转为相同类型) .

强制转换
由高到低, 手动转换.
格式: (类型)变量名
int a = 128;
byte b = (byte) a;
运算中只要有一个变量被转换了, 其他的也会一同被转换.
自动转换
由低到高, 自动转换.
int a = 128;
double b = a;
注意
-
布尔值不可以参与转换.
-
不可以转换成不相干的类型.
-
转换中可能会出现内存溢出和精度问题.
System.out.println((int) 12.3); //打印12, 丢失精度.
System.out.println((byte) 128);//打印-128, 内存溢出.
操作大数目时, 需要注意内存溢出.
int num1 = 10_0000_0000;
int num2 = 20;
System.out.println(num1 * num2); //由于内存溢出, 输出-1474836480.
long sum = num1 * (long) num2;//进行一处类型转换.
System.out.println(sum);//顺利打印出20000000000.
变量和常量
变量
Java 的每个变量必须声明其类型后才能使用.
变量是程序中最基本的单元, 包括变量名, 变量类型及作用域.
使用 类型 变量名 [=值] 进行定义,可以用逗号隔开以声明多个同类型的变量 (不建议) .
int a = 1, b = 2, c = 3;//为了程序可读性, 不要一行定义多个变量!
变量作用域
局部变量
只能在一个方法里面使用, 必须声明和初始化
方法: 如有public static void main(String[] args), 则有 main方法.
实例变量
从属于对象.
public class Demo {
int num = 23;
String char1 = "abc";
public static void main(String[] args) {
Demo Demo = new Demo();//new就是在内存中开辟了一块空间,可以对里面的数据进行操作.
System.out.println(Demo.num);//打印23.
System.out.println(Demo.char1);//打印abc.
}
}
如不初始化, 则会输出默认值 (0, 0.0, ect.)
布尔值的默认值为 false.
除了基本类型, 其他类型默认值均为 null.
类变量
从属于类, 使用 static 进行定义.
static 是一种修饰符, 修饰符不区分前后顺序.
public class Demo {
static int num = 23;
public static void main(String[] args) {
System.out.println(Demo.num);//不需要new便能成功执行.
}
}
常量
初始化后不能改变值, 可视作一种特殊的变量, 使用final进行定义.
final 也是一种修饰符.
常量名称一般使用大写字母.
命名规则
所有变量, 方法, 类名, 都需要遵循见名知意原则.
| 类型 | 大小写 | 驼峰原则 |
|---|---|---|
| 类成员变量 | 首字母小写 | ✓ |
| 局部变量 | 首字母小写 | ✓ |
| 常量 | 全部大写, 使用 _ 分割 |
- |
| 类名 | 首字母大写 | ✓ |
| 方法名 | 首字母小写 | ✓ |
驼峰原则: 除了第一个单词, 每个单词首字母大写.
运算符
| 名称类型 | 符号 |
|---|---|
| 算数运算符 | +, -, *, /, %, ++, -- |
| 赋值运算符 | = |
| 关系运算符 | >, <, >=, <=, ==, !=, instanceof |
| 逻辑运算符 | &&, ` |
| 位运算符 | &, ` |
| 条件运算符 | ?, : |
| 扩展赋值运算符 | +=, -=, *=, /= |
一元运算符只需要一个操作数, 二元, 三元也同理.
运算优先级: 括号最优先, 其次是一元运算符 (多使用括号养成良好习惯).
算数运算符
加, 减, 乘, 除, 模
+, -, *, /, % (模运算, 取余).
-
当不同类型一同运算时, 结果的类型取决于最高的类型. 如:
-
当结果会出现小数, 需要对结果进行强制转换, 否则只会出现整数.
long a = 100L;
int b = 10;
short c = 1;
System.out.println( a + b + c);//里面是long类型
System.out.println(b + c);//里面是int类型
System.out.println(c / b);//打印0
System.out.println((double) c / b);//打印0.1
如果+的前面有 String 类型, + 则变成字符串连接运算符,负责把多个字符串连接起来.
System.out.println(10 + 20);//打印30
System.out.println("Hello" + 10 + 20);//打印Hello1020
System.out.println(10 + 20 + "Hello" + 25);//打印30Hello25, 前面的会被运算
需要注意, 在字符串连接运算符前面的式子会先被计算.
自增自减
++ (自增), -- (自减). 两个都是一元运算符.
n++, n-- (先数字, 后符号): 先执行, 后自增/减.
++n, --n (先符号, 后数字): 先自增/减, 后执行.
int a = 1, b = 1;
int result1 = a++;//a=1---先为result1赋值, 然后才自增
int result3 = a;//a=2
int result2 = ++b;//b=2---先给自己自增, 再给result2赋值
int result4 = b;//b=2
比较运算
>, <, >=, <=, ==, != (不等于)
输出的结果为boolean值
逻辑运算符
a && b 逻辑与: 全真为真, 一假为假.
a || b 逻辑或: 一真为真,全假为假.
!(c) 逻辑非: 取反. (它是一元运算符).
短路运算
在逻辑与和逻辑非中, 如果第一个值就能确定整个结果, 那么后面的值不会再被计算.
int a = 5;
boolean result = (a < 4) && (a++ < 4);//a=5, result=false
如上: 在第 2 行, 由于 a < 4 的结果必然为 false, 程序便没有往后继续执行 a++, a 仍然为 5.
位运算
按位与 (&): 同真为真, 一假为假.
按位或 (|): 一真为真, 同假为假.
按位非 (~): 取反.
按位异或 (^): 不同则真, 相同则假.
左移(<<): 二进制位向左移动,右侧补 0, 相当于乘 2 的 n 次方.
右移(>>): 二进制位向右移动, 左侧补符号位 (带着符号一起移动), 相当于除 2 的 n 次方.
System.out.println(1 << 1);//00_000_001 ---> 00_000_010 = 2D
System.out.println(1 << 3);//00_000_001 ---> 00_001_000 = 8D
System.out.println(8 >> 2);//00_001_000 ---> 00_000_010 = 2D
由于是直接操作二进制数, 速度会高于前面的算术运算符, 可以提升计算效率.
扩展赋值运算符
+=, -=, *=, /=
例如: a += b 使 a=a+b, 其他同理.
条件运算符
三元运算符中的一株独苗.
?:, 用法 x ? y = z, 即如果 x==ture, 则 y, 否则 z. 类似 if 语句.
int score = 60;
String type = score < 60 ? "不合格" : "合格";
包
类似于文件夹, 用于区别类名的命名空间 (使能够重名).
定义格式: package pkg1[. pkg2[. pag3...]];
一般使用公司域名倒置作为包名.
包名不要重复.
引用格式: import pkg1[. pkg2...] (classname), 需要写在 package 的下面.
如:

可以使用通配符 * ,导入包内所有的类.
(不要忘了命名规范: 类名大写 TAT)
JavaDoc
用于生成自己的 API 文档. (文档注释)
@auther: 作者名
@version: 版本号
@since: 需使用的最低 JDK 版本
@param: 参数名
@return: 返回值
@throws: 异常抛出情况
/** 回车, 多行注释.
可以写在类里, 给类注释; 也可以写在方法里, 给方法注释.![1773759354252]

po一下我推世界一的笑颜 (bushi)
打出 /** 多行注释然后回车时,会根据你写的内容自动帮你补全.
使用命令提示符生成 JavaDoc 文档
把文件在资源管理器打开, 用 cmd 运行javadoc -encoding UTF-8 -charset UTF-8 类名.java, 会在文件夹内生成 index.html 文件. *(中间的参数是使能够正常输出中文)


index.html 是生成的 Java 文档.

使用 IDEA 生成 JavaDoc 文档
- 找到工具菜单,点击"生成 JavaDoc"

- 在对话窗选择生成的文档范围 (作用域), 输出目录, 区域设置 (中文为
zh_CN), 参数(命令行实参:-encoding UTF-8 -charset UTF-8).


浙公网安备 33010602011771号