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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编程干货│全网最全 adb 命令[通俗易懂]

    编程干货│全网最全 adb 命令[通俗易懂]adb命令是Android开发和测试人员不可替代的强大工具

    2022年7月27日
    7
  • 层序遍历总结「建议收藏」

    层序遍历总结「建议收藏」以LeetCode102作为例子:题目描述思路描述层序遍历需要用到的数据结构是队列。需要考虑的问题是:如何标识当前节点的层数。有以下三种方法:方法1将每个节点表示为一个二元组(node,level),这种方法效率太低,不考虑。感兴趣可以参考方法2遍历完一层节点后,在队列中插入一个标记节点NULL,这个标记节点没有具体意义,只是标识某一层已经遍历结束。这种方法的缺点在于,假如想要在层序遍历过程中,有元素为NULL,那么标记节点就会出现混淆。这种方法的代码我经常用,如下:c

    2025年6月14日
    3
  • 矩阵的行列式、秩的意义

    矩阵的行列式、秩的意义线性代数真是一个很抽象的东西,即使我们很多人都学过,但是我相信绝大部分的都不知道这是干嘛用的,找了不少资料,终于发现了这么一篇好文章,于是强烈希望可以和大家分享,帮助大伙进一步理解矩阵的行列式和秩的本质意义。1关于面积:    一种映射 大家会说,面积,不就是长乘以宽么,其实不然。我们首先明确,这里所讨论的面积,是欧几里得空间几何面积的基本单位:平行四边形的面积。平行四边形面积

    2022年5月8日
    51
  • css background之设置图片为背景技巧

    css background之设置图片为背景技巧

    2021年9月20日
    52
  • python pandas fillna_python rfind函数

    python pandas fillna_python rfind函数本文概述我们可以使用fillna()函数填充数据集中的空值。句法DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None,**kwargs)参数值:它是一个用于填充空值的值,或者是一个Series/dict/DataFrame。method:一种用于填充重新…

    2022年8月12日
    5
  • JDK 安装与环境变量配置(Win10详细版)

    JDK 安装与环境变量配置(Win10详细版)前言为什么写这篇文章呢,因为我不想再去百度搜别人的文章了,所以自己写一篇以作记录。准备工作JDK8下载地址一个JDK安装程序,这是是1.8版本,因为新的JDK版本都没有什么很大的亮点,如下图所示,安装鼠标双击运行,选择“是”,然后如下图:点击下一步:我在这里并不修改JDK的安装路径,所以无需改动,点击下一步:安装过程中会弹出jre的安装提示框,如下所示:这里无需…

    2022年6月9日
    32

发表回复

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

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