数组的概念,特点以及数组在内存的分析,数组中两个元素的互换位置案例,数组中逆序排列的案例,数组中指定两个元素互换位置案例

数组的概念

概念

:用来存储一组相同数据类型的集合
引用数据类型:类 接口 数组

特点:

1.数组中的类型是唯一确定的.所有元素必须一致
2.数组本身是属于引用数据类型的,但是里面的元素既可以是基本数据类型也可以是引用数据类型
3.数组的长度一旦给定就无法改变

数组的两种命名格式:

1.声明类型:
数据类型[] 数组名;
数据类型 数组名;
2.数组的动态初始化
给定数组的长度由系统分配空间和初始值;
3.格式:数据类型[ ] 数组名=new 数据类型[长度];
4. 数组中的数据的存取
5. 数组的索引:数组中元素的序号
从0开始,最大值就是数组的长度减1
数组的元素赋值
数组名[索引]=赋值;
取值为:数组名[索引值]

数组的内存分析

栈:存储局部变量,方法的执行,没有初始值
堆:new出来的东西,有初始值
注意:如果堆中没有栈中变量指向时,就会成为垃圾等待GC自动回收

数组的静态初始化:

静态初始化"
给定数组中的元素,由系统根据元素个数而开辟空间并且赋值"
格式:数据类型[] 数组名= new 数据类型[]{元素1,元素2,元素3…}
简写的形式为:数据类型[]数组名={元素1,元素2,元素3…},注:只有第一次给元素赋值的时候可以这么写,重新给元素赋值不能这么写
获取数组的长度:数组名.length

数组中常见的两种异常:

第一种:空指针异常:java.lang.NullPointerException null调用里面的东西
第二种:数组角标越界异常:java.lang.ArrayIndexOutOfBoundsException 索引超出了最大范围

数组的案例:

点名系统: 从班级所有人的姓名中随机抽选出来一个

  •  1. 构建一个String[] 用来存储全班同学的姓名
    
  •  2. 生成一个随机数,作为索引值,从数组从把该索引对应的元素取出来
    
  • a. 如何生成一个随机数
  •  1. 创建对象
    
  •  	Random 对象名 = new Random();(导包)
    
  •  2. 生成随机数:
    
  •  	对象名.nextInt(int bound);//bound: 范围  
    
  •  				nextInt(10);// [0,10)
    

代码块:
public class TextDemo22 {
public static void main(String[] args) {
String[] st = {“张晓小”, “丁行行”, “靳栋”, “杨志远”, “胡辣汤”, “牛肉面”, “新疆盖饭”, “回锅肉”, “葱爆羊肉”};

    for (int j = 0; j <st.length ; j++) {
        Random rd = new Random();
        int i = rd.nextInt(st.length);//表示生产随机数的范围,一般指的是数组的边界
        
        System.out.println(st[i]);
    }
}

}

数组的遍历:

案例, 打印出来的形式为
[1,2,3,4,5,6,7]

数组的逆序

//数组的逆序
//思路:数组的逆序就是第一个元素和最后一个元素互换位置,第二个元素与倒数第二个元素的互换位置,以次类推
public class TestDemo44 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(“逆序之前的数组为:”);
ArrayUtil.arrprint(arr);
int temp=0;
for (int i = 0; i <arr.length-1 ; i++) {
temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
System.out.println(“逆序之后的数组为:”);
ArrayUtil.arrprint(arr);

}

}

数组中两个元素的互换位置

代码:
//将数组中的两个元素互换位置
public class TextDemo4 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    System.out.println("请输入两个你要互换位置的索引");
    System.out.println("请输入第一个你要互换元素位置的索引号");
    Scanner sc = new Scanner(System.in);
    int i = sc.nextInt();
    System.out.println("请输入第二个你要互换位置的索引号");
    int j = sc.nextInt();
    int temp=0;
    if (i < 0||i>ints.length-1||j<0||j>ints.length-1) {
        System.out.println("超出索引范围,退出程序");
    }else{
        System.out.println("交换前的数组为");
        ArrayUtil.arrprint(ints);
        temp=ints[i];
        ints[i]=ints[j];
        ints[j]=temp;
        System.out.println("两个元素交换后的顺序为");
        ArrayUtil.arrprint(ints);
    }

}

}

数组打印类型的封装

public class TextDemo33 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7};
// ArrayUtil.getMaxAndMin(ints);
System.out.print("[");
for (int i = 0; i <ints.length; i++) {
if (i == ints.length-1) {
System.out.print(ints[i]+"]");
}else{
System.out.print(ints[i]+", ");
}
}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值