首页 > 编程语言 >Java10/04

Java10/04

时间:2022-10-04 09:55:42浏览次数:61  
标签:Java10 04 int System 数组 println array out

数组

1. 数组概述

  1. 数组的定义:
    • 数组是相同类型数据的有序集合
    • 数组描述的是相同类型的若干个数控,按照一定的先后次序排列组合而成
    • 其中,每一个数据称为一个数组元素,每个数组元素可以通过下标来指示(下标从0开始)
    • 数组也是对象,数据元素相当于对象的成员变量
    • 数组长度是确定的不可变的

2.数组声明和创建

  1. 数组变量定义语法:

    • dataType[ ] arrayRefVar; ---常用定义方法
    • dataType arrayRefVar[ ]; -----C和C++写法
  2. Java用new关键字创建数组:

    • dataType[ ] arrayRefVar=new dataType[arraySize] ; ----分配内存
  3. 数组赋值:

    • 数组元素用下标索引,从0开始
    • 初始化赋值、for循环赋值
    • 数组长度:数组名.length
  4. 学习代码:

    package com.bbh.array;
    public class ArrayDemo01 {
        public static void main(String[] args) {
            int[] nums;//声明一个数组,名字为num,类型是int[] 基类型是int,[]代表是数组类型
            nums=new int[10];//创建数组,分配10个空间,可以存放10个数组元素
            //动态初始化,数组元素未赋值的,默认为0,string类型默认为null
            nums[0]=1;
            nums[1]=2;
            nums[2]=3; 
            int sum=0;
            for (int i = 0; i <nums.length ; i++) {//nums.length  获取数组长度
                sum+=nums[i];
            }
            System.out.println("数组元素的和为"+sum);
        }
    }
    
  5. 数组初始化:数组长度一经确定无法改变(静态)

    • 静态初始化:

      • //数组静态初始化
        int[] array={1,2,3,4,5};//定义并初始化一个长度为5的数组
        
    • 动态初始化:

      • //数组动态初始化
        int[] array2=new int[5];
        array2[0]=1;
        array2[1]=2;
        array2[2]=3;
        array2[3]=4;
        
    • 默认初始化:数组也是引用类型,它的元素相当于类的实例变量,因此数组分配空间时,其所有元素就像实例变量一样被隐式初始化0。

      • //数组默认初始化,未初始化的默认初始化为0
        System.out.println(array2[4]);//输出0
        
  6. 数组的基本特点:

    • 数组长度一经确定,不可改变
    • 数组元素必须是相同类型
    • 数组元素可以是任意数据类型,包括基本类型和引用类型
    • 数组变量属于引用类型,数组可以看成是对象,数组中的每个元素相当于该对象的成员变量
    • 数组本身就是对象,Java中对象是保存在堆中的,因此数组无论保存原始类型还是其他对象类型都是保存在堆中
  7. 数组边界:

    • 下标的合法区间:[0,length-1],
    • 如果越界就会报错---java.lang.ArrayIndexOutOfBoundsException: 10

(+)Java内存分析

  1. 简单分析:image-20220918184851143

  2. 例如数组的存放(上个代码为例):

    image-20220918190721835

3.数组使用

  1. 普通的for循环

  2. for each 增强for循环:array.for 适合打印输出

  3. 数组作为方法入参

  4. 数组作为返回值

  5. 练习代码:

    package com.bbh.array;
    public class ArrayDemo03 {
        public static void main(String[] args) {
            //用for循环打印数组
            int [] arrays={1,2,3,4};
            System.out.println("打印数组所有元素");
            for (int i = 0; i <arrays.length ; i++) {
                System.out.print(arrays[i]+" ");
            }
            System.out.println();
            System.out.println("=======================");
            //计算数组元素的和
            int sum=0;
            for (int i = 0; i <arrays.length ; i++) {
                sum+=arrays[i];
            }
            System.out.println("数组元素的总和");
            System.out.print("sum="+sum);
            System.out.println("=======================");
            //查找数组元素中的最大值
            int max=arrays[0];
            for (int i = 1; i <arrays.length ; i++) {
                if (arrays[i]>max){
                    max=arrays[i];
                }
            }
            System.out.println("数组元素中的最大值");
            System.out.println("max="+max);
            System.out.println("=======================");
            //用增强for循环打印数组:arrays.for
            System.out.println("用增强for循环打印数组");
            for (int array : arrays) {
                System.out.println(array);
            }
            System.out.println("=======================");
            System.out.println("反转了的数组");
            //调用反转数组的方法
            int[] revers=revers(arrays);
        }
        //数组作为参数和返回值使用
        //反转数组
        public static int[] revers(int[] arrays){
            int [] result=new int[arrays.length];
            for (int i = 0,j=arrays.length-1; i <arrays.length ; i++,j--) {
                result[i]=arrays[j];
                System.out.println(result[i]);
            }
            return result;//数组作为返回值
        }
    
    }
    

4.多维数组

  1. 多位数组可以看成是数组的数组

  2. 二维数组:int array[ ] [ ]=new int [ ] [ ]

  3. 练习代码:

    package com.bbh.array;
    
    public class ArrayDemo04 {
        public static void main(String[] args) {
            //二维数组
            int[][] array={{1,2},{3,4},{4,5},{5,6}};
            //打印输出二维数组
            for (int i = 0; i <array.length ; i++) {//第一维长度
                for (int j = 0; j <array[i].length ; j++) {//第二维长度
                    System.out.print(array[i][j]+",");
                }
                System.out.print("\t");
            }
        }
    }
    

