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


相关推荐

  • alibaba.fastjson.JSONObject.parseObject的使用

    alibaba.fastjson.JSONObject.parseObject的使用fastjson是一个性能很好的Java语言实现的JSON解析器和生成器,当你要处理一段接收的json数据,就可以考虑使用JSONObject.parseObjectimportcom.alibaba.fastjson.JSONObject;parseObject(Stringstr)的作用JSON.parseObject(Stringstr)是将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置

    2022年7月13日
    14
  • 关于Git这一篇就够了

    关于Git这一篇就够了目录前言发展过程集中式与分布式的区别Debian/Linux安装Git配置git环境:gitconfig–global创建本地空仓库:gitinit新建文件添加到本地仓库:gitadd、gitcommit-m改写提交:gitcommit–amend查看历史提交日志:gitlog回滚代码仓库:gitreset–hard查看提交之后文件是否做了改动:gitstatus工作区与缓存区修改缓存区内容:gitadd、gitco.

    2022年5月2日
    86
  • adb安装与配置[通俗易懂]

    adb安装与配置[通俗易懂]一、前置条件安装JavaJDK,可以参考文章:https://blog.csdn.net/dou_being/article/details/105320962二、下载安装AndroidSDK或AndroidStudio,下载地址:http://tools.android-studio.org/三、配置环境变量1、Windows系统环境变量配置(1)在系统环境变量中新建变量名为adb,变量值为AndroidSDK的platform-tools文件夹和build-tools文件.

    2022年5月17日
    102
  • SFM综述

    SFM综述https://blog.csdn.net/qq_29462849/article/details/118159269

    2022年6月20日
    61
  • 浅析Java反序列化漏洞议题

    浅析Java反序列化漏洞议题

    2020年11月20日
    213
  • IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding

    IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding本篇是对压缩感知重构算法之迭代软阈值(IST)的延续,可能需要以下基础:软阈值(SoftThresholding)函数和硬阈值(HardThresholding)函数。前面我们在讨论迭代软阈值算法时提到,一般文献中出现的IST或ISTA简称中的“S”并非指的是“soft”,而是“shrinkage”,即“IterativeShrinkage/ThresholdingAlgorithm”,那么IterativeSoftThresholding和IterativeShrinkage/

    2022年6月10日
    27

发表回复

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

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