第四章 4.1 数组/main方法(arg参数)/二维数组

一. 数组概述

二. 数组的优点和缺点

总结:以int为例,局部变量表知道0索引得地址,数组存储得数据类型都是同类型的,int每个占四个字节,计算机通过计算能够得到所需要的地址,很方便。

时间复杂度为O(1),1代表固定不变,因为数组在寻找的是通过计算得出的位置,可以理解为一个公式计算。

三. 一维数组

静态初始化数组

for each循环

增强for循坏/for-each循坏。JDK5的新特性:
for each语法结构:
for(数据中元素的数据类型 变量名:数组名){}
注意:变量名代表数组中的每个元素

for(int num:arr){}

动态初始化数组

四. 相关问题

②一维数组存储引用时的内存图

⑥main函数

1.作用:接收命令行参数用的。

2.JVM负责调用ArrayTest.main()方法。

   JVM给main方法准备一个String[ ]一维数组的对象。

3.java ArrayTest abc def xyz

        底层JVM是怎么做的?

                命令行参数:"abc def xyz"

                JVM会将以上字符串以“空格”进行拆分,生成一个新的数组对象

                最后这个数组对象是:string[]args={"abc","def","xyz"};

4.命令行参数有什么用?(基于dos黑窗口的用户和密码输入,例如mysql黑窗口登录)

        需求:使用该系统的时候,需要提高正确的用户名和密码

        如果用户名admin,并且密码是admin123,则表示是合法的,其他用户是非法的。

public class ArrayTest {
    public static void main(String[] args) {
        System.out.println(args);
        //[Ljava.lang.String;@b4c966a(JVM给创建的数组对象。)
        System.out.println(args.length); //结果为 0
    }
}

这个main方法是自己负责写,JVM负责调用。

----------------------------------------------------------------------------

运行结果:

⑦方法的可变长参数

public static void mi(int...num){}

1.数组的长度一旦确定不可变。
2、如果数组满了,想存储更多的数据,只能创建一个新的数组,将原数组中的数据全部拷贝到新数组当中。这样就可以完成扩容了。
3.怎么优化?建议减少扩容次数。建议预测数据量,创建一个容量差不多的数组。
4.扩容的时候需要使用到数组的拷贝?怎么拷贝?
        System.arraycopy()

五. 二维数组

二维数组是数组中存的是一个数组的内存地址,无限套娃

package com.baidu.com.jia.Day401;

/**
    二维数组的动态初始化:
        等长
            int[][] arr = new int[3][4]
        不等长
            int[][] arr = new int[3][]
 **/
public class ArrayTest {
    public static void main(String[] args) {

        //二维数组的静态初始化
        int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
        System.out.println(arr[0].length);//{1,2,3}它的长度为3

        //二维数组动态初始化

        //等长
        int[][] arr1 = new int[3][4];

        //遍历
        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr1[i].length; j++) {
                System.out.println(arr1[i][j] + " ");
            }
            //换行
            System.out.println();
        }
        
        //不等长
        int[][] num = new int[3][];
        num[0] = new int[]{1,2,3};
        num[1] = new int[]{4,5,6};
        num[2] = new int[]{7,8,9};
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < num[i].length; j++) {
                System.out.println(num[i][j] + " ");
            }
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值