首页 > 编程语言 >Java 数组

Java 数组

时间:2023-04-01 11:46:10浏览次数:53  
标签:Java arrays System int 数组 println out

数组

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们

数组的声明和创建

  • 首先必须声明数组变量,才能在程序中使用数组。
  • Java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new dataType[arraySize];
  • 数组的元素通过索引访问的,数组索引从0开始
arrays.length   //获取数组长度

内存分析

  • Java内存分析:

    • 堆:

      • 存放new的对象和数组

      • 可以被所有的线程共享,不会存放别的对象引用

    • 栈:

      • 存放基本变量类型(会包含这个基本类型的具体数值)
      • 引用对象的变量(会存放这个引用在堆里面的具体地址)
    • 方法区

数组的内存分析图

  • 声明数组时只是在堆中产生数组,实际并为创建数组
  • 当创建数组时(也就是new一个数组),会在栈开辟空间用于存放数据

数组的三种初始化

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

        //动态初始化:包含默认初始化
        int[] nums = new int[10];
    }
  • 默认初始化为数据类型的默认值

数组的使用

  • 普通for循环
public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};

        //打印全部的数组元素
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }
        System.out.println("===========");

        //计算所有元素的和
        int sum = 0;
        for (int i = 0; i < arrays.length; i++) {
            sum +=arrays[i];
        }
        System.out.println("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(max);
    }
  • For-Each循环:一般用于打印输出结果
    //JDk1.5,没有下标
      for (int array:arrays) {
           System.out.println(array);
        }
  • 数组作方法入参
//方法:打印数组元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }
    }
  • 数组作返回值
//反转数组
    public static int[] reverse(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];

        }

        return result;
    }

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一堆数组,其每一个元素都是一个数组
public static void main(String[] args) {
        //二维数组
        int[][] arrays = {{1,2},{3,4},{5,6}};

        //打印二维数组:利用嵌套循环即可
        for (int i = 0; i < arrays.length; i++) {
            for (int j = 0; j < arrays[i].length; j++) {
                System.out.println(arrays[i][j]);
            }
        }
    }
  • 最常用的是二维数组

Arrays类

  • 数组的工具类java.util.Arrays
  • Arrays类提供了一些基本操作供我们使用
  • 可以查看JDK帮助文档
  • Arrays类中的方法都是static修饰的方法,我们可以直接使用类名进行调用
  • 常用功能:
public static void main(String[] args) {

        int[] a = {1,2,3,4,5,8,10,44,6};
        //直接打印输出数组元素
        System.out.println(Arrays.toString(a));
        printArray(a);

        //数组排序:升序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

        //数组填充
        Arrays.fill(a,0);
        System.out.println(Arrays.toString(a));
    
    	//查找数组元素
        int i = Arrays.binarySearch(a, 9);
    }
  • 类中的方法都是以往程序员编写而来,我们可以便利自己,当想不起使用方法时,也可以自己编写,效果一致

标签:Java,arrays,System,int,数组,println,out
From: https://www.cnblogs.com/huang-lin/p/17278324.html

相关文章

  • Java 冒泡排序
    冒泡排序冒泡排序由嵌套循环完成,并分为外循环和内循环内循环负责比较数组中,两个相邻的元素,如果第一个数比第二个数大,则交换两者的位置,相邻两数依次循环进行比较每完成一次内循环比较(即外循环走完一步)都会产生一个当次内循环最大或者最小的数字并放在数组末尾所以外循......
  • Java 稀疏数组
    稀疏数组当一个数组中大部分元素为0时,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模下面对该原始数组进行压缩,求出其稀疏数......
  • java方法- 冒泡排序
    冒泡排序冒泡排序是最为出名的排序之一,总共有八大排序冒泡的代码是两层循环,外层冒泡轮数,里层依次比较算法时间复杂度为O(n2)优化优化方法之一 ......
  • Java 基础 -- NIO 多人聊天室
    packagecom.atguigu.nio.groupchat;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.*;importjava.util.Iterator;publicclassGroupChatServer{//定义属性privateSelectorselector......
  • java方法-Arrays类
    Arrays类数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,......
  • 装饰设计模式-java
      packagecn.shuishandt.opp;publicclassDecorateTest2{publicstaticvoidmain(String[]args){ Coffecoffe=newCoffe(); System.out.println(coffe.cost()+"=============>"+coffe.info()); Milkmilk=newMilk(coffe);......
  • java高精度定位系统源码 工厂人员定位系统源码
    这是一套java定位系统源码,工厂人员定位系统源码,UWB高精度定位系统源码,前后端分离架构,源码有演示。工厂人员定位系统,高精度的位置数据作为智能工厂数据流的重要组成部分,可实现对工厂内的人,车、物的精确定位,无缝追踪,智能调配与高效协同,可大幅提升工厂的精益生产及精细化管理水平,我们......
  • JavaScript
    大致路径学习JavaScript的路径可以大致分为以下几个方向:HTML和CSS:在学习JavaScript之前,您需要先掌握HTML和CSS基础知识,这是构建网页的基础。JavaScript基础:学习JavaScript的基本语法、变量和数据类型、运算符、条件语句、循环语句等。DOM编程:学习如何通过Ja......
  • 【LBLD】小而美的算法技巧:前缀和数组
    【LBLD】小而美的算法技巧:前缀和数组一维数组中的前缀和classNumArray{private:vector<int>preSum;public:NumArray(vector<int>&nums){preSum.push_back(0);for(inti=1;i<nums.size()+1;i++){preSum.push_back(......
  • 一维数组内存分析
    Java虚拟机的内存划分为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。区域名称作用虚拟机栈用于存储正在执行的每个Java方法的局部变量表等。局部变量表存放了编译期可知长度<br/>的各种基本数据类型、对......