Java知识点总结二(数组)

声明一维数组

语法:

数据类型[ ] 数组名;

数据类型 数组名[ ];

代码:

int a[];          //声明整型数组
float [] b;       //声明单精度浮点型数组
char []c;         //声明字符型数组
double []d;       //声明双精度浮点型数组
boolean []e;       //声明布尔型数组

给数组分配存储空间

通过new关键字来创建一个整型数组,为其分配空间,此处array定义为int型,系统会在内存中分配100个int类型数据所占用的空间(100*4个字节),可存储100个整数。代码:

int []array = new int[100];

下面来输出一些东西。代码:

public class ArrayDemo1 {
    public static void main(String[] args){
        /*声明4个数组并为它们分配存储空间*/
        int[] a = new int[10];         //整型
        double[] b = new double[10];   //双精度浮点型
        char[] c = new char[100];      //字符型
        boolean[] d = new boolean[20]; //布尔型
        String[] e = new String[5];    //字符串数组
        /*下面输出各数组的数组名注意输出内容*/
        System.out.println(a);         //输出数组对象的哈希码
        System.out.println(b);         //输出数组对象的哈希码
        System.out.println(c);         //输出字符型数组的内容
        System.out.println(d);         //输出数组对象的哈希码
        System.out.println(e);         //输出数组对象的哈希码
        System.out.println();
        System.out.println();
        /*下面输出各数组中第一个元素的值,注意输出内容*/
        System.out.println(a[0]);
        System.out.println(b[0]);
        System.out.println(c[0]);
        System.out.println(d[0]);
        System.out.println(e[0]);
        System.out.println();
        System.out.println();
        /*下面输出各数组长度*/
        System.out.println("a.length="+a.length);
        System.out.println("b.length="+b.length);
        System.out.println("c.length="+c.length);
        System.out.println("d.length="+d.length);
        System.out.println("e.length="+e.length);
    }
}

运行结果如下:

