ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java从零到项目实践(五)

2022-01-15 21:59:21  阅读:120  来源: 互联网

标签:java int 实践 System 零到 数组 println public out


Day 4(数组)

到此为止,java基础语法部分全部结束,为坚持到这的自己加个油!


文章目录


java数组

数组概述

在这里插入图片描述

要点:相同类型数据、按一定先后次序、下标从0开始(下标为0对应第一个元素)

数组声明创建

在这里插入图片描述
在这里插入图片描述

示例代码:

public class creatDemo01 {
    public static void main(String[] args) {
        //创建数组: 变量类型 + 变量名 = 变量值
        int[] x; //声明一个int类型的数组x
        x = new int[5];  //用new分配一个大小为10的空间给x,这里才是实际创建数组x

        //声明数组也可采用c/c++的方式
        //int y[];

        //创建数组也可一步到位:
        int[] y = new int[10];

        //定义数组中的元素
        x[0] = 1;
        x[1] = 2;
        x[2] = 3;
        x[3] = 4;
        x[4] = 5;

        //计算总和
        int sum = 0;
        for (int i = 0; i < x.length; i++) {//length属性获取数组长度
            sum = sum + x[i];
            //显示数组元素
            //System.out.println("x[" + i + "]: " + x[i]);
        }
        System.out.println(sum);
    }
}

三种初始化及内存分析

在这里插入图片描述

声明创建时的内存管理:

在这里插入图片描述

三种初始化:

在这里插入图片描述

示例代码:

public class arrayDemo02 {
    public static void main(String[] args) {
        //静态初始化:   创建+赋值
        int[] a = {1,2,3,4,5};
        System.out.println(a[0]);

        System.out.println("======================");

        //动态初始化:  包含了默认初始化(即所有数据在未赋值前均以默认值为初始值),例如这里除了b[0]和b[1]外,所有数组元素全为0
        int[] b = new int[5];
        b[0] = 12;
        b[1] = 3;
        for (int i=0; i<b.length; i++){
            System.out.println(b[i]);
        }

    }
}

数组边界

在这里插入图片描述

数组使用

在这里插入图片描述

示例代码:

public class arrayDemo03 {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};

        //普通for循环使用
        for (int i = 0; i < a.length; i++) {
            System.out.println("普通for循环打印:" + a[i]);
        }

        System.out.println("===================");

        //for-each增强for循环,只适用于遍历打印数组元素,无下标操作JDK1.5
        for (int i : a) {
            System.out.println("for-each打印: " + i);
        }
        System.out.println("===================");

        Array(a);

        System.out.println("====================");
        int[] P = pArray(a);
        Array(P);
    }

    //数组作为方法入参
    public static void Array(int[] a) {
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }

    //数组作为返回值
    //数组翻转
    public static int[] pArray(int[] a) {
        int[] value = new int[a.length];
        //翻转的操作
        for (int i=0,j=a.length-1; i<a.length; i++, j--){
            value[i] = a[j];
        }
        return value;
    }
}

多维数组

在这里插入图片描述

多维数组实质是数组的嵌套,即数组的每个元素仍然为一个数组

在这里插入图片描述

示例代码:

public class arrayDemo04 {
    public static void main(String[] args) {
        //二维数组
        /*
        1,2    a[0]
        2,3    a[1]
        3,4    a[2]
        4,5    a[3]
         */
        int[][] a = {{1,2},{2,3},{3,4},{4,5}};//两个[]表示二维数组

        Array(a[0]);

        System.out.println("========");
        //遍历数组中的所有元素
        for (int i=0; i<a.length; i++){
            for (int j=0; j<a[i].length; j++){
                System.out.print(a[i][j]);
            }
        }
    }

    //打印数组中的元素
    public static void Array(int[] a) {
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
}

Arrays类

在这里插入图片描述

拓展:冒泡排序

示例代码:

import java.util.Arrays;

public class maopaoDemo05 {
    public static void main(String[] args) {

        int[] a = {1,3,2,2,4,5,4,33,1,546,12,343,3};
        int[] b = array(a);

        //打印数组元素时,不能直接打印,要么通过自己写方法遍历出来,要么用Arrays类提供的Arrays.toString(参数)
        //System.out.println(b);//[I@135fbaa4,
        System.out.println(Arrays.toString(b));
    }

    //冒泡法:
    /*
    1.比较数组中两个相邻的元素,如果第一个数比第二个数大(或小),就交换位置
    2.每一次比较都会产生一个最大或最小的数字
    3.下一轮排序次数依次减少
    4.依次循环,直到结束
     */
    public static int[] array(int[] a) {
        int temp = 0; //用来实现数据交换的媒介
        for (int i=0; i<a.length-1; i++){
            for (int j=0; j<a.length-1-i; j++){
                if (a[j+1]<a[j]){
                    temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                }
            }
        }
        return a;
    }
}

稀疏数组

在这里插入图片描述

稀疏数组主要解决的问题是,当前数组中存储了大量无意义的0元素时,采用该方法进行有效的压缩操作。

以上表格为例:

【0】行表示,该数组共有6行、7列、8个有效数字

【1】行表示,第一个有效数字为22,在第0行、3列

【2】行表示,第二个有效数字为15,在第0行、6列

……

示例代码:

public class arrayDemo06 {
    public static void main(String[] args) {
        //需求:编写一个矩阵,将其转化为稀疏矩阵并实现还原
        int[][] a1 = new int[10][10];
        a1[1][2] = 1;
        a1[2][3] = 2;

        //输出原始的数组
        System.out.println("原始数组:");
        array(a1);  //调用方法array输出数组

        //转换为稀疏数组保存
        //1.获取有效值的个数
        int sum = 0;
        for (int i=0; i<a1.length; i++){
            for (int j=0; j<a1.length; j++){
                if (a1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("===============");
        System.out.println("有效个数为:" + sum);

        //2.声明创建一个稀疏数组
        //行数:有效个数+1;  列数:3
        int[][] a2 = new int[sum+1][3];

        //3.根据系数矩阵特点赋值
        //稀疏数组第一行:存储的是原数组整体信息
        a2[0][0] = a1.length; //a1的行数
        a2[0][1] = a1.length; //a1的列数
        a2[0][2] = sum; //有效数据个数
        //稀疏数组第二行开始:每行依次存储第i个有效数字以及所在的行列信息
        int count = 0;//记录有效数字出现次数,对应记录在稀疏数组的相应行上
        //找到有效数字所在位置
        for (int i=0; i<a1.length; i++){
            for (int j=0; j<a1.length; j++){
                if (a1[i][j]!=0){
                    count++;
                    a2[count][0] = i;
                    a2[count][1] = j;
                    a2[count][2] = a1[i][j];
                }
            }
        }
        System.out.println("输出稀疏数组:");
        array(a2);//调用方法array输出数组
        System.out.println("=================");

        //将稀疏数组还原为原始数组
        //1.声明创建一个原始数组
        //稀疏数组[0][0]和[0][1]元素即为原数组的行列数
        int[][] a3 = new int[(a2[0][0])][(a2[0][1])];
        for (int i=1; i<a2.length; i++){
            a3[(a2[i][0])][(a2[i][1])] = a2[i][2];
        }
        array(a3);
    }



    //输出数组元素
    public static void array(int[][] a){
        for (int i=0; i<a.length; i++){
            for (int j=0; j<a.length; j++){
                System.out.print(a[i][j] + "\t");
            }
            System.out.println();
        }
    }

}

标签:java,int,实践,System,零到,数组,println,public,out
来源: https://blog.csdn.net/qq_44080263/article/details/122516517

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有