java字符串数组初始化和赋值[通俗易懂]

java字符串数组初始化和赋值[通俗易懂]//一维数组String[]str=newString[5];//创建一个长度为5的String(字符串)型的一维数组String[]str=newString[]{“”,””,””,””,””};String[]str={“”,””,””,””,””};String数组初始化区别      首先应该明白java数组里面存的是对象的引用,所以必须初

大家好,又见面了,我是你们的朋友全栈君。//一维数组

String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组

String[] str = new String[]{“”,””,””,””,””};

String[] str = {“”,””,””,””,””};

String数组初始化区别

       首先应该明白java数组里面存的是对象的引用,所以必须初始化才能用;

  String[] str = {“1″,”2″,”3”}与String[] str = newString[]{“1″,”2″,”3”}在内存里有什么区别?

  编译执行结果没有任何区别。更不可能像有些人想当然说的在栈上分配空间,Java的对象都是在堆上分配空间的。

  这里的区别仅仅是代码书写上的: 

String[] str = {“1″,”2″,”3”}; 这种形式叫数组初始化式(ArrayInitializer),只能用在声明同时赋值的情况下。

  而 String[] str = new String[]{“1″,”2″,”3”}是一般形式的赋值,=号的右边叫数组字面量(ArrayLiteral),数组字面量可以用在任何需要一个数组的地方(类型兼容的情况下)。如:

  String[] str = {“1″,”2″,”3”}; // 正确的

  String[] str = new String[]{“1″,”2″,”3”} // 也是正确的

而

  String[] str;

  str = {“1″,”2″,”3”}; // 编译错误

因为数组初始化式只能用于声明同时赋值的情况下。

改为:

  String[] str;

  str = new String[] {“1″,”2″,”3”}; // 正确了

又如:

  void f(String[] str) {

  }

  f({“1″,”2″,”3”}); // 编译错误

正确的应该是:

  f(new String[] {“1″,”2″,”3”});

还可以 String s=new String[30];

如果没有显式赋值,则系统自动赋默认值null。


PS:

  笔者所犯错误为在初始化数组的时候定义为String[] str = newString[]{},如此定义相当于创建了创建一个长度为0的String(字符串)型的一维数组。在后期为其赋值的时候str[0]=”A”,就会抛出异常。

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

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

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

相关推荐

  • pycharm2021.3激活 3月最新注册码

    pycharm2021.3激活 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
  • 大数据_01【介绍】

    大数据_01【介绍】大数据_01【介绍】大数据特点大数据能做什么【海量数据背景下】大数据行业的应用大数据发展前景大数据部门组织结构什么是大数据 指数据集的大小超过了现有典型数据库软件和工具的处理能力的数据大数据特点海量化 数据量从TB到PB多样化 数据类型复杂,超过百分之八十是非结构化的[结构化数据半结构化数据完全非结构化数据]快速化 数据量在持续增加(两位数的增长率),数据处理速度要求高高价值 在海量多样数据的快速分析下能发挥出更高的数据价值大数据能

    2022年5月10日
  • 基于udp的socket编程 c语言_C语言编程游戏

    基于udp的socket编程 c语言_C语言编程游戏1、UDP网络编程主要流程UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。框图如图1.3所示UDP协议的服务器端流程服务器流程主要分为下述6个部分,即建立套接字、设置套接字地址参数、进行端口绑定、接收数据、发送数据、关闭套接字等。(1)建立套接字文件描述符,

    2022年9月8日
  • pycharm加注释的快捷方式_pycharm出现缩进错误

    pycharm加注释的快捷方式_pycharm出现缩进错误1.注释pycharm注释快捷键:"Ctrl" +  "/"2.批量缩进(或名"对齐")缩进:Tab反向缩进:Shift+Tab

    2022年8月27日
  • struct的用法「建议收藏」

    struct的用法「建议收藏」使用结构体类型处理组合数据:即用户自定义数据类型。1c语言提供了很多系统类型。如intcharfloatdouble等等,但是这都是单一的数据类型,如果对于一个学生作为一个整体的话,那么他的

    2022年8月3日
  • 简易SDRAM控制器的verilog代码实现

    简易SDRAM控制器的verilog代码实现SDRAM是每隔15us进行刷新一次,但是如果当SDRAM需要进行刷新时,而SDRAM正在写数据,这两个操作之间怎么进行协调呢?需要保证写的数据不能丢失,所以,如果刷新的时间到了,先让写操作把正在写的4个数据(突发长度为4)写完,然后再去进行刷新操作;而如果在执行读操作也遇到需要刷新的情况,也可以先让数据读完,再去执行刷新操作。思路:SDRAM控制器包括初始化、读操作、写操作…

    2022年7月25日

发表回复

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

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