数组的定义及基本用法

1.1开发中为啥要使用数组
如果开发中出现了大量的同一个类型的数据,按照现在所学的知识点,声明变量的话。如果一个变量存一个数据的话,那么就会需要多个变量了,相当麻烦。
使用数组: 只需要一个变量,然后数组中存很多的数据
数组想成 一个容器。
int[] arr = {1,2,3,4,5,6};
1.2数组在Java中如何定义的
变量定义:
数据类型 变量名字 = 值;
数组定义:
数据类型[] 数组名字 = 数组的值;
数组详细的语法格式:
第一种:
数据类型[] 数组的名字 = {值1, 值2, 值3,...}; 或 数据类型 数组的名字 []= {值1, 值2, 值3,...};
第二种:
数据类型[] 数组的名字 = new 数据类型[容量]; 或者 数据类型 数组的名字[] = new 数据类型[容量];
第一种和第二种区别: 第一种即声明了数组又对数组赋值了
第二种只是声明空的数组而已,暂时还没有赋值
第三种:【很少】
语法格式:
数据类型[] 数组的名字 = new 数据类型[]{值1, 值2, 值3,...};
其实是第一种的完全写法


import java.util.Arrays;

public class Demo4 {
	public static void main(String[] args) {
		//数组第一种声明方式 :数据类型[]   数组的名字 = {值1, 值2, 值3,...};
		int[] arr = {23, 34, 12, 15};
		System.out.println(arr);//[I@15db9742  内存地址   但是数据看不到 那咋办?
		System.out.println(Arrays.toString(arr));//  将一个内存地址形式的数据变成 人类可以看懂的
		//[23, 34, 12, 15]
		
		String[] strs = {"狗蛋","文博", "广瑞"}; 
		System.out.println(strs);//@6d06d69c
		System.out.println(Arrays.toString(strs));//[狗蛋, 文博, 广瑞]
		
		boolean[] bools = {true, true, false, true};
		System.out.println(bools);//[Z@7852e922
		System.out.println(Arrays.toString(bools));//[true, true, false, true]
		
		float[] f2 = {12.3f, 45.6F};
		
		
		//声明一个char类型的数组
		char[]  chs = {'a', '中', '9'};
		System.out.println(chs);//a中9  这个比较特殊 打印不是地址  是数组中值组成的
		
	}
}


import java.util.Arrays;

public class Demo5 {
	public static void main(String[] args) {
		
		//第二种声明方式: 数据类型[]   数组的名字 = new  数据类型[容量];
		int[] arr = new int[3];//在声明一个数组 ,且容量为3  只能存放3个数据  空的数组
		//arr = {0,0,0};
		System.out.println(arr);//内存地址
		System.out.println(Arrays.toString(arr));//[0, 0, 0]
		//此时是空的数组  
		String[] strs = new String[4];
		System.out.println(strs);
		System.out.println(Arrays.toString(strs));//[null, null, null, null]
		//这种方式的声明 是好比弄好了桌子 空桌子  
		

		
		
		
	}
}


public class Demo6 {
	public static void main(String[] args) {
		char[] chs = new char[] {'a', '啊', 'o'};
		System.out.println(chs);//a啊o
		
		
	}
}
1.3第二种声明方式 是空的数组,如何赋值


import java.util.Arrays;

public class Demo7 {
	public static void main(String[] args) {
		//第二种数组的声明方式
		int[] arr = new int[3];//arr = {0,0,0};
		//对这个空的数组进行的的赋值
		arr[0] = 23;//将23d赋值给 下标为0 的arr这个数组  arr = [23, 0, 0]
		//System.out.println(Arrays.toString(arr));
		arr[1] = 45;
		//System.out.println(Arrays.toString(arr));//arr = [23, 45, 0]
		arr[2] = 678;
		System.out.println(Arrays.toString(arr));//arr = [23, 45, 678]
		//arr[3] = 250;  这个下标越界
		//ArrayIndexOutOfBoundsException   数组下标越界
		//System.out.println(Arrays.toString(arr));
		
		
		System.out.println("=========");//arr = [23, 45, 678]
		/**
		 * i=0  0<3  true   arr[0] = 89   arr = [89, 45, 678] i++
		 * i=1 1<3  true  arr[1] = 90 arr=[89, 90, 678] i++
		 * i=2 2<3  true  arr[2]= 91  arr =[89, 90, 91] i++
		 * i=3 3<3 false  循环结束以后  arr =[89, 90, 91]
		 */
		for (int i = 0; i < 3; i++) {
			arr[i] = 89 + i;
		}
		
		System.out.println(Arrays.toString(arr));//[89, 90, 91]
		
	}
}

