Java变量
Java变量是一块可以包含数据值的内存。因此,变量具有数据类型。 Java数据类型的文本中更详细地介绍了数据类型。
变量通常用于存储Java程序完成其工作所需的信息。这可以是任何类型的信息,范围从文本,代码(例如国家/地区代码,货币代码等)到数字,多步计算的临时结果等。
在下面的代码示例中,main()方法包含一个名为number的单个整数变量的声明。首先将整数变量的值设置为10,然后再将20加到该变量上。
public class MyClass { public static void main(String[] args) { int number = 10; number = number + 20; } }
Java变量类型
在Java中,有四种类型的变量:
- 非静态字段
- 静态字段
- 局部变量
- 参数
非静态字段是属于对象的变量。对象将其内部状态保留在非静态字段中。非静态字段也称为实例变量,因为它们属于类的实例(对象)。 Java字段中的文本更详细地介绍了非静态字段。
静态字段是属于类的变量。静态字段对于访问它的所有对象都具有相同的值。静态字段也称为类变量。 Java字段中的文本也更详细地介绍了静态字段。
局部变量是在方法内部声明的变量。局部变量只能在声明它的方法内部访问。 Java方法的文本中更详细地介绍了局部变量。
参数是在调用方法时传递给方法的变量。尽管在调用方法时会为其分配值,但也只能在声明它们的方法内部访问参数。 Java方法的文本中也更详细地介绍了参数。
Java变量声明
变量的确切声明方式取决于变量的类型(非静态,静态,局部,参数)。但是,有一些相似之处
在Java中,我们可以这样声明一个变量:
type name ;
而不是单词" type",而是写出变量的数据类型。同样,我们要写出我们希望变量具有的名称,而不是单词" name"。
这是一个示例,声明一个名为" int"类型的名为" myVariable"的变量。
int myVariable;
以下是如何在Java中声明所有原始数据类型的变量的示例:
byte myByte; short myShort; char myChar; int myInt; long myLong; float myFloat; double myDouble;
以下是有关如何在Java中声明对象类型的变量的示例:
Byte myByte; Short myShort; Character myChar; Integer myInt; Long myLong; Float myFloat; Double myDouble; String myString;
请注意对象类型的大写第一个字母。
当变量指向对象时,该变量称为对象的"引用"。在稍后的文本中,我将回到原始变量值和对象引用之间的区别。
选择变量名的规则和约定将在本文后面介绍。
Java变量复制
在Java中为变量分配值遵循以下模式:
variableName = value ;
这是三个具体示例,这些示例将值分配给具有不同数据类型的三个不同变量
myByte = 127; myFloat = 199.99; myString = "This is a text";
第一行将字节值127分配给名为" myByte"的字节变量。第二行将浮点值199.99分配给名为" myFloat"的浮点变量。第三行将String值(文本)"这是一个文本"分配给名为myString的String变量。
我们也可以在声明变量时为它分配一个值。这是完成的方式:
byte myByte = 127; float myFloat = 199.99; String myString = "string value";
Java读取变量
我们可以通过在代码中可以使用变量或者常量的任何地方编写Java变量的名称来读取Java变量的值。例如,作为变量赋值的右侧,作为方法调用的参数或者在算术表达式内。例如:
float myFloat1 = 199.99; float myFloat2 = myFloat1; // right hand side value in assignment float myFloat3 = myFloat2 + 123.45; // as part of arithmetic expression System.out.println(myFloat3); // as parameter in method call.
Java变量命名约定
有一些与变量命名相关的规则和约定。
规则是:
- Java变量名称区分大小写。变量名称" money"与" Money"或者" MONEY"不同。
- Java变量名称必须以字母或者$或者_字符开头。
- 在Java变量名称的第一个字符之后,该名称还可以包含数字(除了字母,$和_字符)。
- 变量名称不能等于Java中的保留关键字。例如,单词" int"或者" for"是Java中的保留字。因此,我们不能将变量命名为" int"或者" for"。
以下是一些有效的Java变量名称示例:
myvar myVar MYVAR _myVar $myVar myVar1 myVar_1
还有一些Java变量命名约定。这些约定不是必须遵循的。编译器不强制执行它们。但是,许多Java开发人员已经习惯了这些命名约定。因此,如果我们也遵循它们,则它们将更容易阅读Java代码,并且如果我们习惯于这些命名约定,则它们将更易于阅读其他Java开发人员的代码。约定是:
- 变量名用小写字母表示。例如,"变量"或者"苹果"。
- 如果变量名由多个单词组成,则第一个单词之后的每个单词的首字母都用大写字母表示。例如,
variableName
或者bigApple
。 - 即使允许,通常也不会使用$或者_开头Java变量名称。
- 静态最终字段(常量)以大写形式命名,通常使用_分隔名称中的单词。例如" EXCHANGE_RATE"或者" COEFFICIENT"。
Java局部变量类型推断
从Java 10开始,可以使Java编译器通过查看声明变量时分配给变量的实际类型来推断局部变量的类型。此增强函数仅限于局部变量,for-each循环中的索引以及在for-loop中声明的局部变量。
为了了解Java局部变量类型推断的工作原理,这首先是Java 10 String变量之前声明的示例:
String myVar = "A string!";
从Java 10开始,如果可以从分配给变量的值推断类型,则不再需要指定变量的类型。这是使用局部变量类型推断在Java 10中声明变量的示例:
var myVar = "A string!";
请注意,变量名前面使用的是var关键字,而不是字符串类型。编译器从分配的值中可以看到,变量的类型应为" String",因此我们不必显式编写它。
以下是一些其他的Java局部变量类型推断示例:
var list = new ArrayList(); var myNum = new Integer(123); var myClassObj = new MyClass();