Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • Java
  • Java基础
    • 关键字
    • 语法
    • 判断
    • 选择
    • 循环
    • 数组
    • 方法
  • Java原理
  • 面向对象
  • Java
HiuZing
2026-08-11
目录

Java基础

# 关键字

关键字 用途
class 定义类
extends 继承 Activity/Service
implements 实现接口
public 公开方法
private 隐藏变量
static 工具方法
final 常量
new 创建对象
this 当前对象
super 调用父类
override 重写方法
interface 回调接口
synchronized 线程安全

# 语法

# 字面量

类型 示例 说明
整数 100 默认int
小数 3.14 默认double
字符 'A' 单个字符
字符串 "Java" 多个字符
布尔 true 真
空 null 无对象引用

# 变量

内容 说明
变量 存储数据的空间
数据类型 决定存储什么数据
变量名 标识数据
数据值 实际保存内容

# 计算机存储规则

8 bit = 1 字节

1024 字节 = 1 KB

int 4字节

int a = 10(1010)
0000 0000 0000 0000 0000 0000 0000 1010
1
2

# 数据类型

# 基本类型

取值范围 double > float > long > int > short > byte

类型 大小 示例
byte 1字节 byte a=10
short 2字节 short a=10
int 4字节 int age=18
long 8字节 long num=100L
float 4字节 float f=1.2F
double 8字节 double d=1.2
char 2字节 'A'
boolean - true
# 引用类型

# 标识符规则

正确 错误
userName 1name
_age class
$price a-b

# Scanner键盘输入

import java.util.Scanner;

 
// 1. 找到Scanner 这个打工人
Scanner sc = new Scanner(System.in);

// 2. 让Scanner干活
// 接收键盘录入的整数
/*int num = sc.nextInt();
System.out.println(num);*/

// 接收键盘录入的小数
/* double num2 = sc.nextDouble();
System.out.println(num2);*/

// 接收键盘录入的文本(字符串)
String str  = sc.next();
System.out.println(str);

-----------------------------------------------------------------------------------------

/*
	定义两个整数类型的变量num1和num2,键盘录入数据分别为两个变量赋值。
	求两个数的和并进行打印。
*/

// 1.找到Scanner这个打工人
Scanner sc = new Scanner(System.in);

// 2.让Scanner干活
System.out.println("请键盘录入第一个整数:");
int num1 = sc.nextInt();
System.out.println(num1);

// 3. 让Scanner再次接收第二个整数
System.out.println("请键盘录入第二个整数");
int num2 = sc.nextInt();
System.out.println(num2);

// 4.求和
int result = num1 + num2;
System.out.println(result);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
方法 输入
nextInt() 整数
nextDouble() 小数
next() 字符串

# 算数运算符

运算符 作用 示例
+ 加 a+b
- 减 a-b
* 乘 a*b
/ 除 a/b
% 取余 a%2

Java 小说明(整数除法)公式总结:

个位:数值 % 10

十位:数值 / 10 % 10

百位:数值 / 100 % 10

千位:数值 / 1000 % 10;

时间转换

// 1. 定义变量记录秒数
int seconds = 7242;

// 2. 获取小时数
int hours = seconds / 3600; //3661 / 3600 = 1 .... 61
System.out.println(hours);

// 3. 获取分钟数
//	总秒数 - 小时数 3661 - 3600 = 61
//	61 / 60 = 1分钟 ... 1秒钟
//	3661 % 3600 = 1 ... 61
//	7220 % 3600 = 2 ... 20
int min = seconds % 3600 / 60;
System.out.println(min);

// 4. 获取秒数
int second = seconds % 3600 % 60;
System.out.println(second);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 类型转换

数字运算:类型不一样不能运算,需要转成同类型的才能计算。

隐式转换的规则

  • 触发时机:不同类型的数据进行计算,默认采取隐式转换,Java 自动转换,无需我们写代码
  • 转换步骤 1:如有 byte short 类型的数据,先提升为 int 类型
  • 转换步骤 2:把取值范围小的提升为取值范围大的,再进行运算

类型从小到大顺序:

byte → short → int → long → float → double
1

自动转换 小范围 → 大范围

int a=10;
double b=a;
1
2

强制转换 大范围 → 小范围

弊端:有可能导致精度丢失

double a=10.5;

int b=(int)a;

/* 练习二:
检查下面代码,程序运行的时候是否会报错,如果会,请说明错误原因*/
short s1 = 100;
short s2 = 200;

