Java(2):数组(1)

来源:互联网 发布:学服装设计软件 编辑:程序博客网 时间:2024/06/06 17:50

日期:2017/10/10

一、Java数组的相关知识

1.1  一维数组


(1)数组:存储同一种数据类型的多个元素的集合,每个元素都有编号,从0开始,最大编号是数组的长度-1
(2)数组的格式:
        A:数据类型[] 数组名;
        B:数据类型 数组名[];
(3)数组的初始化:
        A:动态初始化 只给长度,不给元素
                int[] arr = new int[3];
        B:静态初始化 不给长度,给元素
                int[] arr = new int[]{1,2,3};
                简化版:int[] arr = {1,2,3};
(4)java中的内存分配
        A:栈 存储局部变量
        B:堆 new出来的
        C:方法区
        D:本地方法区
        E:寄存器
(5)两个常见小问题
        A:数组越界
        B:空指针异常
(6)数组常见操作 获取数组长度:数组名.length
        A:数组遍历
        B:获取最值
        C:数组反转
        D:查表法
        E:查找指定元素第一次出现的索引

练习代码:


package com.java.myself;import java.util.Scanner;public class ArrayTest {public static void main(String[] args){int[] arr = {1,2,3,4,6,5,7,8};String[] strarray = {"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};//查表法Scanner sc = new Scanner(System.in);System.out.println("Please input num(1-7): ");int index = sc.nextInt();System.out.println("Your searching date is: "+ strarray[index]);//printArray(arr);//getMax(arr);//reverse(arr);int index1 = indexOfArray(arr,8);System.out.println(index1);}public static void printArray(int[] arr) {System.out.print("[");for (int i=0; i<arr.length; i++) {if (i <= arr.length-1) {System.out.print(arr[i] +", ");}System.out.print(arr[i]);}System.out.println("]");}//最值public static int getMax(int[] arr) {int max = arr[0];for (int i=0; i<arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}public static void reverse(int[] arr){for (int start=0,end=arr.length-1; start<=end; start++,end--){int temp = arr[start];arr[start] = arr[end];arr[end] = temp;}int i = 0;while(i<arr.length){System.out.println(arr[i]);i++;}}public static int indexOfArray (int[] arr,int key){int index = -1;for (int i=0; i<arr.length; i++){if (arr[i] == key){index = i;}}return index;}}



1.2 二维数组


(1)二维数组:元素是一维数组的数组。
(2)格式:
A:数据类型[][] 变量名 = new 数据类型[m][n];
B:数据类型[][] 变量名 = new 数据类型[m][];
C:数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},{元素...}};
  数据类型[][] 变量名 = {{元素...},{元素...},{元素...}};
(3)常见操作:
A:数组遍历
B:求和案例

练习代码:

package com.test;public class TwoDemension {public static void main(String[] args){int[][] arr = new int[3][2];System.out.println(arr);//[[I@7d3598c3System.out.println(arr[0]); //[I@57125f92System.out.println(arr[2]);System.out.println(arr[1]);System.out.println("***********");int [][] arr1 = new int[3][];System.out.println(arr1);//[[I@7d3598c3System.out.println(arr1[0]);//nullSystem.out.println(arr1[2]);//nullSystem.out.println(arr1[1]);//null/* * 从输出log可以看到,当二维数组没有声明二维元素数量时,内存并未分配相应的 * 空间,当二维元素确定数量后,首地址便会被分配,即Java的堆内存。 * */arr[0] = new int[3];arr[1] = new int[1];arr[2] = new int[2];System.out.println(arr[0]);System.out.println(arr[2]);System.out.println(arr[1]);arr[2][1] = 100;arr[0][2] = 200;System.out.println(arr[0][2]);System.out.println(arr[2][1]);System.out.println("***********");Demo demo = new Demo();demo.test(null);}}class Demo{public static void test(String[] args){/* * 当初始化时直接分配变量时,内地址也会分配,跟第一个情况一样。 * */int [][] arr = {{4,5,6},{5,5,5,6},{5,4}};System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}}

输出情况:

[[I@15db9742[I@6d06d69c[I@7852e922[I@4e25154f***********[[I@70dea4enullnullnull[I@5c647e05[I@33909752[I@55f96302200100***********[[I@3d4eac69[I@42a57993[I@75b84c92[I@6bc7c054

END.

原创粉丝点击