栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java新生夏令营日志DAY4

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java新生夏令营日志DAY4

Java新生夏令营日志DAY4 概况

p59

数组基础

数组是相同类型(但可以是引用类型也可以是基本类型)数据的有序集合,其中的每一个数据称为数组元素,每个数组元素可以通过一个下标来访问它们。

声明数组变量:数据类型[] 数组名(常用)/但也可数据类型 数组名[](不推荐,此为c中常用)

使用new创建数组:数据类型[] 数组名=new 数据类型[数组长度]

数组的元素通过索引访问,数组索引从0开始。

获取数组长度可用 数组名.length(数组的长度是不可变的,如果下标越界则会报错:ArrayIndexOutofBoundsException

内存分析

java的内存分为:

  1. 堆:存放new的对象和数组,可被所有的线程(?)共享,不会存放别的线程引用。

  2. 栈:存放基本变量类型(包含这个变量的基础数值)和引用对象的变量(会存放这个引用在堆里的具体数值)

  3. 方法区:(没细讲,先不管)

三种初始化

静态初始化:int[] a={1,2,3} 或 Man[] mans={New Man(1,1),New Man(2,2)}(后者我还不理解)

动态初始化:int[] a= new int[3]

数组的默认初始化:数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也按照实例变量的方式被隐式初始化。(数组本身就是对象,数组元素相当于对象的成员变量,数组对象本身是在堆中的)

数组的使用
  1. 普通的for循环

  2. for-each循环(即之前提到过的用于数组的增强型for循环:for (元素类型 要循环的元素名称:要循环的数组),但是没有下标,只能遍历数组中的每一个元素)

  3. 数组作方法入参

  4. 数组做返回值

多维数组

定义方式如int a[] [] =new int[2] [5] (可看作一个二行五列的数组)

Arrays类

数组的工具类java.util.Arrays

具有且不止具有以下功能:(可查看API帮助文档)

  1. 给数组赋值:通过fill方法。

  2. 对数组排序:通过sort方法,按照升序。

  3. 比较数组:通过equals方法比较数组中元素值是否相等。

  4. 查找数组元素:通过binarySearch对排序好的数组进行二分法查找法操作。

  5. 打印数组元素:toString

冒泡排序

就当先简单了解一下吧,大数字不断向一段浮动,小数字不断向一段浮动,形同冒泡,故称之为冒泡排序。简单的代码如下(时间复杂度为O(n2)啥意思我也不懂):

public static void main(String[] args) {
        int[] array={1,4,6,7,9,45,2,7,8};
        for(int a:bubbleArray(array)) {
            System.out.println(a);
        }
    }
    public static int[] bubbleArray(int[] arrays){
        int temp;
        for(int a=0;a   //冒泡轮数是数组元素数减一
            for(int b=0;b
                if(arrays[b]>arrays[b+1]){
                    temp=arrays[b+1];
                    arrays[b+1]=arrays[b];
                    arrays[b]=temp;
                }
            }
        }
        return arrays;
    }
稀疏数组

我真的得说,这真是我目前写过的最长最复杂的代码…

public static void main(String[] args){
        int[] [] array1=new int[11] [11];//原始棋盘数组
        array1[1] [2]=1;
        array1[2] [3]=2;
        for(int[] a:array1){
            for(int b:a){
                System.out.print(b+"t");
            }
            System.out.println();
        }
        System.out.println("===============================");
        int sum=0;//输出稀疏数组
        for(int[] s:array1){
            for(int su:s){
                if(su!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效元素数量为:"+sum);
        int[] [] array2=new int[sum+1] [3];
        array2[0] [0]=array1.length;
        array2[0] [1]=array1.length;
        array2[0] [2]=sum;
        int c=0;
        for(int i=0;i
            for(int j=0;j
                if(array1[i] [j]!=0){
                    c++;
                    array2[c] [0]=i;
                    array2[c] [1]=j;
                    array2[c] [2]=array1[i] [j];
                }
            }
        }
        System.out.println("稀疏数组为:");
        for(int[] a:array2){
            for(int b:a){
                System.out.print(b+"t");
            }
            System.out.println();
        }
        System.out.println("===============================");
        int[] [] array3=new int[array2[0] [0]] [array2[0] [1]];//还原棋盘数组
        for(int i=1;i
            array3[array2[i] [0]] [array2[i] [1]]=array2[i] [2];
        }
        System.out.println("还原数组:");
        for(int[] a:array3){
            for(int b:a){
                System.out.print(b+"t");
            }
            System.out.println();
        }
    }

于是再附一段运行结果吧:

0    0    0    0    0    0    0    0    0    0    0    
0    0    1    0    0    0    0    0    0    0    0    
0    0    0    2    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
===============================
有效元素数量为:2
稀疏数组为:
11    11    2    
1    2    1    
2    3    2    
===============================
还原数组:
0    0    0    0    0    0    0    0    0    0    0    
0    0    1    0    0    0    0    0    0    0    0    
0    0    0    2    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    

累辽,本来今天想直接开面向对象的,没想到数组这么猛(当然也有可能是因为我摸鱼打了好几把ygo嘿嘿嘿)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号