// int + int = int
// 修改方案1:
//      300 :二进制 00000000 00000000 00000001 00101100
//      强制转换byte:00101100(44)
byte result1 = (byte)(s1 + s2);
System.out.println(result1);


// 修改方案2:
int result2 = s1 + s2;
System.out.println(result2); // 300
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 字符运算

# char底层对应数字编码:
char c='A';

System.out.println(c+1);


// 实现字母的大小写转换,将大写字母转化为小写字母
// A ---> a

// 1. 定义变量记录大写的字符
char c = 'A';
// ASCII 码:'A'是 65,'a'是 97,大小写字母相差 32。
// 2. 转成小写
//      65 + 32  -- 97
char cc = (char)(c + 32);

System.out.println(cc);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 字符串拼接

操作 示例
字符串+数字 "年龄"+18
字符串+变量 "name="+name

# 自增自减

运算 含义
++i 先加后用
i++ 先用后加
--i 先减后用
i-- 先用后减

# 赋值运算符

运算符 等价
+= a=a+b
-= a=a-b
*= a=a*b
/= a=a/b

# 关系运算符

符号 说明
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于

# 逻辑运算符

符号 名称 示例
& 与 年龄>=18 & 年龄<60
| 或 年龄>=18 | 年龄<60
! 非 !true

# 短路逻辑

运算 特点
&& 左边false,右边不执行
|| 左边为 true,右边不执行
// 1. 键盘录入一个四位整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个四位整数:");
int number = sc.nextInt();

// 2. 数字拆分
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100 % 10;
int qian = number / 1000 % 10;

System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
System.out.println(qian);

// 3. 判断是否为回文数
//  qian == ge  &&  bai == shi
System.out.println(qian == ge && bai == shi);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 三元运算符

条件 ? 结果1 : 结果2
    
int max=a>b?a:b;
1
2
3

# 运算符优先级

优先级 运算
1 ()
2 ++ --
3 * / %
4 + -
5 > < >= <=
6 == !=
7 &&
8
9 ?:
10 =

# 判断

if

if(布尔条件){
    条件成立执行的代码;
}
1
2
3

# 选择

switch

switch(表达式){
    case 值1:
        代码;
        break;
    case 值2:
        代码;
        break;
    default:
        都不匹配执行;
}

