在Java / Android中将参数放在参数之前有什么意义?

时间:2011-01-08 22:58:21

标签: java android

在任何变量或参数之前放置$ sign的区别或意义是什么。

e.g。

假设这是我的班级......

 public class Vector3 {
      public Vector3(float x, float y, float z){
           //...
          //... my ctor code
          //...
      }
 }

这两个声明之间的区别是什么......

声明1

 Vector3 $vec = new Vector3(1f,1f,1f);

声明2

 Vector3 vec = new Vector3(1f,1f,1f);

如果您在声明1和声明2中的“vec”之前注意到$ sign。

任何线索?

另外,声明与下面相同的构造函数,

public class Vector3 {

    public Vector3(float $x, float $y, float $z){
    //...
    //... my ctor code
    //...
    }
}

上面的构造函数和初始构造函数之间有什么区别?

...谢谢

编辑:感谢你的所有回复,我用不同的组合做了这个,没有重大意义:)我很感谢你的所有答案。

5 个答案:

答案 0 :(得分:11)

编译并运行。小孩你不是。

package $;

public class $
{
    int $;

    int $(int $){ return $; }
    void $$(int $){ this.$=$; }

    $ _(){ return this; }

    $ _;

    {
        $$($($));

        _._()._._()._();
    }
}

答案 1 :(得分:10)

根据Java Language Specification,这是允许的,但没有特别的意义。请注意,该规范继续建议它“仅用于机械生成的源代码,或者很少用于访问遗留系统中预先存在的名称”。

答案 2 :(得分:7)

虽然很多人都指出$legal in identifiers,但我反驳使用$(至少作为初始代币),因为它与Java Naming Conventions相反:

  

变量名称不应以下划线_或美元符号$字符开头,即使两者都允许。

虽然这不包括foo$bar的情况,但我遵循JLS建议,$仅在生成的代码中使用 。例如,Java编译器在生成匿名类时使用$

如果没有别的,我会认为你的代码很丑: - )

答案 3 :(得分:3)

我不相信它只是用于Java变量名称的有效符号。从关于变量的Java教程(http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html):

  

变量名称区分大小写。变量的名称可以是任何合法的标识符 - 无限长度的Unicode字母和数字序列,以字母开头,美元符号“$”或下划线字符“_”。然而,约定是总是用一个字母开始你的变量名,而不是“$”或“_”。此外,按照惯例,美元符号字符根本不会被使用。您可能会发现某些情况,其中自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。对于下划线字符存在类似的约定;虽然用“_”开始变量的名称在技术上是合法的,但不鼓励这种做法。不允许有空白区域。

答案 4 :(得分:0)

  

变量名称区分大小写。变量的名称可以是任何合法标识符 - Unicode字母和数字的无限长度序列,以字母开头,美元符号“$”或下划线字符“”。但是,惯例是始终使用字母开头,而不是“$”或“”。此外,按照惯例,美元符号字符根本不会被使用。您可能会发现某些情况,其中自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。对于下划线字符存在类似的约定;虽然用“_”开始变量的名称在技术上是合法的,但不鼓励这种做法。不允许有空格。

取自:ttp://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html#naming