java一维数组、二维数组初始化

java一维数组、二维数组初始化版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。…

大家好,又见面了,我是你们的朋友全栈君。

一维数组与二维数组的声明

一维数组的声明:

  1. int[] a; //只声明数组a,没有初始化

  2. int[] a = new int[5]; //初始化为默认值,int型为0

  3. int[] a = {1,2,3,4,5}; //初始化为给定值

  4. int[] a = new int[] {1,2,3,4,5}; //初始化为给定值

    int[] a = new int[5] {1,2,3,4,5}; //错误,如果提供了数组初始化操作,则不能定义维表达式

  5. int[] a; a = new int[5]; //正确,与(2)相同

    int[] a; a = {1,2,3,4,5}; //错误,数据常量只能在初始化操作中使用,如(3)

  6. int a[]; a[0] = 1; a[1] = 2; //错误,因为数组没有初始化,不能直接赋值

二维数组的声明:

  1. int[][] a; //只声明数组a,没有初始化

  2. int[][] a = new int[2][3]; //初始化为默认值,int型为0

  3. int[][] a = {
    {1,2},{2,3},{3,4}}; //初始化为给定值

    int[][] a = {
    {1,2},{2,3},{3,4,5}}; //正确,数组空间不是连续分配的,所以不要求每一维的空间大小相同

  4. int[][] a = new int[2][];

    a[0] = new int[3]; // a[0]其实就是一个一维数组

    a[1] = new int[4]; //每一维的大小可以不一样

  5. int[][] a = new int[][]{
    {1,2},{2,3},{3,4,5}}; //正确,与(3)相同

    int[] a = new int[5]{
    {1,2},{2,3},{3,4,5}}; //错误,如果提供了数据初始化操作,则不能定义维度表达式

    int[][] a = new int[2][]; a[0] = {1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用

  6. int[][] a = new int[2][]; a[0][1] = 1; //错误,第二维没有初始化,不能赋值。出现java.lang.NullPointerException异常

总结

  1. 数组是对象类型数据,声明数组时注意new的使用 二维数组就是数组的数组,里面的数组大小不要求一样
  2. 不管是一维数组还是二维数组,在使用前(赋值,访问)必须初始化,可以使用new默认初始化,也可以用数组常量初始化
  3. 声明数组是,一定要考虑数组的最大容量,防止容量不够的现象。数组一旦被声明,它的容量就固定了,不容改变。如果想在运行程序时改变容量,就需要用到数组列表
  4. 数组有一个缺点,就是一旦声明,就不能改变容量,这个也是其使用率不高的原因,一般存储数据会使用数组列表或vector,这两种数据结构来存储数据

数组的初始化

  • 动态初始化:数组定义与为数组分配空间和赋值操作分开进行(静态初始化是在声明数组的同时进行辅助,动态初始化是在先声明数组,然后再对其进行赋值)
  • 静态初始化:在定义数组的同时就为数组元素分配空间并赋值(静态初始化是在声明数组的同时进行辅助,动态初始化是在先声明数组,然后再对其进行赋值)
  • 默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被默认初始化

静态初始化

int intArray[] = { 
   1,2,3,4};
String stringArray[] = { 
   "abc" ,"bcd", "cde" };
//TestS.java(静态)
public class TestS{ 
   
    public static void main(String[] args) { 
   
		int[] a = { 
   1,2,3};
		Time times[] = { 
   new Time(15,53,23),new Time(15,52,24),new Time(15,51,25)};
		System.out.println("a[0] = " + a[0] + "\n" + "a[1] = " + a[1] + "\n"  + "a[2] = " + a[2]);
	}
}
 
class Time{ 
   
	int hour,min,sec;
	Time(int hour,int min,int sec){ 
   
		this.hour = hour;
		this.min = min;
		this.sec = sec;
	}
}

动态初始化

int intArray[];    intArray = new int[5];
String stringArray[];    stringArray = new String[3];  //为数组中每个元素开辟引用空间(32位)
stringArray[0] = new String("How");  //为第一个数组元素开辟引用空间(32位)
stringArray[1] = new String("are");  //为第二个数组元素开辟引用空间(32位)
stringArray[2] = new String("you");  //为第三个数组元素开辟引用空间(32位)
//TestD.java(动态)
public class TestD{ 
   
	public static void main(String[] args) { 
   
		int[] a;
		a = new int[3];
		a[0] = 0;
		a[1] = 1;
		a[2] = 2;
 
		Date days[];
		days = new Date[3];
		days[0] = new Date(2019,1,7);
		days[1] = new Date(2019,1,8);
		days[2] = new Date(2019,1,9);
 
		System.out.println("days[0] = "+days[0] + "\n" +"days[1] = "+days[1] + "\n"+"days[2] = "+days[2]);
	}
}
class Date{ 
   
    int year,month,day;
    Date(int year,int month,int day){ 
   
    	this.year = year;
    	this.month = month;
    	this.day = day;
    }	
}

默认初始化

//TestDefault(默认)
public class TestDefault{ 
   
	public static void main(String[] args) { 
   
		int[] a = new int[5];
		System.out.println(""+a[3]);
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141204.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java 环境配置(详细教程)「建议收藏」

    java 环境配置(详细教程)「建议收藏」文章目录前言一、jdk下载二、windows1、jdk安装2、环境变量的配置3、检测是否配置成功前言java环境配置,网上教程很多,那我为什么还要写?首先为了完善我的知识体系今后一些软件的安装教程也可能会用到想写一个更加详细的,因为这并不仅仅是写给IT行业的,其它行业可能也需要配置java环境提示:以下是本篇文章正文内容,下面案例可供参考一、jdk下载如果你电脑已经下载了jdk,那就恭喜你可以跳过这一步了jdk的下载路径:https://www.oracle.co

  • 第二十九课.回声状态网络ESN[通俗易懂]

    第二十九课.回声状态网络ESN[通俗易懂]目录EchoStateNetworkEchoStateNetwork回声状态网络(EchoStateNetwork)又称为库计算,即ReservoirComputing,被视为是一种神经网络的扩展。ReservoirComputing多用于处理时间序列的预测问题,比如下图:给定一个信号序列:u(0),u(1),…,u(Nt−1)\textbf{u}(0),\textbf{u}(1),…,\textbf{u}(N_{t}-1)u(0),u(1),…,u(Nt​−1)给定

  • 关于部分动态爬虫「建议收藏」

    关于部分动态爬虫「建议收藏」前言爬虫的动态处理方法(我用较为简单的一些网址举例比如豆瓣的热门电影)一、动态爬虫动态爬虫与静态爬虫的最大区别就是源代码与网页内容不同,动态爬虫可以通过抓包(就是直接利用浏览器的F12进行network抓包,获取相关对应的文件)二、使用步骤1.先通过网址找到需要的东西截图如下(示例):按F12进入开发者模式,第二步点击左上角刷新重新加载一下内容,第三步在红框里选取需要的内容,可以通过“预览”来查看是否对应查找正确之后然后在“标头”里找到“请求URL”以及“User-Agent”,把这些找到

  • 当在Windows上安装SQL Server,点击setup,出现以下错误0 x84b10001[通俗易懂]

    当在Windows上安装SQL Server,点击setup,出现以下错误0 x84b10001[通俗易懂]当在Windows上安装SQLServer,点击setup,出现以下错误0x84b10001这个错误是系统文件损坏的原因造成的;解决办法:方法1.在命令提示符(管理员)中输入命令sfc/scannow,确认等待完成;之后在进行安装就可以了;2.去C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config配…

  • modprobe命令不能用_modprobe查看已加载模块

    modprobe命令不能用_modprobe查看已加载模块modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。语法modprobe(选项)(参数)选项 -a或–all:载入全部的模块; -c或–show-conf:显示所有模块的设置信息; -d或–debug:使用排错模式; -l或–li.

    2022年10月24日
  • 异步fifo的工作原理_netty的异步实现原理

    异步fifo的工作原理_netty的异步实现原理FPGA(一):异步FIFO实现(包含源码和仿真文件)一、异步FIFO的重要参数及其作用1、FIFO:FirstInputFirstOutput,即先入先出队列,本质是RAM。FIFO有几个最重要的参数:2、wr_clk:写时钟,所有与写有关的操作都是基于写时钟;3、rd_clk:读时钟,所有与读有关的操作都是基于读时钟;4、FIFO_WIDTH:FIFO的位宽,即FIFO中每个地址对应的数据的位宽;5、FIFO_DEPTH:FIFO的深度,即FIFO中能存入多少个(位宽为FIFO_

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号