1——数(数据)组(一组)
介绍:数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
1.1-数组的使用方式1——动态初始化
数组的定义:
1.数据类型 数组名 [ ] = new 数据类型 [大小];
2.数据类型 [ ] 数组名 = new 数据类型 [大小];
例如:int a [ ] = new int [5];
数组的引用(使用):数组名[下标/索引];
数组名.length——数组的长度
1.2-数组使用方式2——动态初始化
数组的定义:
先声明:
1.数据类型 数组名 [ ] ;
2.数据类型 [ ] 数组名;
int a [ ];或者int [ ] a;
再赋值:
数组名 = new 数据类型 [大小];
a = new int [10];
1.3-静态初始化
语法:
数据类型 数组名[ ] = {元素值,元素值,......}
数据类型 [ ] 数组名 = {元素值,元素值,......}
1.4-注意事项
1.数组是多个相同类型数据的集合,进行统一管理
2.若数组一开始没有赋值,java会有默认的赋值:布尔类型为false,String类型为null,其余的为0
3.下标从0开始
4.下标要在数组有效下标范围内,否则会报异常
5.数组是引用型,数组型数据是对象
2——赋值机制
1.基本数据类型赋值,就是赋值,相互之间不会影响,称为值拷贝。
2.数组在默认情况下是引用传递,赋的是地址。
3——数组的拷贝
1.重新开辟一个空间
2.把要拷贝的值拷贝过去
4——数组的反转
转换法:
public class XiaoShuai
{
public static void main(String[] args)
{
int[] arr1 = {11,22,33,44,55,66};
int len = arr1.length;
int temp = 0;
for(int i =0;i<len/2;i++)
{
temp = arr1[len-1-i];
arr[len-1-i] = arr[i];
arr[i] = temp;
}
}
}
逆序法:
public class XiaoShuai
{
public static void main(String[] args)
{
int[] arr1 = {111,22,33,44,55,66};
int len = arr1.length;
int[] arr2 = new int [len];
for(int i = len-1,j = 0;i>=0;i--,j++)
{
arr2[j] = arr1[i];
}
arr1 = arr2;
}
}
5——数组的扩容
import java.util.Scanner;
public class XiaoShuai
{
public static void main(String[] args)
{
Scanner myScanner = new Scanner(System.in);
int[] arr = {1,2,3};
do
{
int len = arr.length;
int[] arrNew = new int [len+1];
for(int i = 0;i<len;i++)
{
arrNew[i] = arr[i];
}
int addNum = myScanner.nextInt();
arrNew[len-1] = addNum;
arr = arrNew;
char key = myScanner.next().charAt(0);
if(key == 'n')
break;
}while(true);
}
}
6——排序
冒泡排序
public class XiaoShuai
{
public static void main(String[] args)
{
int[] arr = {5,4,3,2,1};
int len = arr.length;
int temp = 0;
for(int i = 0;i<len-1;i++)
for(int j = 0;j<len-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
7——查找
常用的有两种:
1.顺序查找
2.二分法查找
8——二维数组
1.从形式上来看:int [ ][ ]
2.怎么理解:
1.原来一维数组的每个元素是一维数组,这样就构成了二维数组
2.二维数组的每个元素是一维数组,所以如果想要得到每个一维数组的值还需要再次访问
8.1-二维数组的使用方式1——动态初始化
语法:
数据类型[ ][ ] 数组名 = new 数据类型 [大小][大小];
内存存储方式:
8.2-使用方式2——动态初始化
语法:先声明,在定义
类型[ ][ ] 数组名;
数组名 = new 类型 [大小][大小];
8.3-使用方式3——动态初始化
二维数组可以一开始不给一维数组开辟空间,可以之后再开辟。即先确定二维数组的行,列可以之后再开辟赋值。
8.4-使用方式4——静态初始化
语法:
类型[ ][ ] 数组名 = {{ },{ },......}
8.5-细节
二位数组可以是:
int [][] arr; int arr [][]; int [] arr [];