一、数组
1.1 定义及描述
array 标志是 [ ],储存多个相同类型的数据
1.2 定义及初始化
1.静态定义及初始化
int [] a = new int [5] {1,2,3,4};
int [] a = {1,2,3,4,5};
2.动态初始化
int [] a = new int [5];
a[0] = 1;
a[1] = 2;
1.3 数组的特点
- 数据空间是连续的
- 数组长度不可变,数组长度
arr.length
。 - 允许长度为0的数组
- 我们通过数组的下标来操作数组的数据,最大下标length- 1;
1.4 练习数组的使用:
- 遍历数组
- 遍历数组,存入数据
- 随机值数组
1.5 Arrays工具类
1.打印数组(将数组转换为字符串):
Arrays.toString(arr)
注意:char数组可以直接打印,其他数组必须借助Arrays.toString(arr)
方法。否者打印的都是引用值。
2. 数据排序
Arrays.sort(arr);
无返回值,将原数组排序
基本类型数组,使用的是经过优化的快速排序算法
3. 数组的扩容与缩容
newArr = Arrays.copyof(arr,num)
// arr 原数组
// newArrr 新数组
// num 新数组的长度
新数组的长度大于原数组,扩容,空位补充默认值
新数组的长度小于原数组,缩容,保留前num位置
新数组.length==原数组.length,复制
copyOfRange(原数组,start标,end标)从原数组中start标下标位置开始,到end标下结束,包括start标,不包括end标
sort(数组);优化后的快速排序算法,排序数组,直接对原数组进行修改
1.6 数组的创建过程
1.在内存开辟连续的空间,存储多个类型相同的数据
2.给数组完成初始化的过程, 给每个元素赋予默认值
3.数组完成初始化,给初始化后的数组一个唯一的地址值
4.把唯一的地址值交给数组的引用变量
5.保存地址值,方便后面使用
数组名保存的是数组的地址值
1.7 数组的默认值
整型数:0
浮点型:0.0
char型:\u0000
boolean:false
引用类型(如String):null
1.8数组的遍历
1.如果只是想查看数组的值,使用Arrays.toSring(数组),就可以了
2.如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的操作,就需要对数组进行遍历
3.遍历:把数组中的所有元素,从头到尾过一遍
4.通过for循环遍历数组时,循环中的循环变量就是数组下标
//1.动态建立数组
int[] a = new int[10];
//2.遍历数组,从0开始,最大下表减1
for(int i = 0; i <= a.length -1; i++) {
a[i] = i+5;
}
System.out.println(Arrays.toString(a));
1.9 二维数组
定义:
int a[][] = {{1,1},{1,2},{1,3}}
外部数组,a
内部数组:a[i]
二、变量
概念:
格式 变量类型 变量名
java中所用变量都要先赋值,再使用
1 局部变量
1.位置:位于方法或代码块内部
2.注意事项:使用前一定要赋值
3.范围:在方法内或代码块内使用,方法或代码块执行完毕就释放
2 成员变量
1.位置:在方法外,类里
2.注意:有类型对应的默认值,不用手动初始化
3.生效范围:对象创建时初始化,对象消失才会消失
3 成员变量初值
类型 | 字节 | 取值范围 | 默认值 |
---|---|---|---|
byte | 1 | -128~127 | 0 |
short | 2 | -215~215-1 | 0 |
int | 4 | -231~231-1 | 0 |
long | 8 | -263~263-1 | 0L |
float | 4 | 负数:-3.4E+38~-1.4E-45 正数:1.4E-45~3.4E+38 | 0.0F |
double | 8 | 负数:-1.7E+308~-4.9E-324 正数:4.9E-324~1.7E+308 | 0.0 |
char | 2 | 0~65535 | \u0000 |
boolean | 1 | true,fasle | false |
引用类型 | x | x | null |
整型数:0
浮点型:0.0
char型:\u0000
boolean:false
引用类型(如String):null
4 变量的使用范围
变量使用范围由大括号具体,包含变量最近的大括号及变量使用的范围
三、方法
1 概念
方法是被定义了的代码块,拥有一定的功能,执行一定的动作
2 方法定义的格式
方法修饰符 返回值类型 方法名(参数列表){方法体}
例如:
public static void main(String[] args) {
1)方法可以是有参的也可以是无参的
2)方法的调用是将方法当成一个语句来执行
3)我们是通过方法名和参数列表(方法签名)来区别调用方法的
4)方法是否使用取决于是否被调用
4)方法的执行顺寻取决于调用顺序而不是编写顺序