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]);
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ms17010漏洞复现-2003

    ms17010漏洞复现-2003先使用Smbtouch模块检测一下是否有漏洞。然后使用Doublepulsar写一个shellcode到本地。生成成功后的截图:再使用EternalRomance植入Doublepulsar后门。成功的截图: PS:仿佛是由于之前已经上传过bin的缘故,第二次测试的时候失败了。但是不影响后续操作。都成功了以后该我们的Doublepulsar来反弹shell了。…

    2022年6月8日
  • 计算机修改用户名密码,怎么修改电脑用户名呢_电脑的登录名和密码在哪里

    计算机修改用户名密码,怎么修改电脑用户名呢_电脑的登录名和密码在哪里曲谱自学网今天精心准备的是《怎么修改电脑用户名》,下面是详解!如何改计算机用户名(administrator)如何改计算机用户名(administrator)…如何改计算机用户名(administrator)1、按“win+R”打开运行,在运行输入框里面输入“gpedit.msc”,如下图所示:2、进去本地组策略编辑器之后,点击“计算机配置-windows设置-安全设置-本地策略-安全选项”,…

    2022年10月14日
  • python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」

    python recvfrom函数详解_UDP sendto和recvfrom使用详解「建议收藏」在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。本篇文章跟大家分享linux下UDP的使用和实现,主要介绍下sendto()和recvfrom()两个函数的使用,以及INADDR_ANY的说明,并在最后展示了一个经过自己测试可用的UDPServer和UDPClient的代码示例。头文件#inclu…

    2022年7月23日
  • hybrid开发模式

    hybrid开发模式韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha

    2022年9月22日
  • 扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!「建议收藏」

    扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!「建议收藏」今天给大家推荐两个轻松的网站,其实是两个在线的小游戏网站,分分钟让你找回许久之前的回忆,我们一起来看看吧。01、在线俄罗斯方块网址:http://www.webgame.org.cn看到上图的画面,已经无需多说什么了,“上了年纪”的小伙伴肯定都玩过这个吧,经典中的经典。这个网页的还原度也很高,可以通过键盘控制,老Y也就玩了两个小时而已~02、在线扫雷网址:http://www.saolei.org…

    2022年10月31日
  • 学生成绩管理系统(C语言)「建议收藏」

    学生成绩管理系统(C语言)「建议收藏」思路学生成绩管理系统,首先要初始化系统,开始一个新的学生成绩系统初始化记录学生姓名,学号,院系,然后输入学生各科成绩,数学,英语,语文成绩。记录完各课成绩以后,可查看学生平均成绩和是否及格,成绩查询其中有学号查询,姓名查询,院系查询,还有全部输出,可以清晰的看到及格人数,按照分数高低排列,最后还可以添加和删除学生成绩,或者更改学生成绩,避免人为录入成绩错误。基本函数1.结构体structStudent定义一个结构体struct,结构体的关键字,students定义的结构体对象。学…

    2022年6月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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