Java 学习指南_学习Java:基础-变量Variables

变量Variables

上一课中你已经学到,对象将他的状态存储在fields中。

1
2
3
int cadence = 0;
int speed = 0;
int gear = 1;

什么是对象的讨论中介绍了fields,但是你可能仍有一些问题,比如。fields的命名规则以及约定是什么?另外除了int,还有什么其他数据类型?Fields在声明的时候是否必须初始化?如果field没有被显式的声明呢么它是否包含一个初始值?本节将揭示这些问题的答案。但是在这之前你必须了解到一些区别。在Java编程语言中,fieldvariable同时使用;者常常会是初级开发者感到困惑,好像两者表达的是同一样事物。

Java编程语言定义了如下几种变量:

  • 实例变量(非静态属性或者成员变量)Instance Variables (Non-Static Fields)

    专业的说法应该是,对象将他们的状态存储在在非静态属性中,也就是,那些声名时木有被static关键字修饰的属性。非静态属性也称作实例变量,因为针对每一个类的实例(或者每一个单独的对象),它们得值都时独立的;一辆自行车的当前速度与另一辆是独立的。

  • 类变量(静态属性)Class Variables (Static Fields)

    类变量声明时用static关键字修饰;这就告诉编译器不管类被实例化多少次,这个变量都只有一份存在。定义了某一特殊类型的自行车齿轮数的变量可能被定义为static变量。因为从概念上来说多有这种自行车的实例齿轮数都是一样的。代码 static int numGears = 6; 可以创建这样一个变量。另外,加上关键词 final 可以表明齿轮数量时永远不允许改变的.

  • 局部变量Local Variables

    与对象用成员变量fields来存储它的属性一样,方法也经常将他的临时状态存储在局部变量中。声明局部变量的语法与声明成员变量的语法类似。例如int count = 0;.没有特别的关键字表明一个变量是局部变;是否为局部变量完全取决与声明这个变量的位置–在一个方法的开始结束花括号内声明。因此,局部变量也只对它存在的方法可见;类中其他代码无法访问。

  • 参数Parameters

    你已经见过参数的例子,在Bicycle类以及“Hello world”应用的main方法里都出现过。回忆一下main方法的声明是public static void main(String[] args).这里的args变量是这个方法的参数。需要记住的比较重要的是参数一般被分类为“variables”变量而不是“fields“字段。参数同样适用与其他允许有参数的地方(例如构造函数以及异常处理),后续教程都会陆续学到。

教程的剩余部分在讨论fields与variable是将遵循以下约定。当我们讨论一般的fields时(不包括局部变量与参数)会统称为fields。如果讨论适用于以上所有内容时统称为variable。如果涉及到具体内容,我们会适用专业术语(static field类变量,local variable局部变量等等)以加强理解。你也有可能碰到专业术语”member“,一个类的fields属性,方法以及嵌套类全部都叫做类的成员members。

命名

每一种编程语言都有一套各种你可用的名字的命名规则和约定,Java也不例外。关于变量的命名规则与约定可以总结为以下几点:

  • 变量名称是大小写敏感的。以Unicode字符或者$_开头的任意长度的Unicode字符和数字序列作为变量名都是合作的。但是按照管理以及俗成的约定一般以字符为变量开头而不妖用$_.特别是$基本上从不作为变量名。你可能会发现有些情况下自动生成的名字可能会包含$符号,但是你仍然要避免是用其作为变量名。这样的惯例也同样适用与_.尽管适用下划线开头的变量名是合法的,实际不鼓励使用。不允许使用空格。
  • 首字符之后的字符可以是字母,数字,美元符号以及下划线。约定和常识也同样适用与此规则。当选择变量的名字时。尽量用单词的全拼代替难以辨别的缩写。这样做可以是代码更易于阅读和理解。许多情况下使你的代码自带文档属性;属性cadence, speed, gear,与 s, c, g比起来,更加的直观易懂.另外注意不允许适用Java的关键词和保留字作为变量名。
  • 如果你的变量名只包含一个单词,用小写拼写。如果包含多个单词,从第二个开始首字母大写。命名gearRatiocurrentGear都是规范示例。如果你的变量保存了一个常量constant value,例如static final int NUM_GEARS=6, 约定为多有的单词大写,过个单词用_下划线链接。实际上按照约定下划线基本不在其他地方出现。
Enjoy it ? Donate me ! 欣赏此文?支持一下 !