一、数组:引用类型 一堆相同类型的数据集合
一维数组:
1、数组的声明: 数据类型名[ ] 变量名 ; 数据类型名 变量名[] 后者不推荐使用
2、数组的初始化:
(1)静态初始化: eg : int[ ] a ={1,2,3,4 }; 静态变量不能再被赋值新的静态值
(2)动态初始化:
1) eg: int [ ] a=new int [length]; 会有length 个默认值
整形:0 浮点型 0.0 字符型: ' \u0000 ' 布尔类型:false 引用类型:null
2) eg : int [ ] a =new int [ ]{1,2,3,4} 动态的变量也只能赋值为新的动态
3、数组的元素:元素是指里面的数据
4、数组的下标:元素的位置是从0到length-1; 数组的长度(元素的个数) int num=变量名.length;
5、数组元素的访问 (存取) 变量名[下标]
6、数组的遍历 for循环输出
7、数组异常: ArrayIndexOutOfBoundException 数组下标越界异常
二、二维数组:
1、声明格式:数据类型 数组名[][];
数据类型 数组名[][] =new 数据类型[行的个数][列的个数];
2、数组初始化:
静态初始化:数据类型 数组名[][]={ { 第一行初值 },{ 第二行初值 },{ ... } };
动态初始化:先声明,再逐个赋值
多维数组 数据类型 数组名[][][]; 依次类推
三、引用数据类型: 所声明的变量里面存的不是具体数据,是 其所在内存中经过计算所得的一个地址。
jvm内存管理结构:其中有两个部分
栈:存的是方法内部的局部变量,先进后出的特点,八大基本数据类型的值,
如果直接给变量赋值,那么就直接存在变量中
堆:存的是引用类型的数据(对象)
数组之间的变量的赋值
址传递:引用变量之间的赋值
值传递:基本数据类型变量之间的赋值
四、Arrays:数组工具类
(1)Arrays.equals(array1,array2): 比较两个数组是否相等
(2)Arrays.sort(array):对数组array的元素进行升序排列
(3)Arrays.toString(array):
功能:把数组里的元素拼接成字符串 "[元素1,元素2,………………,元素n]"
system.out.println(Arrays.toString())
(4)Arrays.fill(array,val):把数组中所有的元素赋值为val
(5)数组的复制:指的是堆里的对象进行复制。数组对象一经确定,就不能被不改变长度
系统数组复制法:System.arraycopy(src,start1,des,start2,length);
scr:源数组,表示你要复制的数组
start1:从源数组开始复制元素的下标
des:目标数组,表示要复制到的那个数组
start2:表示目标数组从哪个下标开始进行
length:表示要复制的长度
数组的扩容,缩容:Arrays.copyOf(src,newlength);
src:源数组,要复制的那个数组
newlength:表示扩容或者是缩容到多少长度
注:数组的扩容与缩容是会产生新数组的,底层是系统数组复制法
六、数组的排序
冒泡排序:
for(int i =0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[ j ]<array[ j+1]){
int temp=array[j];//临时变量,备份数据
array[ j ]=array[ j+1];
array[j+1]=temp;
}
}
}
======================================================
方法:方法就是一段可重复调用的代码段,有些书会把方法称为函数,其实两者没有什么区别,是同样的概念,只是称呼方式不同。
方法的定义格式:修饰词 返回值类型 方法名(形式参数){
方法逻辑
[return 表达式]
} //中括号主体为方法
定义位置:在类体中,方法之间并列存在
修饰词:public protected default private
返回值类型:
1、void: 无返回值类型,空返回值类型
2、数据类型(包含基本数据类型,引用类型),方法逻辑结束以后,必须有return关键词,
return后面必须跟着返回值类型的一个数
return:表示方法结束
方法名:与变量名的命名规则一样,定义类时全部单词的首字母必须大写,定义方法,第一个单词首字母小写,之后的每个单词的首字母大写。
形式参数:一种形式,必须强调类型。带上参数,会让方法更加的灵活 。
方法的调用(两种方法):
void类型的方法:方法名(有参传参)
有返回值数据类型的方法:返回值类型 变量= 方法名(有参传参)
方法的重载:在同一个类中,方法名相同,参数类型列表不同,与修饰词、返回值类型无关。
注:在调用期间,编译器会根据传入的参数个数、类型,进行匹配方法区的相应方法,找到就调用里面的逻辑,没找到,就会报编译错误,编译不了Class文件。