- 前言
- 如何在Java中声明变量
- java中变量命名约定
- Java中的变量类型
- 静态(或类)变量
- 实例变量
- 局部变量
前言
变量,顾名思义,是个可以更改的值的统一称谓。
例如,当使用int i=10;在这里写入时,变量名称为i,它是与值10相关联,int是表示此变量可以包含整数值的数据类型。
我们将在下一个教程中介绍数据类型,在本教程中,我们将讨论变量。
如何在Java中声明变量
要声明变量,请遵循以下语法:
data_type variable_name = value ;
这里的value是可选的,因为在java中,您可以先声明变量,然后再将值赋给它。
例如:
int num;
这里num是变量,int是数据类型。我们将在下一个教程中讨论数据类型,所以不要过于担心它,只要了解int数据类型允许这个num变量保存整数值。
类似地,我们可以在声明它们的同时将值分配给变量,如下所示:
char ch = 'A';
int number = 100;
或者,可以这么搞:
char ch;
int number;
...
ch = 'A';
number = 100;
java中变量命名约定
- 变量命名不能包含空格,例如:int num ber = 100; 无效,因为变量名称中包含空格。
- 变量名可以以特殊字符开头,例如$和_
- 根据java编码标准,变量名应以小写字母开头,例如int number; 对于具有多个单词的冗长变量名称,请执行以下操作:
int smallNumber; int bigNumber;
(开头第二个字用大写字母)。 - 变量名在Java中区分大小写。
Java中的变量类型
Java中有三种类型的变量。
1)局部变量
2)静态(或类)变量
3)实例变量 (类对象)
静态(或类)变量
静态变量也称为类变量,因为它们与类相关联,并且对于所有类实例都是通用的。
例如,如果我创建一个类的三个对象并访问此静态变量,那么对所有对象来说都是通用的,使用其中一个对象对变量所做的更改,将同时影响通过其他对象的调用结果。
静态变量示例:
public class StaticVarExample {
public static String myClassVar="class or static variable";
public static void main(String args[]){
StaticVarExample obj = new StaticVarExample();
StaticVarExample obj2 = new StaticVarExample();
StaticVarExample obj3 = new StaticVarExample();
//三个对象都将打印 "class or static variable"
System.out.println(obj.myClassVar);
System.out.println(obj2.myClassVar);
System.out.println(obj3.myClassVar);
//用obj2对象改变静态变量的值
obj2.myClassVar = "Changed Text";
//三个对象都将打印 "Changed Text"
System.out.println(obj.myClassVar);
System.out.println(obj2.myClassVar);
System.out.println(obj3.myClassVar);
}
}
输出:
class or static variable
class or static variable
class or static variable
Changed Text
Changed Text
Changed Text
正如您所看到的,无论访问它的实例是谁,所有三个语句都显示相同的输出。
这就是为什么我们可以在不使用对象的情况下直接访问静态变量:
System.out.println(myClassVar);
请注意,只有静态变量才能像这样访问。这不适用于实例和局部变量。
实例变量
类的每个实例(对象)都有自己的实例变量副本。
与静态变量不同,实例变量有自己独立的实例变量副本。
我们在下面的程序中使用对象obj2更改了实例变量值,当我们使用所有三个对象显示变量时,只有obj2值发生了变化,其他值保持不变。
这表明它们有自己的实例变量副本。
实例变量示例:
public class InstanceVarExample {
String myInstanceVar="instance variable";
public static void main(String args[]){
InstanceVarExample obj = new InstanceVarExample();
InstanceVarExample obj2 = new InstanceVarExample();
InstanceVarExample obj3 = new InstanceVarExample();
System.out.println(obj.myInstanceVar);
System.out.println(obj2.myInstanceVar);
System.out.println(obj3.myInstanceVar);
obj2.myInstanceVar = "Changed Text";
System.out.println(obj.myInstanceVar);
System.out.println(obj2.myInstanceVar);
System.out.println(obj3.myInstanceVar);
}
}
输出:
instance variable
instance variable
instance variable
instance variable
Changed Text
instance variable
局部变量
这些变量在类的方法内声明。它们的范围仅限于方法,这意味着您无法更改其值并在方法之外访问它们。
在这个例子中,我还声明了与局部变量同名的实例变量,这是为了演示局部变量的范围。
局部变量示例:
public class VariableExample {
// 实例变量
public String myVar="instance variable";
public void myMethod(){
// 局部变量
String myVar = "Inside Method";
System.out.println(myVar);
}
public static void main(String args[]){
// 创建对象
VariableExample obj = new VariableExample();
/* 我们调用方法,改变myVar的值
* 调用完成后,再打印myVarWe的值
* 证明了局部变量作用域仅在方法本身范围内
*/
System.out.println("Calling Method");
obj.myMethod();
System.out.println(obj.myVar);
}
}
输出:
Calling Method
Inside Method
instance variable
注意:
如果我没有声明实例变量并且只在方法内部声明了局部变量,那么语句System.out.println(obj.myVar); 会抛出编译错误。
因为您无法更改和访问方法之外的局部变量。