回顾上午的内容

1.数组的声明
	1. 数据类型[]   数组的名字 = {值1, 值2,...};
		int[] arr = {1,2,3,4};
		sout(arr)  内存地址
		sout(Arrays.toString(arr))//可以看懂这个数据
	2.数据类型[]  数组的名字 = new 数据类型[容量];
		int[] arr = new int[5];  意味着空的数组只能放5个数据
	3.数据类型[]  数组的名字 = new 数据类型[]{值1, 值2, ...};
2.数组赋值
	通过数组的下标(索引)进行赋值
	int[] arr = new int[3];
	arr[0] = 90;
	arr[1] = 190;
	arr[2] = 89;
	arr[3] = 810;//这个地方会出问题的
	
	
1.4对数组进行取值
通过下标来取值


public class Demo8 {
	public static void main(String[] args) {
		int[] arr = {32, 45, 89, 12, 999, 5667};
		//获取数组中的值
		System.out.println(arr[0]);//32
		System.out.println(arr[1]);//45
		System.out.println(arr[2]);//89
		System.out.println(arr[3]);//12
		System.out.println("==============");
		
		for (int i = 0; i < 4; i++) {
			//i的循环的值 刚好作为数组的下标
			System.out.println(arr[i]);
		}
		
		//数组.length    数组的长度
		System.out.println(arr.length);//  arr的长度    4
		
		System.out.println("---------------");

		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		
		
		String[] strs = {"张三", "狗蛋", "麻子", "嘻嘻"};
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}
		
	}
}
1.5二维数组【了解】
[1,2,3,4] 一维数组 排成一条线
语法格式
数据类型[][] 数组名字 = new 数据类型[容量][荣量];
[
[1,2,3,4]
[5,6,7,8]
[8,9,1,2]
]

78

89

100

250

101

99



import java.util.Arrays;

public class Demo9 {
	public static void main(String[] args) {
		int[][] arr = new int[2][3];
		
		arr[0][0] = 78;
		arr[0][1] = 89;
		arr[0][2] = 100;
		arr[1][0] = 250;
		arr[1][1] = 101;
		arr[1][2] = 99;
		
		//第一个[]  是行  第二个[] s是列
		//取数据  使用循环来取
		for (int i = 0; i < 2; i++) {//控制行
			for (int j = 0; j < 3; j++) {//控制列
				
				System.out.println(arr[i][j]);
			}
		}
		
		
		
	}
}
1.6数组可以 作为方法的参数
方法的参数 可以是哪些数据类型? 八大基本数据类型 和String
同理 数组也是可以作为方法的参数的


public class Demo10 {
	public static void main(String[] args) {
		int[] arr1 = {1,2,3,4};
		printArr(arr1);
	}
	//方法 的参数  int  a ,   String str   , int[] arr;
	public static void printArr (int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
	//在main主函数中 声明一个数组变量  这个数组有值,  然后通过方法 printArr 将数组的值(arr1)传递
	//给形参(arr) ,然后在方法中 将arr通过for循环进行遍历
}


import java.util.Arrays;

public class Demo11 {