运行结果分析运行结果:
直接输出数组名时会输出一些“[[email protected]”的信息,这些信息数组对象的哈希码(使用十六进制显示)。但是输出字符型数组时没有输出数组对象的哈希码,而是输出了一个空字符串“ ”,这是因为Java会将一个字符型数组看成一个字符串,输出该字符串的内容而不是地址。
在这里插入图片描述
当使用new分配存储空间后数组中元素会有默认初始值:

  • 数值类型(int,double,float等)初始值为0;
  • 布尔类型为false;
  • 字符型为’\0’;
  • 引用类型为null (空字符串结束标识),字符串String就是引用类型。

获取数组的长度可以用:

数组名 . length

数组的初始化

Java中数组数组的初始化有两种方式:静态初始化动态初始化
1.静态初始化
即定义数组的同时就对该数组进行初始化,此时数组长度由花括号中数值个数决定。不能指定数组大小,即“[ ]”中不能有数字,否则引发错误。但是可以使用new。代码:

int[] a = {1,2,3,4};       //数组长度为4
int[] b = new int[]{1,2,3,4};

2.动态初始化
即把数组的定义和初始化分开进行。代码:

int[] a = new int[2];
a[0] = 1;
a[1] = 2;

int[] array = new int[10];
for(int i=0;i < array.length;i++){ 
    array[i] = i+1;
}

foreach遍历数组

无需获得数组长度,也无需根据索引访问数组元素,foreach循环自动遍历数组元素。
语法:

for (数据类型 变量名 : 数组名)

代码:

public class ForeachDemo {
    public static void main(String[] args) {
        int[] array = {1,2,1,4,7};
        System.out.println("数组array中的元素是:");
        for (int e : array) {
            System.out.println(e);
        }
    }
}

运行结果:
在这里插入图片描述

二维数组

每个一维数组中的元素还是一维数组,则这个数组成为“二维数组”。
语法:

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

代码:

int[][] array;

在这里插入图片描述二维数组的初始化与一维数组类似,即静态初始化和动态初始化。
下述代码演示二维数组的使用,代码:

public class Array2DDemo {
    public static void main(String[] args){
        /*二维数组静态初始化*/
        int[][] a = {{1,2,3},{4,5,6}};
        System.out.println("数组a一维长度(行数):"+a.length);
        System.out.println("数组a二维长度(列数):"+a[0].length);
        //使用嵌套的for循环输出数组a
        System.out.println("数组a中的元素为:");
        for(int i=0;i<a.length;i++) {
            for(int j=0;j<a[0].length;j++){
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println("------我是分割线------");
        /*二维数组动态初始化*/
        int[][] b = new int[3][4];
        //使用嵌套的for循环动态初始化数组b
        for(int i=0;i<b.length;i++){
            for(int j=0;j<b[i].length;j++){
                b[i][j] = i+j;
            }
        }
        //使用嵌套的for循环输出数组b
        for(int i=0;i<b.length;i++){
            for(int j=0;j<b[i].length;j++) {
                System.out.print(b[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println("------我是分割线------");
        //声明二维数组时只给出一维长度
        int[][] c = new int[2][];
        //二维长度不等
        c[0] = new int[3];
        c[1] = new int[4];
        //使用for循环初始化数组c
        for(int i=0;i<c.length;i++){
            for(int j=0;j<c[i].length;j++){
                c[i][j] = i+j;
            }
        }
        //使用for循环输出数组c
        System.out.println("数组c中的元素:");
        for(int i=0;i<c.length;i++){
            for(int j=0;j<c[i].length;j++){
                System.out.print(c[i][j]+" ");
            }
            System.out.println();
        }
    }
}

运行结果:
在这里插入图片描述

版权声明:本文为weixin_44787544原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44787544/article/details/89087630

智能推荐

[java][事务]tcc事务实战学习过程

学习项目:https://github.com/14251104246/spring-cloud-rest-tcc 下载源码,进入源码目录运行:mvn clean package Docker Compose运行 docker-compose -f infrastructure-compose.yml up -d docker-compose -f basic-ms-compose.yml up ...

[学习记录,]Mybatis入门

环境: Eclipse 2019 Tomcat 9.0 jdk1.8 开搞 首先创建工程 结构如下 导入Jar包 可在mybatis官网下载 http://www.mybatis.cn/82.html 配置文件mybatis-config.xml 事务管理有两种:JDBC和MANAGED JDBC: MANAGED 数据源类型:UNPOOLED、POOLED、JNDI 创建实体类文件User.ja...

运用for语句来判断数组中值得大小

总结: 1将if语句与数组联合起来判断输入中各组中的最大最小值; 2注意:定义的数组数量是躲多少就要输入多少组数据,少输入就无法输出;...

Bridging signals

Bridging signals Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 10926Accepted: 5982 Description 'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. Once ...

一天一大 leet

一天一大 leet 题目(难度:困难): 示例 抛砖引玉 官方答案 高手在民间 菜鸡的自白 20200606 题目(难度:困难): 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例 示例 抛砖引玉 要求算法的时间复杂度为 O(n),即限制了只能循环一次; 先对数组排序 循环数组记录后一个元素等于前一个元素+1或者等于前一个元素的数量 满足条件++,不然重...

猜你喜欢

Tensorflow实现的CNN文本分类

https://blog.csdn.net/somtian/article/details/69359498 原博文, github 在这篇文章中,我们将实现一个类似于Kim Yoon的卷积神经网络语句分类的模型。 本文提出的模型在一系列文本分类任务(如情感分析)中实现了良好的分类性能,并已成为新的文本分类架构的标准基准。 本文假设你已经熟悉了应用于NLP的卷积神经网络的基础知识。 如果没有,建议...

JDBC新手入门教程

开发工具:idea 数据库:mysql jar包:junit-4.10 mysql-connector-java-8.0.18 junit-4.10下载 mysql-connector-java-8.0.18下载 注意1:jdbc的驱动因为使用的是mysql-connector-java-8.0.18,所以为(“com.mysql.cj.jdbc.Driver”),而不是(...

Lua 排序 table.sort

    正如C#中有Array.Sort(),lua中也有自己的排序方法即table.sort(table,function)。     lua中的排序默认是从大到小的排序;     传入一个方法参数,可以使排序从小到大; 打印结果:  ...

SURF算法简述及Python标记SURF特征检测实践

目录 一、SURF算法 1.算法简介 2.SURF与SIFT的具体差异 二、Python代码实践 1.测试环境 2.测试代码 3.核心函数 4.测试结果 一、SURF算法 1.算法简介 SURF(Speeded-Up Robust Features)加速稳健特征,是一种稳健的局部特征点检测和描述算法。 SURF是对SIFT算法的改进,该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 S...

Selenium3自动化测试——19.读取数据文件

1. 实现目标 在测试与开发中,经常需要对文件进行各种读取操作。这里介绍针对txt、csv、xml、json文件的读取。 2. 读取TXT文件 2.1 user_info.txt文件 2.2 读取txt文件.py 2.3 实现结果 3. 读取csv文件 3.1 user_info.csv  这里要注意,csv文件本身打开是utf-8的,而不是乱码 3.2 读取csv文件.py 这里,针对...