Java基础笔记05——数组篇

Java基础笔记05——数组篇,第1张

1 Java中的数组 1.1 数组的简单实现
  • 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
datatype[]	arrayRefvar;
int[] num1;
  • Java语言使用new *** 作符来创建数组,语法如下:
datatype[] arrayRevVar=new dataType[arraySize];
  • 数组的元素是通过索引访问的,数组索引从0开始

  • 获取数组长度:array.length

//变量的类型 变量的名字=变量的值;
//数组类型
public static void main(String[] args){
    int[] nums;//1.声明一个数组
    nums = new int[10];//2.创建一个数组
    int[] nums2=new int[10];//声明和创建可以放在一起
    //3.给数组元素赋值
    nums[0]=1;
    nums[1]=2;
    nums[2]=3;
    nums[3]=4;
    nums[4]=5;        
    nums[5]=6;        
    nums[6]=7;        
    nums[7]=8;        
    nums[8]=9;        
    nums[9]=10;
    //计算所有元素的和
    int sum=0;
    for(int i=0;i
1.2 数组的四个基本特点
  • 其长度是确定的。数组一旦被创建,它的大小就是不可改变的
  • 其元素必须是相同类型,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论原始类型还是其他对象类型,数组对象本身是在堆中。
  • ArrayIndexOutOfBoundsException:数组下标越界异常
1.3 数组使用
  • 普通的for循环
int[] arrays={1,2,3,45,5};
int sum=0;
for(int i=0;i
  • for—Each循环(增强for循环)
int[] arrays={1,2,3,45,5};
for(int array:arrays){
    System.out.println(array);
}
  • 数组做方法入参(void作为方法入参,可以没有返回值)
int[] arrays={1,2,3,45,5};
printArray(arrays);

//打印数组元素
public static void printArray(arrays){
    for(int i=0;i
  • 数组作返回值(反转数组)
int[] arrays={1,2,3,45,5};
int[] reverse=reverse(arrays);
for(int i=0;.i 
1.4 二维数组 
  • 二维数组的遍历
int[][] array={{3,4},{5,6},{6,7}}
//System.out.println(array[1][1]);
//遍历二维数组的长度
for(int i=0;i
1.5 Arrays类
  • 数组的工具类是java.utill.Arrays
  • 由于数据对象本身并没有方法可以供我们使用,但是API提供了一个工具类Arrays供我们使用
  • Array类中的方法都是static修饰的静态方法,使用时直接使用类名进行调用,可以不用对象调用
  • 常用功能
    • 给数组赋值:fill方法
    • 排序:sort方法,升序
    • 比较数组:equals方法比较数组中元素值是否相等
    • 查找数组元素:binarySearch对排序号的数组进行二分法查找 *** 作
int[] array={3,4,5,6,7,2,1,0,8,9,7};
//填充数组
Arrays.fill(array,2,4,0)
//打印数组
System.out.println(Arrays,toString(array));
//排序数组
Arrays.sort(array);
System.out.println(Arrays.toString(array));
//二分法查找 返回的是值得下标
System.out.println(Arrays.binarySearch(array,0));
1.6 冒泡排序
  • 冒泡排序是八大排序最出名的排序算法。
  • 代码:两层循环,外层冒泡轮数,里层依次比较。
  • 当我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。
public static void main(String[] args){
    //        1.比较数组中,两个相邻的元素,如果第一个比第二个大,我们就交换他们的位置
        //        2.每一次比较,都会产生一个最大或最小的数字
        //        3.下一轮,则可以少一次排序
        //        4.依次循环,直到结束
    int[] a={4,5,6,5,45,54,5,64,54,7};
    int[] sort = sort(a);
    System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
    //临时变量
    int temp=0;
    //外层循环,判断我们这个要走多少次;
    for(int i=0;iarray[j+1]){
                //如果第一个数大于第二个数,第二个数放前,第一个数放后
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                flag = true;
            }
        }
        if(flag==false){
            break
        }
    }
    return array;
}
1.7 稀疏数组

//创建一个二维数组 11*11 0:没有棋子 1:黑子 2:白子
public static void main(String[] args){
    int[][] array=new int[11][11];
    array[1][2] = 1;
    array[2][3] = 2;
    System.out.println("输出原始的数组");
    
    for(int[] ints:array){
        for(int anInt:ints){
            System.out.print(anInt = "\t");
        }
        System.out.println();
    }
}
//转换为稀疏数组保持
//1.获取有效值得个数
int sum = 0;
for(i = 0;i<11;i++){
    for(int j=0;j<11;j++){
        if(array[i][j]!=0){
            sum++;
        }
    }
}
System.out.println("=======================");
System.out.println("有效值的个数" + sum);

//2.创建一个稀疏数组的数组
int[][] array2=new int[sum +1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;

//3.遍历二维数组,将非零的值,存放在稀疏数组中
int count = 0;
for(int i=0;i

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/738216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)