Javase学习第五天

Posted 艺海浮台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javase学习第五天相关的知识,希望对你有一定的参考价值。

数组

概念

是存储同一种数据类型多个元素的集合。它是在内存中开辟出的一段空间,这些空间在使用上是连续的,根据连续的下标值可以访问所有数组元素。

数组的类型:基本数据类型、引用数据类型;

定义格式

1、数据类型[] 数组名;推荐使用。

2、数据类型 数组名 [];

数组初始化

定义:

为数组中的数组元素分配内存空间,并为每个数组元素赋值 基本数据类型(byte、short、int、long、double、float)初始值为0;

Boolean初始化值为false;

应用数据类型(类、接口、数组)初始值为null;

方式分为:动态初始化、静态初始化两种

过程:

动态:

数组创建和元素的赋值分开进行;先指定数组长度,由系统为数组分配默认初始值,可在以后再给元素赋其他值;

格式: 数据类型[] 数组名=new 数据类型[数组长度]; 分为三个步骤:

1、在栈空间定义一个变量(数组名),它没有指向任何值,它的值为null;

2、在堆空间中开辟出一堆空间,可以存放数组长度的变量,并将其中的元素赋初始值;

3、将数组的地址赋值给栈中的变量,也即将变量(数组名)指向它的首地址,也就是第一个值的地址。 注意:数组名(变量)的值是一个首地址;

静态:创建数组的同时进行元素赋值

java中内存分配

程序为了提高效率,对数据进行不同的空间分配,主要有5个区域:

1、堆:存放的是所有new出来的东西(包括成员变量);每个变量都有默认值;堆内存使用之后就成了垃圾。

2、栈:存放的是局部变量;

3、方法区:(后面补充)

4、本地方法区:和系统相关;

5、寄存器:供CPU使用

同类型数组变量之间互相赋值情况

数组常出现的异常

数组索引越界(ArrayIndexOutOfBoundsException): 访问到数组中的不存在的索引时发生,索引值超过了索引值的范围:-1,大于等于数组长度等;

空指针异常(NullPointerException):数组引用变量没有指向实体,且在操作实体中的元素;

数组元素逆序(把元素对调)

 1 /**
 2 数组元素逆序
 3 
 4 */
 5 class Rev{
 6     public static void main(String []args){
 7         int [] a={1,2,3,4,5,6,7};
 8         Revs(a);
 9         Array(Revs(a));
10     }
11     public  static int [] Revs(int [] arr){
12         
13         for(int i=0;i<arr.length/2;i++){
14             int tem=arr[i];
15             arr[i]=arr[arr.length-1-i];
16             arr[arr.length-1-i]=tem;
17         }
18         return arr;
19     }
20 public static void Array(int [] arr){
21     System.out.print("["+" ");
22     for(int i=0;i<arr.length;i++){
23         if(i==arr.length-1){
24             System.out.print(arr[i]+"]");
25         }
26         else
27             System.out.print(arr[i]+",");
28     }
29 }
30 }

 

二维数组

格式:

数据类型[][] 变量名=new 数据类型[m][n];

m表示这个二维数组有多少个一维数组; n表示每一个一维数组的元素个数;

实例: int[][]arr=new int[3][2];

定义了一个二维数组arr;-->其有3个一维数组,名称是arr[0]、arr[1]、arr[2];-->每个一维数组有2个元素,可以通过arr[m][n]来获取。

另一格式:

数据类型[][]变量名=new 数据类型 [][]{{元素...},{元素...},,,{元素...}};

int[][]arr={{1,2,3},{4,5},{6}};

二维数组内存示意图

案例:

 1 /**
 2 定义一个int数组,5个元素,从键盘输入5个int值,保存到这个数组中,然后编写三个方法:分别用来对一个int型数组求最大值,最小值,平均值(注意返回值类型),调用这三个方法对输入的数组进行计算
 3 */
 4 import java.util.Scanner;
 5 class Calcu{
 6     public static void main(String []args){
 7      Scanner s=new Scanner(System.in);
 8     System.out.println("input 1th num: ");
 9     int a=s.nextInt();
10     System.out.println("input 2th num: ");
11     int b=s.nextInt();
12     System.out.println("input 3th num: ");
13     int c=s.nextInt();
14     System.out.println("input 4th num: ");
15     int d=s.nextInt();
16     System.out.println("input 5th num: ");
17     int e=s.nextInt();
18     int [] arr={a,b,c,d,e};
19     System.out.println("该数组的最大值是:"+getMax(arr));
20     System.out.println("该数组的最小值是:"+getMin(arr));
21     System.out.println("该数组的平均值是:"+getAve(arr));
22     
23 }
24 //求最大值
25     public static int getMax(int[] arr){
26         int max=arr[0];
27         for(int i=1;i<arr.length;i++){
28             if(max<arr[i]){
29                 max=arr[i];
30                 arr[i]=max;
31             }
32         }
33         return max;
34     }
35     //求最小值
36     public static int getMin(int[] arr){
37         int min=arr[0];
38         for(int i=1;i<arr.length;i++){
39             if(min>arr[i]){
40                 min=arr[i];
41                 arr[i]=min;
42             }
43         }
44         return min;
45     }
46     //求平均值
47     public static double getAve(int[] arr){
48         double sum=0.0;
49         for(int i=0;i<arr.length;i++){
50             sum +=arr[i];
51             
52         }
53         return sum/arr.length;
54     }
55 }

 

 

 

 

以上是关于Javase学习第五天的主要内容,如果未能解决你的问题,请参考以下文章

零基础自学javase黑马课程第十五天

javaSE第十五天

python3语法学习第五天--函数

javaSE第二十五天

第五天学习java

汇编学习--第五天