java中数组6_Java-6 数组

1.数组

用来存储一组相同数据类型的集合(容器)。

特点

1.数组中元素类型必须一致。

2.数组本身是引用数据类型,但是里面元素就可以是基本数据类型,也可以是引用数据类型。

3.数组的长度都一旦给定无法改变。

声明数组格式

数据类型[] 数组名

数据类型 数组名[]

数组声明

int[] arr

1.1动态数组初始化

动态初始化

// 数据类型[] 数组名 new 数据类型[长度]

int[] arr=new int[4];

数组的索引:从0开始,最大值就是数组长度减1.

给数组中元素赋值:

数组名[索引值]= 要赋的值;

demo

package Array;

public class ArrayDemo1 {

public static void main(String[] args) {

int [] arr;

arr = new int[4];

arr[2] = 4;

arr[3] = 66;

System.out.println(arr[0]);// 0

System.out.println(arr[2]);// 4

}

}

创建一个String类型4个长度数组,把四个季节存储到该数组中

package Array;

public class ArrayDemo2 {

public static void main(String[] args) {

String[] arr;

arr = new String[4];

arr[0] = "春天";

arr[1] = "夏天";

arr[2] = "秋天";

arr[3] = "冬天";

System.out.println(arr.length);

for(int i=0;i

System.out.println(arr[i]);

}

}

}

创建一个char类型的数组,把"你","好"分别存进去

package Array;

public class ArrayDemo2 {

public static void main(String[] args) {

char[] arr = new char[2]

arr[0] = '你';

arr[1] = '好';

}

}

创建一个长度10的int数组,把1-10存储进去

package Array;

public class ArrayDemo2 {

public static void main(String[] args) {

int[] arr = new int[10];

for (int i=0; i<10; i++) {

arr[i] = i+1;

}

}

}

1.2.静态初始化

给定数组中元素,由系统根据元素个数开辟空键并赋值。

格式

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素2......}

简写: 只有第一个初始化时候才可以这么书写,重新赋值不能这么写

数据类型[] 数组名 = {元素1,元素2,元素2......}

demo

int[] arr2 = new int[] {1,3,4,5,2,2,55,3};

arr2 = new int[] {3,4,6};

创建int数组,存入5个元素,求该数组元素之和,平均值

package Array;

public class ArrayDemo3 {

public static void main(String[] args) {

int sum = 0;

int[] arr = new int[] {1,6,23,5,9};

for (int i=0;i

sum += arr[i];

}

System.out.println("求和:"+ sum);// 44

System.out.println("平均值:" + (double)sum/arr.length);// 8.8

}

}

1.3数组内存分析

在java中内存分配:栈和堆,栈中存储局部变量,方法的执行。堆可以简单理解new出来的东西。

存储在堆内粗中数据类型是有默认值的,如果是引用类型为null。

07e585eeaab7f637e5add338891d990d.png

// 解析:

在我们通过new int[5] 时候会在堆开辟一个5个长度数组空间,并形成一个地址,通过在main种,int arr 指向该数组内存地址,当我们给数组内元素赋值,首先根据内存地址找到该数组堆空间位置,并修改相应的值。

1.4 数组中常见2种异常

空指针异常

package Array;

public class ArrayDemo4 {

public static void main(String[] args) {

int[] arr = null;

System.out.println(arr);

// 当用null调用里面数据和方法,会出现空指针异常

System.out.println(arr[0]);

}

}

数组角标越界异常

arr = new int[3];

System.out.println(arr[3]);

1.5数组练习案例

点名系统,从班级所有人姓名种随机抽选一个人:

package Array;

import java.util.Random;

public class ArrayDemo5 {

public static void main(String[] args) {

String[] names = new String[]{"小明","小刘","小刚","小邱","小赵"};

// 创建Random对象

Random r = new Random();

// 生成随机数 下面生成数0<=num<10

int num = r.nextInt(names.length);

System.out.println(names[num]);

}

}

1.6数组的打印及工具类

Array.ArrayDemo

package Array;

import util.ArrayUtil;

