Java基础(四)数组

这篇博客介绍了Java中数组的常规操作,包括创建、赋值、获取长度等,还探讨了不常用的数组定义格式。此外,讲解了数组常见的问题如下标越界和空指针异常,并展示了如何找到数组中的最大值和最小值。接着,博主详细阐述了冒泡排序和二分查找这两种经典算法的实现。最后,简单展示了多维数组的创建和使用。
摘要由CSDN通过智能技术生成

目录

常规操作

不常用数组定义格式

数组的常见问题

最大最小值的问题

冒泡排序

二分查找

多维数组


常规操作

package Last205;

public class Ashuzu {

	public static void main(String[] args) {
		//创建数组的格式
		//常用格式1.创建数组的同时,指定数组的内容。
		//数据类型[] 数组名称= {数据1,数据2,数据3,数据4....,数据n};
		int [] ages = {10,11,12,13,14};
		
		//常用格式2.创建数组,并指定长度,但是不指定数组中的内容。
		//数据类型[]=数组名称 = new 数据类型[数组长度];
		//数组长度通过int数据指定
		int [] ages2 = new int[10];
		
		
		//通过下标操作数组数据的方式:
		//数组下标都是从0开始算的
		//1.给数组某下标   赋值:数组名称[下标] = 值;
		ages[0]=100;
		
		//2.从数组某个下标  取值:数组名称[下标]
		System.out.println(ages [0]);
		
		ages2[0]=100;
		System.out.println(ages2[0]);
		
		
		//如何获取数组的长度: 数组名称.length
		for (int index =0;index<ages.length;index++){
			//index :0 1 2 3 4
			System.out.println(ages[index]);
		};
		
	}

}

不常用数组定义格式

此处需要明白的是,[]是用来定义数组长度的,而{}是用来定义其中的内容的。

package Last205;

public class Bbuchangyongshuzugeshi {

	public static void main(String[] args) {
		//不常用数组的创建格式
		//1.创建数组,不初始化,不定义长度和内容
		//格式: 数据类型[] 数组名;
		int [] nums ;
		nums =new int[] {};
        //不可以直接使用nums = {};的形式直接定义内容
	    //	System.out.println(nums [0]);
		
		
		//2.创建数组,并指定数组中的内容
		//格式:数据类型[] 数组名称= new 数据类型[]{内容1,内容2,。。。};
		int [] ages = new int[] {1,2,3,4};

	}

}

数组的常见问题

package Last205;

public class Cshuzuwenti {

	public static void main(String[] args) {
		//数组常见问题
		//1.数组下标越界问题
		
		int []nums = {1,2,3,4};
		System.out.println(nums[6]);
		
		//2.空指针问题
		
		int []nums2; //并未指定其值
		// System.out.println(nums);  这样就是错误的,因为里边什么也没有
		//但是如果想让这句话正确,那就再nums2前声明时赋值为null或者为static
        // int static [] nums;语句扔在整个类的外边
		
		int []nums3 =null;
		System.out.println(nums3[2]);

	}

}

最大最小值的问题

此处仅判断最大或最小,其余的不考虑。

package Last205;

public class Dzuidazuixiao {

	public static void main(String[] args) {
		//寻找数组中的最大最小值
		
		//1.声明一个数组
		int []nums= {10,20,50,60,70,50,90,80};
		 
		//2.创建一个变量,用于存储遍历数组时发现的最大的值
		int n = nums[0];//直接让他等于数组的第一个数
		
		//3.循环取出数组中的每一个内容,进行比较大小的操作
		for (int  i=1;i<nums.length;i++) {
			//将数组中的每一个内容与之进行比较,大的替换,小的不算
			n = n>nums[i]?n:nums[i];  //大于小于看要求使用
		};
		System.out.println(n);

	}

}

冒泡排序

package Last205;

public class Emaopao {


/**
 * 冒泡排序
 * @param args
 */
public static void main(String[] args) {
	int[] nums = {25,15,19,12,34,63};
	int temp;
	//外层循环控制的是, 比较的轮数。
	//外层循环次数: length-1
	for(int i=0;i<nums.length-1;i++) {
		//内层循环控制的是,每轮比较的次数
		//第i轮(i从0开始计算), 比较次数为:length-i-1
		for(int j=0;j<nums.length-i-1;j++) {
			if(nums[j]>nums[j+1]) {
				//两两相比, 满足移动条件
				temp = nums[j];
				nums[j] = nums[j+1];
				nums[j+1] = temp;
			}
		}
	}
	
	
	//排序已经完成。 下面是遍历打印查看的过程
	for(int i=0;i<nums.length;i++) {
		System.out.println(nums[i]);
	}
	
	
	
}


}

二分查找

package Last205;

public class Ferfen {


		/**
		 * 二分查找(折半查找)
		 */
		public static void main(String[] args) {
			int[] nums = {10,20,30,40,50,60,70,80,90};
			
			//要查找的数据
			int num = 20;
			
			//关键的三个变量:
			//1.	最小范围下标
			int minIndex = 0;
			//2.	最大范围下标
			int maxIndex = nums.length-1;
			//3.	中间数据下标
			int centerIndex = (minIndex+maxIndex)/2;
			while(true) {
				System.out.println("循环了一次");
				if(nums[centerIndex]>num) {
					//中间数据较大
					maxIndex = centerIndex-1;
				}else if(nums[centerIndex]<num) {
					//中间数据较小
					minIndex = centerIndex+1;
				}else {
					//找到了数据  数据位置:centerIndex
					break;
				}
				
				if(minIndex > maxIndex) {
					centerIndex = -1;
					break;
				}
				//当边界发生变化, 需要更新中间下标
				centerIndex = (minIndex+maxIndex)/2;
			}
			
			System.out.println("位置:"+centerIndex);
			
		}

	}


多维数组

package Last205;

public class Gduoweishuzu {

	public static void main(String[] args) {
		/*
		 * 多维数组
		 *创建格式
		 *数据类型[] 数组名 = new 数据类型[长度];
		 *int [][] 二维数组名称 =new  int [长度][];
		 **/
		//声明一个二维数组
	
		int [][]nums= new int [10][];
		
		//给他的下标为0的赋值
		nums[0] =new int [] {1,2,3};
		
		//取出第0下标第3位数
		System.out.println(nums[0][2]);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值