	public static void main(String[] args) {
		int[] arr2 = new int[3];//arr2 = {0,0,0};
		setArr(arr2);//arr2 = {89, 90, 91}
		System.out.println(Arrays.toString(arr2));//{89, 90, 91}
	}
	//准备对数组进行赋值
	public static void setArr (int[] arr) {//arr必须是空的数组 {0,0,0}
		for (int i = 0; i < arr.length; i++) {
			arr[i] = 89 + i;
		}
		//arr = {89, 90, 91}
	}
}


import java.util.Arrays;
import java.util.Scanner;

public class Demo11 {

	public static void main(String[] args) {
		int[] arr2 = new int[3];//arr2 = {0,0,0};
		setArr(arr2);//arr2 = {89, 90, 91}
		System.out.println(Arrays.toString(arr2));//{89, 90, 91}
	}
	//准备对数组进行赋值
	public static void setArr (int[] arr) {//arr必须是空的数组 {0,0,0}
		Scanner scanner = new Scanner(System.in);
		
		/**
		 * i=0  0< 3  打印 :  请输入第1数   在控制台中输入了87   ===》  scanner.nextInt()=87  执行
		 * 				arr[0] = 87    arr = {87, 0,0}  i++
		 * i=1 1<3  打印:  请输入第2数   在控制台中输入 100  scanner.nextInt()=100
		 * 				arr[1] = 100  arr = {87,100, 0} i++
		 * i=2 2<3  打印:  请输入第3数  在控制台中输入  190  scanner.nextInt();=190
		 * 				arr[2] = 190 arr = {87, 100, 190}; i++
		 * i=3 3<3 false
		 */
		for (int i = 0; i < arr.length; i++) {
			System.out.println("请输入第" + (i + 1) + "数");
			arr[i] = scanner.nextInt();
			//arr[0] = 100   arr = {100,0,0}
			//arr[1] = 90    arr = {100, 90, 0}
			//arr[2] = 20    arr={100, 90, 20}
			
		}
		//arr = {89, 90, 91}
	}
}
1.7数组可以作为方法的返回值
方法的返回值可以是八大基本数据类型 和String ,数组也是作为返回值的


import java.util.Arrays;

public class Demo14 {

	public static void main(String[] args) {
		int[] arr = {9, 8, 7, 6};
		int[] arr2 = reverse(arr);
		System.out.println(Arrays.toString(arr2));
	}
	{1,2,3,4}  =>  {4,3,2,1}
	public static int[] reverse (int[] arr) {
		int[] arr1 = new int[arr.length];//创建了一个空的数组 长度 和 arr一样的
		for (int i = 0, j = arr.length - 1; i < arr.length; i++, j--) {
			arr1[j] = arr[i];
		}
		return arr1;
	}
}

案例:需求: 定义一个方法,找出来一个int数组中最大的那个值的下标

{1,2,3,1}===》 2



public class Demo16 {
	public static void main(String[] args) {
		
		/**
		 * 1.arr = {1,23,3,1}
		 * 2.执行getMaxIndexInArray 方法  去看下面的自己写的方法
		 * 3. maxIndex = 0 变量
		 * 4.碰到一个for循环
		 * 	分析for循环的执行的流程:
		 * 		i=1 1<4 true  if 语句 arr[0] < arr[1]  1<23 true  maxIndex = 1 i++
		 * 		i=2 2<4  true  if arr[1]<arr[2]  23 < 3 false maxIndex = 1 i++
		 * 		i=3 3<4 true  if arr[1] <arr[3] 23 <1 false  maxIndex = 1 i+=
		 * 		i=4 4<4 bfalse  
		 * 		return  maxIndex = 1; 
		 * 5.返回的是1    将1赋值给a了
		 * 6. 打印了a  得到结果是1
		 * 
		 */
		int[] arr = {1,23,3,1};
		int a = getMaxIndexInArray(arr);
		System.out.println(a);
	}
	//定义一个方法,找出来一个int数组中最大的那个值的下标  有参 有返回值
	public static int getMaxIndexInArray (int[] arr) {
		int maxIndex = 0;//接最大值的下标
		for (int i = 1; i < arr.length; i++) {
			if (arr[maxIndex] < arr[i]) {
				maxIndex = i;
			}
		}
		return maxIndex;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值