六、数组+遍历+应用

1 数组:存储一组相同数据类型的 容器

1.1 分类

(1)静态初始化:知道数组内容,不知道长度

int[] arr1=new int[]{12,13,13}; 
int[] arr2={12,1,2};

地址值:

System.out.println(arr1);    //[I@4554617c

[ :当前是数组

I :数组里的元素是int型

@:固定格式的间隔符号

4554617c:真正的地址值

(2)动态初始化:知道数组长度,不知道内容

int[] arr3=new int[3];

1.2 特点

① 存储数据的类型必须一致 -- 保证了元素的安全性 , 存储数据不够灵活

② 使用数组进行多个数据存储时 , 必须标明数组的长度 -- 长度固定

2 异常解读

  • Exception:异常

  • in thread "main":主线程内

  • java.lang...:内部已经写好的异常类,出现异常时会提示当前出现的异常类型

  • :数据:表示异常出现的内容

  • at...:异常出现的位置

3 数组的遍历

int[] x1 = {1, 4, 6, 7};

①写下标,输出数组各个值

for (int i = 0; i < x1.length; i++) { 
    System.out.print(x1[i]+" ");    //1 4 6 7
}

②不用写下标,直接输出数组各个值


System.out.println(Arrays.toString(x1));    //[1,4,6,7]

③不用写下标,直接遍历输出数组各个值

for (int ming:x1){ 
    System.out.print(ming+" ");    //1 4 6 7
}

4 二维数组

(1)直接赋值

int[] sum1 = {1,2,3};

int[] sum2 = {1,2,3};

int[] sum3 = {1,2,3};

int[] [] sum={sum1,sum2,sum3};

(2)匿名赋值

int[] [] sum = {sum1,new int[3],new int[]{1,4,6}};

5 直接复制

(1)从头开始复制:Arrays.copyOf(源数组名,新数组长度)

//数据类型[] 新数组名=Arrays.copyOf(源数组名,新数组长度); 
//新的长度<=源数组:正常复制 
//新的长度>源数组:不足的地方以默认值填补 
int[] num1={1,1,1,1,1,1,1}; 
int[] num2=Arrays.copyOf(num1,num1.length); 
System.out.println(Arrays.toString(num2)); 
int[] num3=Arrays.copyOf(num1,10); 
System.out.println(Arrays.toString(num3)); 
int[] num4 = Arrays.copyOf(num1, 2); 
System.out.println(Arrays.toString(num4));

(2)从指定位置开始复制:System.arraycopy(源数组,srcPos,新数组,destPos,复制的长度)

需要考虑数组下标越界的问题

//System.arraycopy(源数组,int srcPos,新数组,int destPos,int length) 
//srcPos:从源数组中指定位置开始复制 
//destPos:在新数组中指定位置开始复制 
//注意数组下标越界问题
int[] num5=new int[10]; 
System.arraycopy(num1,0,num5,0,3); 
System.out.println(Arrays.toString(num5));

6 字节数组:把字节信息转换为字符串

byte[] bytes = {97,98,99,100};

String s = new String(bytes);

System.out.print(s);    //abcd

7 字符数组创建字符串

char[] chs = {'a','b','c','d'};

String s = new String(chs);

System.out.print(s);    //abcd

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-Q-W

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值