学习Java的第七天

11 篇文章 0 订阅

一维数组

       数组是存储数据的空间(装数据的容器),数组中可以存储多个(具体多少个由你来定义)相同类型的数据,内存会给这个数组分配一个内存地址。

1、数组声明:

        数据类型[] 数组名;   或者  数据类型 数组名[]

2、分配空间(告诉数组里能够存储数据的个数):

数组名 = new 数据类型[数组长度];
        nums1 = new byte[3];
        nums2 = new short[4];
        nums3 = new int[2];
        nums4 = new long[5];
        nums5 = new float[6];
        nums6 = new double[3];
        chas1 = new char[3];
        bools1 = new boolean[4];
        strs1 = new String[3];
  3、赋值:将数据存储在数组的指定位置,位置通过下标来控制,下标从0开始:数组名[下标] = 数据;
        nums3[0] = 10;
        nums3[1] = 20;
        注意:nums3[2] = 100;ArrayIndexOutOfBoundsException 数组下标越界异常,nums3数组的长度为2,下标从0-1,下标不可能超过1,所以你写2,就越界
4、操作数组中的数据:通过数组名[下标]来操作
        System.out.println(nums3[0]);
        nums3[0]+=20;
        System.out.println(nums3[0]);
        System.out.println(nums3[1]);

5、声明数组和分配空间合并写:

数据类型[] 数组名 = new 数据类型[数组长度];  或者 数据类型 数组名[] = new 数据类型[数组长度];

6、声明数组、分配空间、赋值合并一步写:
        数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n};  或者  数据类型 数组名[] = new 数据类型[]{数据1,数据2,...,数据n};  

注意:{}前面的[]中不能写数组长度

        char[] chas1 = new char[]{'你','好'};
        boolean[] bools1 = new boolean[]{false,false,true,false};

7、声明数组、分配空间、赋值合并写可以简写:
        数据类型[] 数组名 = {数据1,数据2,...,数据n};  或者    数据类型 数组名[] = {数据1,数据2,...,数据n};
        int[] nums = {10,52,46,78,91,66};
        double[] nums2 = {12.5,56.5,78,16.55,9};
8、直接输出数组名称,输出的是数组的内存地址值
        System.out.println(nums);

         运行结果:[I@7910769b

9、获取数组中元素的个数:数组名.length
        int size =nums.length;

10、数组遍历可以用增强for循环:
语法结构:
                 for(数据类型 变量名:数组名){
                      操作变量名
                  }
执行规律:
         将数组中的元素按照下标顺序依次取出来存储在变量中,通过操作变量就可以操作数组中的元素 。

11、输出数组中的最大值或者最小值
思想:
         1)假设数组中的第一个元素为最大值
         2)依次将数组中的元素取出来与这个假设的最大值进行比较,如果取出来的元素比这个假设的最大值大,那么这个取出来的值暂时成为新的最大值
         3)如果取出来的元素比假设的最大值小,就向后继续进行比较 

练习:

// 输出数组中的最大值或者最小值
		int nums[]={23,26,25,97,58,78,95,43,12};
//		假设最大值为列表的第一个元素
		int max=nums[0];
		int min=nums[0];
		int temp;//用来暂存数据完成两个数据数值的交换
		for(int i=0;i<nums.length;i++){
			if(nums[i]>max){
				temp=max;//数据交换
				max=nums[i];
				nums[i]=temp;
			}
		}
		System.out.println("数组的最大值是:"+max);
		for(int i=0;i<nums.length;i++){
			if(nums[i]<min){
				temp=min;//数据交换
				min=nums[i];
				nums[i]=temp;
			}
		}
		System.out.println("数组的最小值是:"+min);

12、Arrays中方法的用法:

       (1) boolean equals(数组名1,数组名2):比较两个数组中的元素是否完全一致(比较对应下面上的元素是否相同),如果所有元素值都相同,返回true,否则返回false。
        boolean result1 =Arrays.equals(nums1, nums2);
        System.out.println("两个数组完全相同:"+result1);
       (2) String toString(数组名):将数组转换成字符串输出。
        int[] nums3 = {12,25,96,43,11,56};
        String result2 =Arrays.toString(nums3);
        System.out.println(result2);//"[12, 25, 96, 43, 11, 56]"
       (3)void fill(数组名,数据):将数组中所有的元素值替换为你指定数据
        String[] strs ={"hello","java,","html","js"};
        Arrays.fill(strs, "qwert");
        System.out.println(Arrays.toString(strs));
        (4)数据类型[] copyOf(数组名,长度):赋值指定数组中指定长度的元素,生成一个新的对应类型的数组,当复制的长度小于等于被复制数组长度的时候,取数组里的元素,如果复制的长度大于被复制的数组长度,不够的元素用默认值补充
        char[] chs = {'q','w','e','r','t','y','u'};
        char[] copyChs=Arrays.copyOf(chs, 9);
        System.out.println(Arrays.toString(copyChs));
        (5)数据类型[] copyOfRange(数组名,起始下标,结束下标):复制指定数组中起始下标到结束下标之间的元素,注意,包括起始下标的元素,不包括结束下标的元素
        char[] copyChs2=Arrays.copyOfRange(chs, 2, 4);
        System.out.println(Arrays.toString(copyChs2));
        (6)int binarySearch(int[] a,int key)使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过 sort(int[]) 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。 如果你要查找的元素值不在数组中,会返回一个负值
        int[] nums4 = {11,56,76,9,32,42,9,55};
        Arrays.sort(nums4);
        System.out.println(Arrays.toString(nums4));
        int index =Arrays.binarySearch(nums4, 11);
        System.out.println("你要找的元素的下标:"+index);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值