数组
1.数组的概念
数组是一组相同类型的变量
2.定义数组的格式
第一种是int[] a=new int[36];这样写也是正确的。Int a[]=new int[36];
第二种是int[] a={1,2,3,4,5,6};
3.打印成个数组的两种方法
例:int[] arr={10,20,30,50,88};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
for(int a:arr){
System.out.println(a);
}
3.数组的拷贝
System.arraycopy(源数组, 源数组, 目标数组, 目标数组放置的开始位置的下标, 数组拷贝的长度);
4.栈和堆
栈内存和堆内存是Java虚拟机分配的两块内存空间。
定义基本数据类型变量在栈内存中开辟空间,定义引用数据类型在堆内存中开辟空间。
在堆中的变量有默认值,栈中的变量没有默认初始化值。
以下类型数据默认值分别为:
|
类型 |
byte |
short |
int |
long |
float |
double |
char |
boolean |
|
默认值 |
0 |
0 |
0 |
0L |
0.0f |
0.0d |
‘\u0000’ |
fal |

如图所示,当我们在创建一个数组时,使用语句int[] arr1=new int[]{1,2,3,4};等号右边,我们使用new关键词在堆内存开辟一个区域,存储数据1,2,3,4。此时该区域会有一个地址值123,通过等号将地址赋值给栈内存的arr1变量。我们通过arr1中的地址值访问堆内存中的数据。
如果我们声明一个数组int[] arr2;
当我们使用语句arr2=arr1;此时,arr1存储的地址值将会赋给arr2,
如图所示,我们通过arr2中的地址值也可以访问堆内存中的数据。
而且因为我们访问的是同一个内存区域,所以当我们用arr1来操作数组数据,堆内存中的数据改变后,用arr2访问看到的也是改变后的结果。
创建数组,循环为数组赋值,数组循环输出
1 public class MyFirst{ 2 public static void main(String[] args){ 3 int [] java=new int[36];//new 创建 4 //数组类型[] name=new int[26]26位数组 5 java[0]=9;//下标 6 java[1]=2; 7 java[2]=4; 8 java[3]=5; 9 java[35]=3; 10 int b=0; 11 for(int i=0;i<36;i++){ 12 b++; 13 java[i]=b; 14 System.out.print(java[i]+"\t"); 15 } 16 } 17 }
循环录入成绩,查看成绩,退出
1 import java.util.Scanner; 2 public class MyFive{ 3 public static void main(String[] args){ 4 Scanner in= new Scanner(System.in); 5 boolean flag=true; 6 int[] arr1=new int[36]; 7 while(flag){ 8 System.out.println("1:查看成绩 2:录入成绩 3:退出"); 9 int i=in.nextInt(); 10 if(i==1){ 11 show(arr1); 12 13 } 14 else if(i==2){ 15 System.out.print("请输入学号:"); 16 int xh=in.nextInt(); 17 System.out.print("请输入成绩:"); 18 int cj=in.nextInt(); 19 change(arr1,xh,cj); 20 } 21 else if(i==3){ 22 flag=false; 23 } 24 } 25 } 26 public static void show(int[] arr){ 27 for(int i:arr){ 28 System.out.println(i); 29 } 30 } 31 32 public static void change(int [] arr,int i,int cj){ 33 arr[i]=cj; 34 } 35 }
数组方法赋值
1 public class MyFouth{ 2 public static void main(String[] args){ 3 int [] arr1={1,2,3,4,5,6}; 4 change(arr1);//方法调用的时候,相当于实参对形参的赋值 5 //arr=arr1 6 System.out.println("main 方法"+arr1[2]); 7 int a1=10; 8 change2(a1); 9 System.out.println(a1); 10 } 11 public static void change(int[] arr){//引用数据类型,方法内部的改变能影响原始数据 12 arr[2]=10000; 13 System.out.println("change 方法内部"+arr[2]); 14 } 15 public static void change2(int a){//基本数据类型,方法内部改变,不能影响原始数据 16 a=100; 17 System.out.println(a); 18 } 19 }
数组遍历:
1 public class MySecond{ 2 public static void main(String[] args){ 3 //int[] arr=new int[36]; 4 int[] arr={10,20,30,40,50,80}; 5 for(int i=0; i<arr.length;i++){ 6 System.out.println(arr[i]); 7 } 8 //遍历的方式访问数组元素 9 for(int a:arr){ 10 System.out.println(a); 11 } 12 } 13 }
1 public class MyThird{ 2 public static void main(String[] args){ 3 int[] a={1,2,3,4,5,6,7,8,9,10}; 4 //int[] b={0,0,0,0,0,0,0,0}; 5 int b[]=new int[13]; 6 //数组的copy 7 System.arraycopy( 8 a, 0,//第一个:原数组;第二个:原数组开始copy的下标 9 b, 0,//第三个:目标数组;第四个:目标数组放置的开始位置的下标 10 5);//数组copy的长度 11 System.arraycopy(a,5,b,8,5); 12 for(int i:b){ 13 System.out.println(i); 14 } 15 } 16 }

浙公网安备 33010602011771号