Java基础之数组

1.一维数组1.1定义数组是相同数据类型的多个数据的容器。这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。1.2格式格式1. 数据类型[] 数组名称 = new 数据类型[数组长度];格式2. 数据类型[] 数组名称 = {数组内容1,数组内容2,数组内容3…数组内容n};格式3. (不常用)数据类型[] 数组名;​ 注意:格式3 属于只创
摘要由CSDN通过智能技术生成

1.一维数组

1.1定义

数组是相同数据类型的多个数据的容器。

这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个

元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。

1.2格式

格式1. 数据类型[] 数组名称 = new 数据类型[数组长度];

格式2. 数据类型[] 数组名称 = {数组内容1,数组内容2,数组内容3…数组内容n};

格式3. (不常用)数据类型[] 数组名;

​ 注意:格式3 属于只创建了数组引用名, 并未在内存创建数组空间。

格式4. (不常用)数据类型[] 数组名称 = new 数据类型[]{内容1,内容2,内容3…内容n};

public class Demo1 {
   

	public static void main(String[] args) {
   
	
		//格式1.创建数组的同时,制定数组中的内容。
		int[] ages = {
   10,11,12,13,14};
		//格式2.创建数组, 并指定长度, 不指定数组中的内容。
		int[] ages2 = new int[10];
	
		System.out.println("------------------------");
		
		//数组不常用的创建方式:
		//1.	创建数组 , 不初始化
		//格式:	数据类型[] 数组名;
		int[] nums;
		//2.	创建数组, 并指定数组中的内容
		//格式:	数据类型[] 数组名称 = new 数据类型[]{内容1,内容2,内容3...内容n};
		int[] ages = new int[] {
   11,12,13,14};
	}


1.3下标

可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0~n-1。

可以通过下标的方式访问数组中的每一个元素。


public class Demo1 {
   
		
	public static void main(String[] args) {
   
        int[] ages = {
   10,11,12,13,14};
		int[] ages2 = new int[10];
	//通过下标操作数组数据的方式:
		//1.	给数组某个下标 赋值:   数组名称[下标] = 值;
		ages[0] = 100;
		//2.	从数组某个下标 取值: 数组名称[下标]
		System.out.println(ages[0]);
		ages2[0] = 99;
		System.out.println(ages2[0]);
    }
}

1.4数组常见问题

1.4.1数组的遍历

public class Demo2 {
   
		
	public static void main(String[] args) {
   
         int[] ages = {
   10,11,12,13,14};
        
        //如何获取数组的长度:  数组名称.length
		//数组的遍历
		for(int index=0;index<ages.length;index++) {
   
			//index: 0 1 2 3 4 
			System.out.println(ages[index]);
		}
	
	}

}

1.4.2数组未赋值

空指针异常 (NullPointerException)

通常在引用数据中发生异常

public class Demo3 {
   
	public static void main(String[] args) {
   
	
		//	空指针问题
		int[] nums = null;
		System.out.println(nums[1]);
	}

}

1.4.3超出长度的下标操作

数组越界异常 (ArrayIndexOutOfBoundsException

注意:数组的长度在创建时就固定了

public class Demo4 {
   
	public static void main(String[] args) {
   
		//		数组下标越界问题:
		//int[] nums = {10,11,12,13,14};
		//System.out.println(nums[5]);

	}

}

1.5数组常用算法

1.5.1冒泡排序

1.5.1.1原理

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

升序排列的口诀:

N个数字来排队

两两相比小靠前,

外层 循环length-1

内层循环length-i-1

降序排序的口诀

N个数字来排队

两两相比大靠前,

外层 循环length-1

内层循环length-i-1

1.5.1.2代码示例
public class Demo5 {
   

	/**
	 * 冒泡排序
	 * @param args
	 */
	public static void main(String[] args) {
   
		int[] nums = {
   20,15,185,123,350,609};
		int temp;
   
          /*
          "20 15" 158 123 350 609
          15 "20 158" 123 350 609
          15 20 "158 123" 350 609
          15 20 123 "158 350" 609
          15 20 123 158 "350 609"
          15 20 123 158 350 609
          */
		//外层循环控制的是, 比较的轮数。
		//外层循环次数: 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值