一、关键字
我们第一章案例中有很多关键字,比如class、public、static、void等,这些关键字依旧被java定义好了,可以拿来用,不需要死记硬背,按照官方文档查询即可
#官方文档
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
常用关键字
二、标识符
上面的关键字的定义好的,那么标识符就是我们自定义的,通常来说我们称之为变量
比如说我们在定义class类的时候,是不是都是随便起名 比如class xxx 这个就是变量(标识符) 但是标识符的定义需要遵循一定的命名规则,如下
1、 标识符命名规则
由26个英文字母大小写 0-9 下划线_ 或者$ 组成
不可以数字开头
不可以使用关键字,但是能包含关键字
java中严格区分大小写,长度无限制
标识符不能包含空格
2、标识符命名格式
数据类型 变量名 = 变量值
案例
char gender 变量初始化 #java语言必须要先定于变量名,才能使用
gender = ‘男’ 变量赋值
3、基本数据类型
整型 byte short int long
浮点型 float double
字符型 chart
布尔型 boolean
#引用数据类型,现在不用了解
类 class
数组 array
接口 interface
枚举 enum
注解 annotation
记录 record
1、整型的数据范围
计算机存储单位
2、浮点类型范围
浮点数 不适合在精确小数点的环境,比如银行,舍弃的小数点也是很多钱
BigDecimal 来替换浮点
3、字符型
4、布尔值
4、运算符规则
当容量小的数据类型和容量大的数据类型做运算时,结果自动转换为容量大的数据类型
案例
int i1 = 10
long l1 = i1
float f1 = l1
double d1 = f1
此时的容量小或者大,不是说内存空间的大小,而是表示数据范围的大小,long(8字节) float(4字节),int 是4字节可以把数据赋值给long 8字节,float 比long的范围还要大,那么long可以赋值给float
三、数组
数组是多个相同类型数据,按照一定顺序排序的集合,并使用一个名字命名,并通过编号的方式对这些数据统一管理
1、数组定义
案例1 数组定义 初始化值
int num1 = 10;
int num2;
num2 = 20
#声明数组
double[] prices;
#声明什么new什么 初始化步骤
prices = new double[]{1.1,2.2,3.3} #初始化 并赋值
案例2
String[] fods;
foods = new String[]{"你好","你好2","你好3"}
案例3
#不指定数组元素 指定长度
String[] foods = new String[4]; #如果不带花括号,可以直接写数字
#表示能存放的大小,后续在添加数组的值
案例1和案例2 是静态,数组变量的初始化与数组元素的操作同时进行
案例3 是动态的 #数组变量的赋值与数组元素赋值操作分开案例1和案例2定义的值就是数组的长度
小结
数组一旦初始化完成,数组的长度就确定了,并且不可更改
静态定义 写花括号里
int[] arr1 = new int[]{1,2,3,4}
动态 写大括号里
int arr[] = new int[4]
2、数组元素调用
1、获取索引位值
int[] arr1 = new int[]{1,2,3,4}
#调用
arr1[0] #从0 开始
arr1[1]
arr1[2]
arr1[3]
2、给索引位赋值
int[] arr1 = new int[4]
#赋值
arr1[0] = 555
arr1[0] = 666
3、获取数组长度
int[] arr1 = new int[4]
#获取数组容量大小
arr1.length
4、如何遍历数组
int[] arr1 = new int[4]
for (int i = 0; i <= 4; i ++){
System.out.println(arr1[i])
}
或者
for (int i = 0; i <= prices.length; i ++){
System.out.println(arr1[i])
}
5、数组元素默认初始化值
int[] arr1 = new int[4]
System.outprintln(arr1[0])
此时默认值是什么
整型 0
浮点型 0.0
字符型 0
字符串 null
布尔类型 false
3、多维数组格式
#定义一维数组
int[] arr1 = new int[]{1,2,3};
#定义二维数组 静态
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
#定义动态二维数组
#可以定义3个子数组(元素)
#每个子数组里面可以放4个元素
String[][] arr3 = new String[3][4];
#动态二维数组2
#将第二个置空
#置空表示没设置上线,写入的时候根据写入的元素决定
String[][] arr3 = new String[3][];
关于数组的写法
int[][] arr5 =
int[] arr5[] =
int arrt5[][] =
这3种写法都是堆的
类型推断
#写的时候如果是在一行,并且带有值的时候
#可以把右边的new int[][] 去掉,也是可以的
int[][] arr2 = {{1,2,3},{4,5,6}};
二维数组的调用
int[][] arr2 = {{1,2,3},{4,5,6}};
#调用内层元素
arr2[0][0] #第一个数组的第一个元素
arr2[1][2] #第二个数组的第三个元素2
#我们调用的时候如果不指定内存元素
#只指定第一个数组,那么只会打印数组的内存地址
arr2[1]
#如果是普通数据升级为二维数组
arr4[0] = new int[4] #给数组添加一个子数组
二维数组的长度
#定义二维数组 静态
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
arr2.length 是2 因为有2个元素
arr2[0].length 是3 因为数组1有3个元素
如何遍历二维数组
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
for (int i = 0; i < arr2.length; i++){
for (int j = 0; j < arr2[i].length; i++){
System.out.println(arr2[i][j])
}
二维数组的默认值
#动态初始化方法1
int[][] arr2 = new int[3][2]
#外层元素默认值
System.out.println(arr2[0]) 内存地址值
System.out.println(arr2[0])
#内层元素默认值
System.out.println(arr2[0][]) //0
#动态初始化方法2
int[][] arr2 = new int[3][]
#外层元素默认值
System.out.println(arr2[0]) //null
#内层元素默认值
System.out.println(arr2[0][]) //报错,空指针,因为光有栈名称,没有堆的具体数