当前位置: 首页 > 面试题库 >

Java:为什么没有新的运算符就不能使用{..}返回数组?

程沛
2023-03-14
问题内容

我在网站上进行了很多搜索,但未找到任何相关问题。因此,我相信这不是重复的。

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

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

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

第二个问题是:new char[]{'a','b','c'}with和有{'a','b','c'}什么区别?

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

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


问题答案:

在声明中:

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

该数组{'a', 'b', 'c'}称为 数组初始化器
。它描述在Java语言规范的第10.6节。它只能这样写(不带new char[]在前面)作为变量声明的一部分。

在任何其他地方(包括return语句),您都需要使用 数组创建表达式
。JLS的15.10节对此进行了描述。声明变量后,可以使用数组初始化程序或数组创建表达式对其进行初始化。这就是为什么在new char[]声明变量时似乎是可选的。

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



 类似资料:
  • 我使用的是我的代码中有两个可观察的对象 观察值不是来自请求,而是来自 我需要根据这个逻辑将序列组合/转换成一个单一的可观察值: 如果序列,或,-需要返回新的可观察的否则需要返回 我试图使用来实现: 但问题是我的

  • 这个问题基本上是说迭代一个整数,然后计算这个数是否可以被它的左边数整除,如果它可以整除,则返回一个布尔数组。 73312 第一个数字没有左边的数字,所以它是假的 我运行了测试,一切都很好,但是有了这个数字(73312),当它应该返回false时,它会返回true。 预期输出 实际输出

  • 问题内容: 为什么在Python中没有and运算符? 问题答案: 不是因为它没有道理;而是因为它没有意义。最好将“ x ++”定义为“ x + = 1,求出x的先前绑定”。 如果您想知道最初的原因,则必须浏览旧的Python邮件列表,或者询问那里的某个人(例如Guido),但是在事实成立之后就很容易找到理由了: 与其他语言一样,不需要简单的增量和减量。您不会经常用Python编写东西。相反,你做类

  • 我正在创建一个进行线性探测以查找键索引的哈希图。如果键已经在索引中,我想增加它的值,而不是向新索引添加一个。 例如,如果我得到字符串“五,五,五”的字数,我的输出是五1,五1,五1,而不是五3。 我认为一定是我的 containsKey 方法,它使用 get 方法来检查我的密钥是否已在映射中。下面是我的Hashmap.java类。

  • 问题内容: um(使用Java 7(1.7.0_67))并将项目语言级别设置为7-钻石,ARM,多捕获。我的代码如下,使用maven进行构建时会引发编译错误的行。 InstrumentingAgent第63行中的多捕获块 编译时出现以下错误。为什么不起作用?我究竟做错了什么。我正在使用IntelliJ IDE。 根据我所读的内容,钻石算子应该与Java 7一起使用。但是为什么我要使用它。如果我用相

  • 问题内容: 它们都是int的,为什么B&C不能编译?与运算符的区别方式有关吗? 无效的操作参数++ /- 问题答案: 是对变量的赋值。 就您而言,等于。因此,这也意味着没有意义。 更精确地 : 手段 手段 手段 从更一般的角度来看,变量是 L值 ,表示它是指内存位置,因此可以分配。 L 值中的 L 代表赋值运算符(即)的 左侧,即使可以在赋值运算符的左侧或右侧找到L值(例如)。 相反的是 R值 (