12-数组
-
数组: 数组是一个变量,存储相同的数据类型的一组数据
相同的类型的若干个数据,按照一定的先后顺序排列组合而成,每个数据称为数组元素
-
语法:
-
声明数组 : -->跟内存打招呼
- 数据类型 [] 数组名; --常用
- 数据类型 数组名 [];
-
分配空间
数组名 = new int[数组的长度];
-
赋值
数组名[下标] = 值;
-
-
特点:
- 数组中存储的数据类型相同
- 长度一旦设定就不能在更改
- 数组是引用数据类型,分为两块存储,栈中声明,堆中开空间
- 数组是通过下标(索引)访问数据的,下标是从0开始
- 数组的长度-1等于最大下标
- 会产生下标越界异常
public class ArrayDemo01 {
public static void main(String[] args) {
//[1]声明/定义数组
int[] a;
//int b[];
//[2]分配空间
a = new int[5]; //在堆中开辟空间,把地址给a
int[] b = new int [3]; //声明一个int类型的数组b长度为3;
double [] d = new double[4];
String [] s = new String [2];
char [] c = new char[100];
b= new int [10];
//[3]赋值
a[0] =12;
a[1]=11;
b[2] = 'a';
//a[0]
System.out.println("b[2]="+b[2]);
}
}
-
静态赋值: 在程序运行之前,这个值就已经确定了
- 数据类型 [] 数组名 = {值1,值2,值3…};
- 数据类型 [] 数组名 = new 数据类型 [] {值1,值2,值3,值4…};
-
动态赋值: 在程序运行之前,不知道什么数据,在程序运行时,由用户手动输入
- 声明数组,设定[5]
- Scanner 对象输入
- for循环,循环接收与数组长度一致的整数
-
断点介绍
F5: 单步调试,进入方法的内部
F6: 单步调试,执行当前代码
F7: 由方法内部返回到调用
F8: 一直执行到下一个断点
public class ArrayDemo02 {
public static void main(String[] args) {
//静态赋值
/* int [] arry2 = {11,22,33,44,55};
int [] arry1 = new int []{78,90,67,45};
System.out.println(arry2);*/
/**
* 动态赋值
*/
int [] arry = new int [5];
Scanner input = new Scanner(System.in);
for(int i =0;i<arry.length;i++){
System.out.println("请输入"+(i+1)+"个数:");
arry[i] = input.nextInt();
}
}
}
- 循环遍历数组:
- 编写一个输出数组元素的方法
- for循环条件
- 输出数组元素
public class ArrayDemo {
public static void printArray(int [] arr){ //形参
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]+"\t");
}
}
public static void main(String[] args) {
int [] arry = {11,22,33,44,55,66}; //静态赋值
int [] arr = {566363,464};
printArray(arry);
printArray(arr);
}
}
- 加强for循环: 好处: 不存在下表越界异常
for(数组中元素的类型 变量名 : 要遍历的数组的数组名){
}
public class ArrayDemo03 {
public static void main(String[] args) {
int [] arry ={11,22,33,44,55};
for(int i = 0;i<arry.length;i++){
System.out.println(arry[i]+"\t"); //容易出现下标越界
}
System.out.println("=============================");
//加强for循环 -->foreach -->1.5
for(int a : arry){ //每次从数组中取出一个元素给a
System.out.println(a+"\t"); //作用:只能用来遍历,不可以循环赋值
}
String[] s = new String[2] ;
}
}
- 排序:
- 升序: Arrays.sort(数组名); java.util.Arrays
- 倒序: 如下
public class ArrayDemo04 {
public static void main(String[] args) {
//
int [] arry = {1,2,512,3,567,55};
Arrays.sort(arry); //首字母大写:类名 ,类名点 :静态的变量
for(int b : arry){
System.out.print(b+"\t");
}
System.out.println("\n=========================");
//倒叙:倒着输出 降序:从大到小
for(int i = arry.length-1; i>=0;i-- ){
System.out.print(arry[i]+"\t");
}
}
}
- 数组如何赋值
public class ArrayDemo05 {
public static void main(String[] args) {
int [] a = {11,22,33,44};
int [] b = new int [5];
System.out.println(b.length);
System.out.println(a);
//b=a; //赋值内存地址
System.out.println(b.length);
System.out.println(a);
//循环赋值
for(int i = 0;i<a.length;i++){
b[i]=a[i]; //对应位置上的元素赋值
}
System.out.println("=============================");\
//遍历
for(int i = 0;i<b.length;i++){
System.out.print(b[i]+"\t");
}
// System.out.println(b.length);
}
}