标签:机制 增加 避免 打印 bsp length max 常见 void
定义:同一类型数据的集合。相当于一个容器。数组从下标0开始编号,方便操作这些元素。
格式一:元素类型 [] 数组名 = new 元素类型 [length]
int [] Arr = new int [5 ];//定 义5个int型数组
格式二: 类型 [] 数组名 =new 类型 [] {元素个数};
int [] Arr =new int [] {1,2,3};
类型 [] 数组名 ={元素个数};
int [] Arr={1,2,3,4};
静态数组初始化
public class Example_Arr0 {//静态数组初始化 public static void main(String[] args) { int [] Arr={1,2,3,4};//定义数组 //访问数组中对象 System.out.println("Arr[0]="+Arr[0]); System.out.println("Arr[1]="+Arr[1]); System.out.println("Arr[2]="+Arr[2]); System.out.println("Arr[3]="+Arr[3]); System.out.println("Arr_length="+Arr.length);//Arrlength System.out.println("================"); int [] Arr01={1,2,3,4}; //1~3数组元素赋值 Arr01[0]=12; Arr01[1]=3; Arr01[2]=34; System.out.println("Arr[0]="+Arr01[0]); System.out.println("Arr[1]="+Arr01[1]); System.out.println("Arr[2]="+Arr01[2]); System.out.println("Arr[3]="+Arr01[3]); } }
运行结果:
Arr[0]=1
Arr[1]=2
Arr[2]=3
Arr[3]=4
Arr_length=4
================
Arr[0]=12
Arr[1]=3
Arr[2]=34
Arr[3]=4
动态数组初始化
public class Example_Arr {//动态初始化数组的定义及输出 public static void main(String[] args) { int [] Arr=new int [4];//定义数组 //访问数组中对象 System.out.println("Arr[0]="+Arr[0]); System.out.println("Arr[1]="+Arr[1]); System.out.println("Arr[2]="+Arr[2]); System.out.println("Arr[3]="+Arr[3]); System.out.println("Arr_length="+Arr.length);//Arrlength System.out.println("================"); int [] Arr01=new int [4]; //1~3数组元素赋值 Arr01[0]=12; Arr01[1]=3; Arr01[2]=34; //未指定的元素值仍是默认是0 System.out.println("Arr[0]="+Arr01[0]); System.out.println("Arr[1]="+Arr01[1]); System.out.println("Arr[2]="+Arr01[2]); System.out.println("Arr[3]="+Arr01[3]); } }
运行结果:
Arr[0]=0
Arr[1]=0
Arr[2]=0
Arr[3]=0
Arr_length=4
================
Arr[0]=12
Arr[1]=3
Arr[2]=34
Arr[3]=0
数组的遍历:
public class Example_Arr1 {//数组遍历 public static void main(String[] args) { System.out.println("传统的遍历法=v"); int [] Arr_0={1,2,3,4,5,6}; for (int i = 0; i<Arr_0.length; i++) { System.out.println(Arr_0[i]); } System.out.println("+i+高逼格遍历=v"); int [] Arr={1,2,3,4,5,6};//定义数组 //for进行遍历 for (int i = 0; i < Arr.length; i++) { System.out.println("Arr["+i+"]="+Arr[i]); } System.out.println("跳跃性遍历=v"); int [] Arr_01={1,2,3,4,5,6}; for (int i = 0; i < Arr_01.length; i+=2) {//i+=2 跳过的位数 System.out.println("Arr_01["+i+"]="+Arr_01[i]); } System.out.println("反向遍历法=v"); int [] Arr_02={1,2,3,4,5,6}; for (int i = Arr.length-1; i >=0; i--) { System.out.println("Arr_01["+i+"]="+Arr_02[i]); } } }
运行结果:
传统的遍历法=v
1
2
3
4
5
6
+i+高逼格遍历=v
Arr[0]=1
Arr[1]=2
Arr[2]=3
Arr[3]=4
Arr[4]=5
Arr[5]=6
跳跃性遍历=v
Arr_01[0]=1
Arr_01[2]=3
Arr_01[4]=5
反向遍历法=v
Arr_01[5]=6
Arr_01[4]=5
Arr_01[3]=4
Arr_01[2]=3
Arr_01[1]=2
Arr_01[0]=1
数组_内存空间的划分
寄存器 ==>CUP处理
本地方法区 ==>随版本的不同
方法区
栈内存 ==>1.存储局部变量(方法中的变量,[作用域])
2.变量所属的作用域结束,该变量自动释放
堆内存 ==>存储是数组和对象(数组==对象),new建立都在堆中
特点:1.每一个实体都有首地址值
2.堆内存中每一个变量都有默认初始化值,根据类型的不同而不同。
3.垃圾回收机制
/*
*不同类型的数组默认值不一样
*byte、short、int、long 默认值:0
*float、double 默认值:0.0
*char 默认值:空字符 ‘\u0000
*boolean 默认值:false
*/
getMax()获取最值
public class Arr_getMax {//getMax获取数组的最大值 public static void main(String[] args) { int [] Arr={1,-45,-76,94,5,-99}; int max=getMax(Arr);//调用最大值方法 /*int min=getMin(Arr);调用最小值方法*/ System.out.println("max="+max); } public static int getMax(int []Arr){ int max=Arr[0];//定义变量max存储最大值并设置第一个元素为最大值 //遍历数组 for (int x = 1; x < Arr.length; x++) { if (Arr[x]>max) { //Arr、max比较 /*Arr[x]<min 最小值条件*/ max=Arr[x]; //条件成立,Arr赋值max } } return max; } }
数组排序:选择排序、冒泡排序
public class Arr_Sort {//选择排序 public static void main(String[] args) { int []Arr={123,5,79,432,76,54}; System.out.print("排序前:"); Printf_Arr(Arr); select_Sort(Arr);//调用排序方法 System.out.print("排序后:"); Printf_Arr(Arr); } //遍历打印数组方法 public static void Printf_Arr(int []Arr){ System.out.print(""); for (int i = 0; i < Arr.length; i++) { if (i!=Arr.length-1) { System.out.print(Arr[i]+"、"); }else System.out.println(Arr[i]+""); } } //排序方法 public static void select_Sort(int []Arr){ for (int i = 0; i < Arr.length-1; i++) { for (int j = i+1; j < Arr.length; j++) { /*条件Arr[i]>Arr[j]==>Arr[i]<Arr[j] 则是从大到小排序*/ if (Arr[i]>Arr[j]) { int temp=Arr[i]; Arr[i]=Arr[j]; Arr[j]=temp; } } } } }
运行结果:
排序前:123、5、79、432、76、54
排序后:5、54、76、79、123、432
public class Arr_bubbleSort { public static void main(String[] args) { int []arr={12,34,6,7,83}; System.out.print("排序前:"); printf(arr); bubbleSort(arr); System.out.print("排序后:"); printf(arr); } //遍历输出数组元素 public static void printf(int []arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); } public static void bubbleSort(int []arr){ for (int i = 0; i < arr.length-1; i++) { /* * 内循环: -1:为了避免角标越界 -i:外循环每增加一次,内循环次数递减 * */ for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]>arr[j+1])//相邻元素比较 {//值得交换 int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } System.out.print("第"+(i+1)+"次排序后:"); printf(arr); } } }
运行结果:
排序前:12 34 6 7 83
第1次排序后:12 6 7 34 83
第2次排序后:6 7 12 34 83
第3次排序后:6 7 12 34 83
第4次排序后:6 7 12 34 83
排序后:6 7 12 34 83
数组常见错误:
public class Text_Arr {//数组常见异常 public static void main(String[] args) { //当访问到数组中不存在的角标,就会发生异常 /*int Arr[]=new int[3]; System.out.println(Arr[3]);//ArrayIndexOutOfBoundsException */ //当引用型变量没有任何实体指向时,还在操作实体,发生异常 /*int Arr[]= new int[3]; Arr=null; System.out.println(Arr[0]);//NullPointerException 空指针异常 */ int Arr[]=new int[2]; System.out.println(Arr);//[I@119dc16 /*[数组 I整型 @分界线 119dc16哈希值*/ } }
二维数组
格式一:int []arr int[3][2];
格式二:int [][]arr=new int[3][2];
public class Arr_2 {//二维数组打印及求和 public static void main(String[] args) { int sum=0; int [][]arr={{1,4,3},{2,4,5},{23,5}}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { sum+=arr[i][j]; System.out.print(arr[i][j]+" "); } System.out.println(); } System.out.println("sum="+sum); } }
运行结果:
1 4 3
2 4 5
23 5
sum=47
标签:机制 增加 避免 打印 bsp length max 常见 void
原文地址:http://www.cnblogs.com/cao-yin/p/7857661.html