public class ArrayDemo6 {

public static void main(String[] args) {

int[] arr = {13, 15, 16,40};

String[] arr2 = {"小明", "小洪", "小刚"};

ArrayUtil.printArr(arr);

ArrayUtil.printArr(arr2);

}

}

util.ArrayUtil

package util;

public class ArrayUtil {

// 接收int类型

public static void printArr(int[] arr) {

for(int i=0;i

if (arr.length == 1) {

System.out.println("[" + arr[0] + "]");

} else if (i == 0) {

System.out.print("[" + arr[i] + ",");

}else if (i == arr.length-1) {

System.out.println(arr[i] + "]");

}else {

System.out.print(arr[i] + ",");

}

}

}

// 方法重载 接收string

public static void printArr(String[] arr) {

for(int i=0;i

if (arr.length == 1) {

System.out.println("[" + arr[0] + "]");

} else if (i == 0) {

System.out.print("[" + arr[i] + ",");

}else if (i == arr.length-1) {

System.out.println(arr[i] + "]");

}else {

System.out.print(arr[i] + ",");

}

}

}

}

1.7数组中的最值

// 主函数

package Array;

import util.ArrayMaxMin;

public class ArrayDemo7 {

public static void main(String[] args) {

// 创建一个数组

int[] arr = {23,555,32,13,1,55};

ArrayMaxMin.arrMaxMin(arr);

}

}

// 工具类

package util;

public class ArrayMaxMin {

public static void arrMaxMin(int[] arr) {

// 设置一个变量存储最大值

int max = arr[0];

int min = arr[0];

// 遍历数组用max和数组中元素比较

for(int i=0;i

if (arr[i] > max) {

max = arr[i];

}

if (arr[i]< min) {

min = arr[i];

}

}

System.out.println(max);// 555

System.out.println(min);// 1

}

}

1.8数组元素交换

package Array;

import util.ArrayUtil;

public class ArrayDemo8 {

public static void main(String[] args) {

int[] arr = new int[] {100,200};

int tmp = arr[0];

arr[0] = arr[1];

arr[1] = tmp;

ArrayUtil.printArr(arr);

}

}

1.9数组的逆序

方式1:

package Array;

import util.ArrayUtil;

public class ArrayDemo9 {

public static void main(String[] args) {

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

int tmp;

for (int i=0;i

tmp = arr[i];

arr[i] = arr[arr.length-i-1];

arr[arr.length-i-1] = tmp;

}

ArrayUtil.printArr(arr);// [8,7,6,5,4,3,2,1]

}

}

方式2:

package Array;

import util.ArrayUtil;

public class ArrayDemo9 {

public static void main(String[] args) {

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

for(int start=0,end=arr.length-1; start< end; start++,end--) {

int tmp = arr[start];

arr[start] = arr[end];

arr[end] = tmp;

}

ArrayUtil.printArr(arr);

}

}

1.10多维数组

n 维数组就是元素为n-1维数组的数目。

二维数组格式:

1.数据类型[][] 数组名 = new 数据类型[m][n]

m: 二维数组中一维数组的个数

n: 一维数组中元素个数

2. 数据类型[][] 数组名 = new 数据类型[m][];

m: 二维数组中一维数组的个数

3. 数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}}

二维数组定义方式:

方式1:

int[][] arr = new int[4][3];

System.out.println(arr);// [[I@7c75222b

System.out.println(arr[0]);// [I@4c203ea1

System.out.println(arr[0][0]);// 0

// 给第二个数组中的第二个元素赋值给100

arr[1][1] = 100;

// 打印最后一个数组中最后一个元素

System.out.println(arr[3][2]);

方式2:

// 注意:给二维数组内一维数组赋值时候,不能简写

int[][] arr2 = new int[5][];

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

arr[1] = new int[] {1,2,3};

方式3:

int[][] arr3 = new int[][] {{2,3,5,6},{4,5,3}};

System.out.println(arr3.length);// 2

System.out.println(arr3[0].length);// 4

System.out.println(arr3[0][3]);// 6

二维数组中遍历:

for(int i=0;i

ArrayUtil.printArr(arr3[i]);

}

// [2,3,5,6]

// [4,5,3]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值