public static void main(String[] args) {
    /*
    switch的注意点:
    1. 表达式:结果(字符/整数byte short int/枚举/字符串)--- 跳转表,索引不支持小数,也不支持大的整数long
    2. case:被匹配的值,只能是真实的数据 --- 不能写变量的
    3. case:值不允许重复
    4. break:表示中断,结束的意思,结束switch语句 --- break关键字,作用结束switch语句 -- 没有berak会穿透
    5. default:所有情况都不匹配,执行该处的内容 --- if里面的else是非常类似的
    */

    int number = 1;
    switch (number) {
        case 1:
            System.out.println("一");
            break;
        case 2:
            System.out.println("二");
            break;
        case 3: 
            System.out.println("三");
            break;
        default:
            System.out.println("没有这个数字");
            break;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

新特性

public static void main(String[] args) {
    /*
    3. switch新特性:JDK12预览版  JDK14正式版
        一、箭头标签
        二、case后面可以写多个值
        三、switch可以有运行结果
        四、yield关键字
     */

    int number = 8;
    String name = switch (number) {
        case 1, 2, 3, 4, 5 -> {
            yield "一";
        }
        case 6, 7, 8 -> {
            yield "二";
        }
        case 9, 10, 11 -> {
            yield "三";
        }
        default -> {
            yield "没有这个星期";
        }
    };

    // 如果下面,我要继续使用switch的结果,就无法操作
    System.out.println(name);
}

String name = switch (number) {
    case 1, 2, 3, 4, 5 -> "一";
    case 6, 7, 8 -> "二";
    case 9, 10, 11 -> "三";
    default -> "没有这个星期";
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 循环

for

for(初始化;循环条件;增量){
    循环体代码;
}

初始化语句条件判断语句  
    不成立 → 其他语句  
    成立 → 循环体语句 → 条件控制语句 →(回到条件判断语句)其他语句

// 例子
    
// 1. 定义求和变量
int sum = 0;

// 2.获取1-5这个范围中的每一个数字,累加到sum当中
// 第一次循环:i = 1 判断 i <= 5
//          1 + 0 = 1 ---> sum
//          i++   i = 2   第一次循环结束

// 第二次循环:i <= 5
//          2 + 1 = 3 ---> sum
//          i++   i = 3   第二次循环结束

// 第三次循环:i <= 5
//          3 + 3 = 6 ---> sum
//          i++   i = 4   第三次循环结束

// 第四次循环:i <= 5
//          4 + 6 = 10 ---> sum
//          i++   i = 5   第四次循环结束

// 第五次循环:i <= 5
//          5 + 10 = 15 ---> sum
//          i++   i = 6   第五次循环结束

// 第六次循环:i <= 5 --- 6 <= 5 false -- 循环结束

for (int i = 1; i <= 5; i++){
    // 把当前获取到的数字加到sum当中
    sum = i + sum;
}

// 3. 输出
System.out.println("1 - 5之间的数字和为: " + sum);


// 定义一个变量用于求和
int sum = 0;

// 1. 利用循环获取1‑100之间的每一个数据
for(int i = 1; i <= 100; i++){
    // 2. 利用if语句进行判断
    if(i % 2 == 0){
        // sum = i + sum;
        sum += i;
    }
}

public static void main(String[] args) {
    /*
    有一组特殊的数字,从第三项开始,每一项都是前两项的数字和,请问第10项的数字是多少?
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
    */

    // 1. 定义两个变量,去记录前两项的值
    int a = 0;
    int b = 1;

    // 2. 定义一个变量,赋值为0,表示a和b后面那一项的值
    int c = 0;

    // 3. 利用循环不断获取这些特殊数字每一项的值
    // 开始条件:3
    // 结束条件:10
    // 循环体:① 求c的值  ② 不断的修改a和b记录的值
    for (int i = 3; i <= 10; i++) {
        // 求c的值(求前一组最后一个值)
        c = a + b;
        // 不断的修改a和b记录的值(求下一组前两个值)
        a = b;
        b = c;
    }

    System.out.println(c);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

while

初始化;
while(条件判断语句){
    循环体;
    条件控制;
}

初始化语句 → 条件判断语句
条件不成立:直接到其他语句,循环结束
条件成立:循环体语句 → 条件控制语句 → 返回条件判断语句继续循环
    

1
2
3
4
5
6
7
8
9
10
11

for 和 while 的区别:

➢ for 循环中:知道循环次数或者循环的范围

➢ while 循环:不知道循环的次数和范围,只知道循环的结束条件。

dowhile

初始化;
do{
    循环体;
    增量;
}while(条件);
1
2
3
4
5

无限循环

for(;;){}
while(true){}
1
2

break

跳出所在整个循环,循环直接结束。

continue

跳过本次循环剩下代码,直接进入下一轮循环,循环不会结束。

循环嵌套

外层循环控制行数,内层循环控制每行输出内容。

# 数组

初始化(静态、动态)

//静态初始化
//完整格式:
//数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…,元素n};

//简写格式:
//数据类型[] 数组名 = {元素1,元素2,元素3,…,元素n};

// 1.定义数组存储3位同学的年龄
int[] ageArr1 = new int[]{18, 19, 20};
int[] ageArr2 = {18, 19, 20};

// 2.定义数组存储5位同学的身高
double[] heightArr1 = new double[]{1.93, 1.92, 1.21, 1.70, 1.75};
double[] heightArr2 = {1.93, 1.92, 1.21, 1.70, 1.75};

// 3.定义数组存储3位同学的名字
// zhangsan String
String[] nameArr1 = new String[]{"zhangsan", "lisi", "wangwu"};
String[] nameArr2 = {"zhangsan", "lisi", "wangwu"};

// 动态初始化
/*
需求:键盘录入5个的整数,存入数组当中,并进行遍历

动态初始化的格式:
    数据类型[] 数组名 = new 数据类型[数组的长度];
*/

// 键盘录入5个的整数,存入数组当中,并进行遍历

// 1. 创建数组
int[] arr = new int[5];

// 2.键盘录入
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
    System.out.println("请输入一个整数:");
    int num = sc.nextInt(); // 2
    // 把接收到的数据赋值给数组
    arr[i] = num;//2
}

// 3. 遍历数组
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

访问元素

int[] ageArr2 = {18, 19, 20};
ageArr2[0]
1
2

遍历元素

// 长度
ageArr2.length
1
2

数组算法(找最大值、查找、去重等)

# 方法

把一段重复代码封装起来,需要的时候调用,提高复用。

public static void 方法名(){
    方法体;
}
1
2
3
上次更新: 2026/08/21, 09:59:48
Java
Java原理

← Java Java原理→

最近更新
01
React性能优化
08-18
02
记录一些描述
08-18
03
Swift入门
08-17
更多文章>
Theme by Vdoing | Copyright © 2021-2026 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式