首页 > 其他分享 >数组

数组

时间:2023-09-09 11:56:36浏览次数:25  
标签:String student int System 数组 public out

title: 数组
index_img: img/7.svg
tags:
  - Java SE
categories:
  - Java SE
hide: false
excerpt: 数组访问、遍历、越界

概念

数组是一种容器,可以存储同种数据类型(支持隐式转换)的多个值。

定义

数据类型[] 数组名
String[] students;

初始化

一旦初始化后,数组长度就固定了,可以通过arrayName.length()获取长度。

静态初始化

明确元素。

//完整
数据类型[] 数组名 =new 数据类型[]{元素去,元素2,...}
int[] arr2 = new int[]{33, 44, 55};

//简化
数据类型[] 数组名 ={元素去,元素2,...}
String[] stduents = {"tom","cat"}

动态初始化

元素不明确(如用户输入)

数据类型[] 数组名 =new 数组类型[数组长度];
int[] arrAge = new int[50];

动态初始化数组元素的默认值:

  • 整数类型:0
  • 小数类型:0.0
  • 字符类型:‘/u0000’空格
  • boolean:false
  • 引用类型:null
public class Main {
    public static void main(String[] args) {
        String[] strings = new String[3];
        for (int i = 0; i < strings.length; i++) {
            System.out.print(strings[i] + " "); // null null null
        }
    }
}

数组的访问

数组的地址值

public class Main {
    public static void main(String[] args) {
        String[] student = {"tom", "cat", "jay"};
        System.out.println(student); //[Ljava.lang.String;@1b6d3586
    }
}

[:表示数组

L:表示数组元素是引用类型

java.lang.String:数组元素类型是 String

@:间隔符

1b6d3586:对象的哈希码的无符号十六进制。但需要注意的是,这个哈希码并不是数组在内存中的实际地址,Java 出于安全考虑,不允许直接访问对象的内存地址。

数组元素的访问

索引:0~(arrylength-1)

数组名[索引];
public class Main {
    public static void main(String[] args) {
        String[] student = {"tom", "cat", "jay"};
        System.out.println(student[0]); //tom
        String s = student[1];
        System.out.println(s); //cat
    }
}

数组元素赋值后原来的值就被替换了。

public class Main {
    public static void main(String[] args) {
        String[] student = {"tom", "cat", "jay"};
        System.out.println(student[1]); //cat
        student[1] = "liBai";
        System.out.println(student[1]); //liBai
    }
}

数组遍历

可以搭配循环

  • 打印数组元素
  • 数组计算和赋值
  • ……

IDEA中可以使用arrayName.fori快速生成结构。

public class Main {
    public static void main(String[] args) {
        String[] student = {"tom", "cat", "jay"};
        for (int i = 0; i < student.length; i++) {
            System.out.print(student[i] + " "); //tom cat jay
        }
    }
}
public class Main {
    public static void main(String[] args) {
        int[] studentAge = {12, 13, 9, 25, 24, 8};
        int var = 15;
        int sum = 0;
        for (int i = 0; i < studentAge.length; i++) {
            if (studentAge[i] < var) {
                sum++;
            }
        }
        System.out.println("年龄小于" + var + "的学生有" + sum+"个"); //年龄小于15的学生有4个

    }
}

索引越界异常

public class Main {
    public static void main(String[] args) {
        String[] student = {"tom", "cat", "jay"};
        System.out.println(student[-1]); // 索引越界
        System.out.println(student[0]);
    }
}

image-20230723143349186

二维数组

静态初始化

//完整
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2},{元素1,元素2}...};
int[][] arr = new int[][]{{1,100},{2,98}};

//简化
数据类型[][] 数组名 = {{元素1,元素2},{元素1,元素2}...};
int[][] arr = {{1,100},{2,98}};

动态初始化

数据类型[][] 数组名 = new 数据类型[m][n];
int[][] arr = new [2][3];

获取值和遍历

public class Main {
    public static void main(String[] args) {
        int[][] arr = {{1, 100}, {2, 98}};
        System.out.println(arr[0][1]);
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

public class Main {
    public static void main(String[] args) {
        int[][] arr = new int[2][3];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                arr[i][j] = 1;
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

image-20230724115810001

标签:String,student,int,System,数组,public,out
From: https://www.cnblogs.com/SimpleWord/p/17689190.html

相关文章

  • 【笔记】二维数组在内存地址中的存储
    最近在学习STM32的ADC和DMA多通道采集过程中有使用到二维数组,姑且记录一下以作备忘。参考:http://c.biancheng.net/view/2022.html举个例子就能很简单的说明了创建一个M行N列的int数组,数组定义如下(例:M=3N=5)#defineM3#defineN5intarr[M][N];给数组按顺序赋值int(*......
  • ACM模式下快速读取二维数组
    ACM二维数组的读取输入550100001110000000111000010读取Scannerin=newScanner(System.in);introw=in.nextInt();intcol=in.nextInt();int[][]arr=newint[row][col];for(inti=0;i<row;i++){for(intj=0;j<col......
  • Java从入门到精通-数组(二)
    4.数组的基本操作数组的基本操作包括遍历数组、填充替换数组元素、对数组进行排序、复制数组以及查询数组中的元素。•4.1遍历数组遍历数组是访问数组中所有元素的过程,通常使用循环完成。使用 for 循环遍历数组:int[]numbers={1,2,3,4,5};for(inti=0;i<numbers.l......
  • 数组学习
    这个是数组中的Arrays类,里面有很多种方法,然后几种常见的在PPT上 数组就是,如上图所示,行与行之间用逗号隔开,也装在大括号里,这个点不太熟悉......
  • 数组
    这边是java数组的初始化,C++有同有异;然后nums.length可以获取数组长度......
  • 多维数组
    #include<stdio.h>#include<stdlib.h>#defineM3#defineN3voidinput(inta[][N],intm){ inti,j; for(i=0;i<m;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]);}voidoutput(inta[][N],intm){ in......
  • day2 - 数组part02
    力扣977.有序数组的平方思路1:双指针,在数组中心的两个数,作为左右指针的开始,循环比较左右指针,找出最小的平方,插入到结果数组中。此思路是错误的,因为数组中心不见得是平方最小的数,比如数组:-4,-3,-2,-1如果要输出的话,第一个就应该输出-1,并不是最中心的数。思路2:那我先遍历数组,找出......
  • 数组模拟链表 模拟栈和队列 单调栈和队列(9/7 9/8)
    单链表数组模拟链表可以加快速度,更利于优化算法#include<iostream>usingnamespacestd;constintN=100010;inte[N],ne[N],head,idx;voidinit(){head=-1;idx=0;}voidadd_head(intx){e[idx]=x;ne[idx]=head;head=idx++;}void......
  • KMP字符串对比算法及next数组计算
    (注:该贴主要运用python实现该算法)先谈谈KMP算法吧。KMP算法的全称是Knuth-Morris-Pratt算法,它是用来进行字符串查找,即在某个主字符串里面找到某个特定子字符串。但是好像这个问题也可以直接暴力查找来完成啊,可是暴力查找的的缺点是不可忽视的:它的时间复杂度太高了!一旦遇......
  • JavaNote04-数组与排序算法
    1.数组的概述1.1数组的概念数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组中的概念:数组名、下标(或索引)、元素、数组的长度数组的特点:数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基......