基础概念
1. 字面量
\t : 制表符 将前面的字符串的长度补齐到8,或者8的倍数,最少补一个最多补8个
2. 数据类型

int 有 十位数,long有 19位数
2.1 注意点
- long类型字面量后面加L
- 浮点数默认是double ,float类型字面量后面加F
- java布尔类型为
boolean,与c++ bool区分
3. Java键盘输入
Java输入通过Scanner类实现
3.1 步骤
- 导包
import java.util.scanner - 创建对象
Scanner scanner = new Scanner(System.in) - 接收数据
int i = scanner.nextInt()
4. Java运算符
-
Java整数除法默认下取整
-
扩展的赋值运算符(+=、-=、/=…)底层隐藏了一个强制类型转换。 例子:
short a = 1; a+=1 -
优先级

5. Java类型转化
5.1 隐式转换(自动转换)
小范围变大范围
5.2 显示转化(强制转化否则报错)
大范围变小范围
目标数据类型 变量名 = (目标数据类型)被强转的类型
5.3 取值范围
byte < short < int < long < float < double
5.4 注意点
byte ,short , char 参与运算时先转化成int并且不会转换回来
例如
byte a = 1,b = 2;
//a+b是int类型
6. 原码、反码、补码
原码 : 左边第一位是符号位,后面是十进制的二进制表示,原码对正数进行计算不会出问题
反码:正数的反码和原码一样,负数的反码符号位不变,数值位取反
补码:正数的补码和原码一样,反码基础上加末尾加一
6.1 注意点:
- 原码和反码都有两个0一个+0,一个-0。补码有一个0。
- 原码和反码的范围都是-127—>+127(一个字节为例),补码范围是-128—>+127
- 计算机中数字的存储和计算都用补码
7. 流程控制语句
7.1 顺序结构
略——
7.2 分支结构
7.2.1 if-else语句
7.2.2 switch-case语句
int cases = 0;
switch(cases){
case 0:
语句1;
break;
case 1:
语句2;
break;
default:
语句n;
break;
}
7.2.3 注意点:
- 不写大括号后面可以跟一条语句,但是要注意下面这种情况
// 会报错
boolean flag = true;
if(flag)
int a = 1;//这不是一条语句是两条,定义加赋值。这被看成两条语句。
- switch(表达式) 的取值可以是byte 、short、 int、 char、 String、枚举
- switch语句在JDK12之后的新用法,不用写break,不会出现case注入。
int number = 2;
switch (number) {
case 0 -> System.out.println("number是0"); //可以省略花括号
case 1 -> {
System.out.println("number是1");
}
case 2 -> {
System.out.println("number是2");
}
default -> {
System.out.println("number是3");
}
}
- case后面可以跟多个值用逗号连接
int week = 7;
switch (week) {
case 1,2,3,4,5 -> System.out.println("工作日");
case 6,7 -> System.out.println("休息日");
default -> System.out.println("没有这一天");
}
7.3 循环结构
8. 数组
简介:用来存储同种数据类型的多个值的容器
8.1 数组的定义
- 数据类型[] 数组名 例:int [] array;
- 数据类型 数组名[] 例 int array[];
8.2 数组的初始化
在内存中为数组开辟空间,并将数据存入容器
8.2.1 静态初始化
完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
常用简写模式:数据类型[] 数组名 = {元素1,元素2,元素3...}
例子 int[] array = {1,2,3};
数组地址值的含义 [I@6e8cf4c6
[表示是一个数组,I表示数组元素数据类型为int,@是分隔符号,其余为十六进制内存地址
IDEA如何快速写出for(int i = 0 ;i < n ; i ++)?
答: n.fori+Enter
遍历数组: for(int i = 0 ; i < array.lenth ; i ++)
快速遍历数组(IDEA): 数组名.fori
8.2.2 动态初始化
简介:初始化时只指定数组长度,不指定数值,数值为系统分配的默认值。
格式:数据类型[] 数组名 = new 数据类型[长度]
例1: int[] array = new int[5];
例2:String[] names = new String[50]
默认初始化值
整数类型: 0
浮点类型:0.0
字符类型:‘/u0000’ $\triangleq 空格 $
布尔类型:false
引用数据类型: null
8.2.3 Java内存分配
内存空间的类型
栈: 方法运行时使用的内存
堆: 存储对象或者数组,new创建的
方法区:存储可以运行的class文件(字节码文件)
本地方法栈: JVM使用操作系统功能时使用
寄存器:给CPU使用
运行时内存空间的分配(栈和堆)
个人理解: 从方法和变量两个角度来看。从方法的角度,程序运行的过程中,按照方法的执行顺序,调用方法时在栈空间的底部创建方法的内存空间(入栈),方法执行结束,方法的内存空间在栈空间的顶部消除(出栈)。从变量的角度,首先,任何变量的变量名即变量的内存地址都是存在栈空间中的。对于非new变量,在栈空间中为其分配内。new 创建变量,数据的内存空间在堆空间中分配。

8.3 二维数组初始化
8.3.1 静态初始化
完整格式: 数据类型[][] 数组名 = new 数据类型[][]{{1,2},{3,4}};
简化格式: 数据类型[][] 数组名 = {{},{}}
8.3.2 动态初始化
格式: 数据类型[][] 数组名 = new 数据类型[n][m];
特殊情况
int[][] arr = new int[2][];
int[] arr1 = new int[3];
int[] arr2 = new int[4];
arr[0]=arr1;
arr[1]=arr2;
8.3.3 注意点
- Java二维数组的内存和C++不同,整个二维数组的内存不是连续的内存.每行是连续的,但是不同行之间不是连续的
9. 方法
9.1 方法的定义与调用
格式:
public static 返回类型 方法名(参数){
方法体;
return 返回值
}
例子(参数为数组):
public static void main(String[] args){
int arr[]={11,22,33,44,55};
arrPrint(arr);
}
public static void arrPrint(int[] arr){
for(int i = 0; i < arr.lenth ; i ++)
System.out.print(arr[i]+"");
}
```1
### 9.2 方法的重载
含义:同一个类中的同名方法,但是参数类型或个数不同。
#### 注意点:返回值类型不同不能说明构成重载关系
### 9.3 基本数据类型和引用数据类型
整数类型、浮点类型、字符类型、布尔类型是基本数据类型,其他是引用数据类型。
从内存管理的角度:
基本数据类型的变量的内存空间中存的是真实数据,而引用数据类型变量存储的是数据在堆空间的地址
### 10. 综合练习的细节
1. String 可以通过+拼接char类型
```java
String str = "";
str += 'c';
- 随机数类的使用
Random rd= new Random();
rd.nextInt(n); //在[0,n)中随机挑选一个整数返回
IDEA快捷操作总结
-
IDEA如何快速写出
for(int i = 0 ;i < n ; i ++)?
答:n.fori+Enter -
遍历数组:
for(int i = 0 ; i < array.lenth ; i ++)
快速遍历数组(IDEA): 数组名.fori+Enter -
快速打出System.out.println();
sout+Enter
参考资料 :
https://www.bilibili.com/video/BV17F411T7Ao/?spm_id_from=333.1387.homepage.video_card.click
4024

被折叠的 条评论
为什么被折叠?



