数组、数组异常、二维数组、冒泡排序的思想和代码

数组

数组:是可以存储同一种类型的元素一种“容器”。(都是引用类型:默认值为null)

注意:必须要保证该容器中储存的类型必须一致!
数组的定义
数据类型[] 数组名称;
举例:int[] arr 定义了一个int数组的变量arr
数据类型 数组名称[];
举例:int arr[] 定义了一个int类型的变量arr数组
数组的初始化(两种):

  1. 动态初始化:开发者定义数组初始化的时候,指定数组的长度,系统默认给数组中的元素赋值;
  • 数据类型[] 数组名称 = new 数据类型[ 数组长度 ];

  • 数据类型 数组名称[] = new 数据类型[ 数组长度 ];

  • 静态初始化:直接指定数组的元素内容,系统指定的数组长度!

数组静态化格式

  • 数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3……};

  • 数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3……};

例子:int[] arr = new int[1,2,3];
简写方式:(推荐)

  • 数据类型[] 数组名称 = {元素1,元素2,元素3……};

  • 数据类型 数组名称[] = {元素1,元素2,元素3……};

例子:int[] arr = {1,2,3};

数组异常

 数组中会遇见的一些异常:
 异常:Throwable 类
 异常分为两大类:
   Error:程序出现了严重的问题;
   Exception:
    RuntimeException:运行时期异常 
     java.lang.ArrayIndexOutOfBoundsException属于运行时期异常的一种
     java.lang.NullPointerException属于运行时期异常的一种
      
    编译时期异常(只要不是RuntimeException的异常都属于编译时期)
  
 
  java.lang.ArrayIndexOutOfBoundsException:属于运行时期异常的一种
      数组角标越界异常
        出现的原因:访问了数组中不存在的角标值
        解决方案:更改角标在范围内即可!
        
        
  java.lang.NullPointerException:空指针异常(引用类型中经常会出现的异常!)
  出现的原因:
    代码结构不严谨(某个对象已经为null,还有使用这个对象调用方法或者访问元素...)
  解决方案:
    只要 给对该对象进行非空判断
    如果该对象不为空,才能使用这个对象完成一些操作!
 

二维数组

二维数组:就是元素为一维数组的数组

定义格式

  • 数据类型[] 数组名称[];
  • 数据类型[][] 数组名称;

1.动态初始化
格式1
数据类型[][] 数组名称 = new 数据类型[m][n];
举例
int[][] arr = new int[3][2];

  • =号左边:
    int:当前数组储存的是int类型的元素
    [][]:定义的是一个二维数组
    arr:数组对象名称对象
  • =号右边:
    new :在堆内存中创建该数组的对象(产生堆内存空间地址)
    int:当前数组存储的是int类型的元素
    [3]:当前定义的这个二维数组中有3个一维数组
    [2]:每一个一维数组中有2个长度

注意:
在一些笔试题:定义变量 进行初始化
int x, y ; x 和y是两个int类型的变量
int x [],y[] ;x和y都是int类型的数组
int x[][],y[] ; x是一个二维数组,y是一个一维数组

冒泡排序的思想

概念:两两比较,大的值往后放,第一次比较完之后,最大值就出现在最大索引处,依次这样比较,就可以得到一个排好序的数组!在这里插入图片描述
冒泡排序比较规律
1)两两比较,如果前面的元素比后面的元素大,往后放第一次比较完毕后,最大值出现在最大索引处,依次这样比较……;
2)第一次比较,有0个不比, 第二次比较,有1个不比 第三个比较,有2个不比 ……规律:两两比较,较大的值往后放总共比较的次数:数组长度-1次

自定义指定一个数组(没有明确都是一维数组),然后将数组进行冒泡排序并遍历(按照[元素1, 元素2,元素3...])
public class ArrayDemo{
 public static void main(String[] args){
  //定义一个数组,静态初始化
  int[] arr = {34,67,23,90,13,78};
  
  //冒泡前的数组
  System.out.println("冒泡前的数组:");
  bianLi(arr);
  
  //冒泡后的数组
  System.out.println("冒泡后的数组:"+arr);
  maoPao(arr);
  bianLi(arr);
  System.out.println(arr);
  
 }
 
 //遍历
 public static void bianLi(int[] arr){
  System.out.print("[");
  
  for(int i = 0 ; i < arr.length ; i++){
   
   if(arr.length-1 == i){
    System.out.print(arr[i] + "]");
   }else{
    System.out.print(arr[i] + ",");
   }
  }
 }
 
 
 //冒泡排序
 public static void maoPao(int[] arr){
  
  for(int i = 0 ; i < arr.length ; i++){
   for(int x = 0; x <arr.length-1-i; x++){
    if(arr[x] >arr[x+1]){
     int temp = arr[x];
     arr[x] = arr[x+1];
     arr[x+1] = temp;
    }
   }
   
  }
 }
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值