Java:为什么可以';使用{..}返回数组而不使用新运算符?

Java:为什么可以';使用{..}返回数组而不使用新运算符?,java,arrays,Java,Arrays,我在网站上搜索了很多,但是没有找到任何相关的问题。所以我相信它不是复制品 我知道我们可以用3种方法初始化数组: char[]charAr=新字符[10] char[]charAr={'a','b','c'} char[]charAr=new char[]{'a','b','c'} 第一个问题是:{'a','b','c'}这类东西的名字是什么?它被称为数组文本吗 第二个问题是:newchar[]{'a','b','c'}与{'a','b','c'}之间有什么区别 第三个问题是:为什么我不能用{

我在网站上搜索了很多,但是没有找到任何相关的问题。所以我相信它不是复制品

我知道我们可以用3种方法初始化数组:

  • char[]charAr=新字符[10]
  • char[]charAr={'a','b','c'}
  • char[]charAr=new char[]{'a','b','c'}
第一个问题是:
{'a','b','c'}
这类东西的名字是什么?它被称为数组文本吗

第二个问题是:
newchar[]{'a','b','c'}
{'a','b','c'}
之间有什么区别

第三个问题是:为什么我不能用
{'a','b','c'}
返回一个新创建的数组? 我必须返回
新字符[]{'a','b','c'}

第四个问题:
newchar[10]
newchar[]{'a','b','c'}
都是数组的构造函数,对吗

第一个问题是:{'a','b','c'}这类东西的名字是什么?它被称为数组文本吗

Java中没有数组文本,它们用元素填充数组,即初始化

第二个问题是:新字符[]{'a','b','c'}与{'a','b','c'}之间有什么区别

第一个称为*内联数组声明*

使用second,可以将其分配给已定义类型的数组

我举的例子如下:

第三个问题是:为什么我不能返回一个新创建的带有{'a','b','c'}的数组?我必须返回新的字符[]{'a','b','c'}

因为在第一种情况下,类型丢失,编译器不知道它们是哪种类型的元素

第四个问题:newchar[10]和newchar[]{'a','b','c'}都是数组的构造函数,对吗

即创建具有指定长度的字符数组

  • 编译器填充它,因为它能够推断它
  • 因为在返回行中,语言没有提供这一点
  • 在宣言中:

    char[ ] charAr={'a', 'b', 'c'};
    
    数组
    {'a','b','c'}
    称为数组初始值设定项。如中所述。它只能这样写(前面没有
    newchar[]
    ),作为变量声明的一部分

    在任何其他地方(包括
    return
    语句),都需要使用数组创建表达式。这些在中进行了描述。声明变量时,可以使用数组初始值设定项或数组创建表达式初始化变量。这就是为什么在声明变量时,
    newchar[]
    似乎是可选的


    关于第四个问题:从技术上讲,它们不是“构造函数”(在Java术语中有特定的含义),但它们都构造数组(或者更准确地说,它们都创建数组)。

    第一个问题答案:-{a,b,c}是编译时赋予数组的值。 所以,这个东西的名字是数组初始化。。。。这些不是文字

    第二个问题答案:-区别在于[]{a,b,c}调用参数化构造函数,{a,b,c}只是初始化数组

    第三:我不能得到你的任务

    第四:是的,两人都是建设者

    char[ ] charAr=new char[10];
    
    是正确的数组声明。您可以将charAr分配给另一个char数组

    char[ ] charAr=new char[]{'a','b','c'};
    
    char[ ] charAr={'a', 'b', 'c'};
    
    在一行中进行声明和初始化的语法。您可以将其重新分配给新的字符数组

    char[ ] charAr=new char[]{'a','b','c'};
    
    char[ ] charAr={'a', 'b', 'c'};
    
    是一个数组文本。只能在定义数组的位置指定文字值。不能将其重新分配给新的字符数组

    char[ ] charAr=new char[]{'a','b','c'};
    
    char[ ] charAr={'a', 'b', 'c'};
    

    您无法返回数组文本,因为在编译期间,编译器不知道您返回的元素的类型。

    {'a','b','c'}
    在Java中不能单独存在。Java中没有数组文字。@LutzHorn非常感谢。关于第四个问题:数组初始值设定项可能是一个更好的术语?@user503413-应该是,除非已经使用了这个术语。(请参见我对第一个问题的回答。)它们都是数组创建表达式。@TedHopp您很好地回答了我的问题。谢谢