5.Arrays类

  1. 数组的工具类java.util.Arrays

  2. 由于数组对象本身没有什么方法可以使用,但API中提供了一个工具类Arrays供我们使用

  3. 常用方法:

    • 给数组赋值:fill
    • 数组排序:sort
    • 比较数组:equals 比较数组中元素值是否相等
    • 查找数组元素:通过binarySearch方法对排序好的数组进行二分查找
  4. 练习代码:

    package com.bbh.array;
    
    import java.util.Arrays;
    
    //Arrays类的使用
    public class ArrayDemo05 {
        public static void main(String[] args) {
            int[] a={1,3,4,2,5,67,889};
            //使用工具类打印数组(toString)
            System.out.println("打印输出数组");
            System.out.println(Arrays.toString(a));
            System.out.println("============================");
            //使用工具类对数组排序输出(sort)
            Arrays.sort(a);
            System.out.println("排序后输出数组");
            System.out.println(Arrays.toString(a));
            System.out.println("============================");
            //使用数组填充方法 fill
            //将数组a中下标二的元素(包括)到下标四的元素(不包括)用0填充
            Arrays.fill(a,2,4,0);
            System.out.println("填充后输出数组");
            System.out.println(Arrays.toString(a));
        }
    }
    

(+)冒泡排序

  1. 冒泡排序两层循环,外层冒泡轮数,里层依次比较

  2. 时间复杂度O(n*n)

  3. 代码:

    package com.bbh.array;
    
    import java.util.Arrays;
    
    public class ArrayDemo {
        public static void main(String[] args) {
            int[] array={2,4,56,76,74,1,3,24,6};
            sort(array);
        }
    /**
     * 冒泡排序:
     * 1.比较数组中两个相邻的元素,把小的交换到前面
     * 2.每一次比较都可以确定一个元素的最终位置
     * 3.因此下一次可以少一次比较
     * 4.依次循环直到结束
      */
    public static void sort(int[] array) {
        //排序次数循环
        for (int i = 0; i <array.length-1 ; i++) {
            boolean flag=false;//通过设置flag标识位减少没有意义的比较
            //每次排序的循环
                for (int j = 0; j < array.length - i - 1; j++) {
                    if (array[j] > array[j + 1]) {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                        flag=true;
                    }
                }
                if (flag==false){
                    break;
                }
        }
        System.out.println(Arrays.toString(array));
    }
    }
    

6.稀疏数组

  1. 当一个数组大部分元素为0 或者为相同值的元素时,可以用稀疏数组来保存

  2. 稀疏数组处理 方式:

    • 记录数组的值不同的元素的值及其行号、列号
    • 记录在三元组中(存元素值、行号列号、还有数组大小及有效值的个数) ,相同元素只存一次 从而缩小数组规模
  3. 用稀疏数组编写棋盘存盘和续上盘的功能:

    • 题目:image-20220922114350199

    • 代码实现:

标签:Java10,04,int,System,数组,println,array,out
From: https://www.cnblogs.com/tuming/p/16753279.html

相关文章

  • 互联网摸鱼日报(2022-10-04)
    互联网摸鱼日报(2022-10-04)InfoQ热门话题八大流行的微服务架构设计模式探究JUnit5.9引入对GraalVM原生镜像的支持博客园新闻小米:对印度冻结6.82亿美元资产感......
  • 04 导师不敢和你说的水论文隐藏技巧,论文模型需不需要继承
    博客配套视频链接:​​https://www.bilibili.com/video/BV1Pd4y1r7VG/?spm_id_from=333.788&vd_source=b1ce52b6eb3a9e6c2360a4b7172edf5a​​b站直接看江西周公子周公......
  • day04-MySQL常用函数01
    5.MySQL常用函数5.1合计/统计函数5.1.1合计函数-countcount返回行的总数Selectcount(*)|count(列名)fromtable_name [WHEREwhere_definition]练习--统计......
  • Day04
    搜索框滑块和简单验证<!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <title>搜索框滑块和简单验证</title></head><body><formaction="1.初......
  • java_day04
    Java基础包机制包实质上就是文件夹一般利用公司域名倒置作为包名JavaDocjavadoc命令是用来生成自己的API文档的参数信息@author作者名@version版本号@since......
  • Java SE 宋红康 days04-高级篇-网络编程
    1.Socket:端口号与IP地址的组合得出一个网络套接字;2. 计算机网络中实现通信必须有一些约定,即通信协议:对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。......
  • 代码随想录day11 ● 232.用栈实现队列 ● 225. 用队列实现栈 ● 20. 有效的括号 ●
    232.用栈实现队列1classMyQueue{2public:34//初始化入队栈和出队栈5stack<int>stIn;6stack<int>stOut;78MyQueue(){9......
  • How to Install Lazarus IDE in Ubuntu 20.04, 18.04, 21.10
    Ubuntu20.04LTShasbeenreleasedrecently,butinstallingLazarustherefromtheofficialreposwon'tgetyouupandrunning.Let'sseehowLazaruscanbe......
  • Java SE 宋红康 days04-高级篇-IO流
    1.File类的使用①File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)②File类声明在java.IO包下③常用构造器publicFile(Stringpath......
  • Ubuntu22.04系统安装DeepMind Lab
       ================================================ 1.CMAKE的安装:https://www.cnblogs.com/devilmaycry812839668/p/14943981.html   2.bazel的安......