【问题标题】:difference between 'class[] arrayname' and 'class arrayname[]' [duplicate]'class [] arrayname'和'class arrayname []'之间的区别[重复]
【发布时间】:2020-09-25 12:22:41
【问题描述】:

我不明白两者的区别

String[] arrayName = {/*some data here*/};

String arrayName[] = {/*some data here*/};

在类型(String[])和数组名(String arrayName[])之后放置方括号有什么区别吗?
如果有,是什么?

【问题讨论】:

标签: java arrays syntax


【解决方案1】:

两个声明的结果相同。区别只是风格上的。话虽如此,大多数 Java 样式指南都建议在类型名称上使用方括号,而不是在变量名称上使用方括号,即:

String[] arrayName = {/*some data here*/};

【讨论】:

    【解决方案2】:

    它们几乎相同,只是在语义上有所不同。

    作者:

    String[] array;
    
    1. 您声明了名为array 的变量,其类型为String[](字符串数组);
    2. 在此代码中,您可以内联声明其他变量,具有相同的String[] 类型(String[] array1, array2;);

    作者:

    String array[];
    
    1. 您声明了一个将引用数组对象的变量,其中的元素必须是java.lang.String的类型;
    2. 您可以使用 String array[], name, surname; 之类的代码,这并不是一个真正的好代码,但 Java 语义不会阻止这一点。

    【讨论】:

    • 不,这种解释是完全不正确的——两者都声明了具有完全相同类型的完全相同的对象。您提出的第二点是正确的,但这并不能改变第一点错误的事实。
    • 您指的是哪一个第一点?在日常使用中,是的,你遇到的场合并不多,但这两个又不一样。请参阅我提供的示例。
    • “第一点”是您列举的点 (1)。我不是在谈论“日常使用”或类似的东西。我是说你所做的区分不存在。而且,与您在问题下方的评论中所说的相反,对重复问题的接受答案是正确的。
    • @KonradRudolph 我不确定我是否理解您的观点。对象在运行时将是相同的,甚至在编译时它们以相同的方式声明对象几乎。但是,您可以写String arr[], name;,而其他方式无法做到这一点,您能做些什么呢?我不认为这是完全不正确,因为即使是字节码也不同。自己看看吧。此外,我将这个答案作为标题,因为它们几乎相同。
    • “在编译时他们以同样的方式声明对象几乎”——不,不是“几乎”。 一模一样。两个array 声明具有完全相同的静态和动态类型(即[Ljava.lang.String)。不,字节码也没有区别,在两种情况下都完全相同。 — 没错,当您在单个语句中声明多个变量时,会发生不同的事情。但这与T[] objT obj[] 完全相同这一事实完全无关。
    猜你喜欢
    • 2015-10-10
    • 2011-06-09
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多