数组

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关键词在堆内存开辟一个区域,存储数据1234。此时该区域会有一个地址值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 }

 

posted @ 2016-12-22 10:03  比比多味豆  阅读(242)  评论(0)    收藏  举报