Java变量:声明、作用域和命名约定
什么是变量?
在Java中,变量是保存特定数据类型值的内存位置的名称。它是java编程中的一个基本概念,允许您在程序执行期间存储和操作数据。
Java中的变量可以保存各种类型的数据,包括整数、浮点数、字符和布尔值。还可以使用变量来保存更复杂的数据类型,如数组、对象和字符串。
变量是与可以更改的值相关联的名称。例如,当我写int I=10时;这里的变量名是i,其值为10,int是一种数据类型,表示该变量可以包含整数值。我们已经在本教程中介绍了数据类型。在本教程中,我们将讨论变量。
Java变量声明:语法和最佳实践在Java中,可以使用以下语法声明变量:
data_type variable_name = value;
这里的值是可选的,因为在java中,您可以先声明变量,然后再将值分配给它。
这里,data_type表示变量将保存的数据类型,如int、double、String、boolean等variable_name是要给变量的名称。
例如:在下面的代码中,num是一个变量,int是一个数据类型。您可以在此处阅读数据类型。
int num;
同样,我们可以在声明变量的同时将值分配给变量,如下所示:
char ch = 'A'; int number = 100;
char ch; int number; ... ch = 'A'; number = 100;
局部变量声明的语法:
在方法或块内部声明的变量。例如
int myAge; double mySalary; String myName;
实例变量的Syntax声明:
这些变量在类内部声明,但在方法或块外部声明。例如:
public int myAge;
private double mySalary;
String myName;
类变量的Syntax声明:
这些也称为静态变量。这些变量在类中声明,但在任何方法或块之外。点击此处了解更多关于静态变量的信息。
public static int counter; private static double rateOfInterest;
Java变量命名约定:可读和可维护代码的最佳实践
变量命名不能包含空格,例如:int num ber=100;无效,因为变量名中有空格。
变量不应以数字开头,也不应包含特殊字符,如@、#、$、%、^、&、*、(,)、-、+、/、\、|、?、:或
根据java编码标准,变量名应该以小写字母开头,例如int数字;对于包含多个单词的冗长变量名称,请这样做:int smallNumber;int bigNumber;(第二个单词以大写字母开头)。
常量(其值在运行时不会更改的变量)应全部用大写字母书写,并用下划线分隔单词。例如:MAX_VALUE,PI。
在Java中,变量名区分大小写。例如,变量myNum和myNum是两个不同的变量。
变量不应使用保留关键字或类名作为其名称。例如,不应将变量命名为“int”或“String”。
Java变量的默认值
在Java中,如果变量未明确初始化,则会自动为其分配默认值。默认值取决于变量的数据类型,如下表所示:
例如,如果在未初始化的情况下声明一个整数变量,则会为其分配默认值0:
int num;
System.out.println(num); // prints 0
类似地,如果您在未初始化的情况下声明布尔变量,则会为其分配一个默认值false:
Java中的变量类型
Java中有三种类型的变量。
静态(或类)变量
全局变量(实例变量)
局部变量
1.静态(或类)变量
静态变量也称为类变量,因为它们与类相关联,并且对类的所有实例都是公共的。要在Java中声明静态变量,请在类定义中变量的数据类型之前使用static关键字,如下所示:
public class MyClass {
static int myStaticVariable = 100;
}
可以使用类名而不是实例名来访问静态变量,如下所示:
int num = MyClass.myStaticVariable;
例如,如果我创建一个类的三个对象并访问这个静态变量,那么它对所有对象都是相同的,使用其中一个对象对变量所做的更改将反映出您通过其他对象访问它的情况。
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();
//All three will display "class or static variable"
System.out.println(obj.myClassVar);
System.out.println(obj2.myClassVar);
System.out.println(obj3.myClassVar);
//changing the value of static variable using obj2
obj2.myClassVar = "Changed Text";
//All three will display "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
正如您所看到的,无论通过哪个实例访问,所有三个语句都显示相同的输出。这就是为什么我们可以在不使用以下对象的情况下访问静态变量:
请注意,只有静态变量才能像这样访问(不使用对象)。这不适用于实例变量和局部变量。
2.全局变量或实例变量
全局变量也称为实例变量。它是在类级别声明的,类中的所有方法和构造函数都可以访问它。
类的每个实例(对象)都有自己的实例变量副本。与静态变量不同,实例变量有自己独立的实例变量副本。
在以下示例中,我们更改了对象obj2的实例变量myInstanceVar值,当我们使用所有三个对象显示变量时,只有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
3.局部变量
在Java中,局部变量是在方法、构造函数或代码块中声明的变量,并且只能在该块中访问。它们的作用域仅限于方法,这意味着您不能更改它们的值并在方法之外访问它们。
局部变量用于存储在方法或块中执行特定任务所需的临时值。它们的作用域和生存期有限,一旦方法或块完成执行,就会被销毁。
以下是在方法中声明的局部变量的示例:
public void myMethod() {
int num = 100;
System.out.println(num);
}
在上面的例子中,变量num是在myMethod()方法内部声明的局部变量。它被分配了值100,该值使用println()方法打印到控制台。一旦该方法完成执行,变量就会被销毁,并且其值不再可访问。
局部变量示例
public class VariableExample {
// instance variable
public String myVar="instance variable";
public void myMethod(){
// local variable
String myVar = "Inside Method";
System.out.println(myVar);
}
public static void main(String args[]){
// Creating object
VariableExample obj = new VariableExample();
/* We are calling the method, that changes the
* value of myVar. We are displaying myVar again after
* the method call, to demonstrate that the local
* variable scope is limited to the method itself.
*/
System.out.println("Calling Method");
obj.myMethod();
System.out.println(obj.myVar);
}
}
Java中全局变量与局部变量的区别
在Java中,全局变量是在类级别声明的变量,类中的所有方法和构造函数都可以访问该变量。另一方面,局部变量是在方法或块中声明的变量,并且只能在该方法或块内访问。
以下是全局变量和局部变量之间的一些关键区别:
作用域:全局变量的作用域更广,因为它们可以在整个类中访问。另一方面,局部变量的作用域较窄,因为它们只能在声明它们的方法或块中访问。
生存期:全局变量的生存期更长,因为它们是在对象实例化时创建的,而在对象销毁时销毁。局部变量的生存期较短,因为它们是在执行方法或块时创建的,并在方法或块退出时销毁。
访问:全局变量可以从类中的任何方法或构造函数访问,这意味着它们可以由任何有权访问它们的方法或构造函数修改。局部变量只能在声明它们的方法或块中访问。
初始化:如果没有提供显式初始化,全局变量将初始化为默认值(例如,0表示数字类型,false表示布尔值,null表示对象)。必须先显式初始化局部变量,然后才能使用它们。
public class JavaExample {
private int myGlobalVariable = 100;
//a method
public void myMethod() {
int myLocalVariable = 100;
myGlobalVariable++; //global variable increment
myLocalVariable++; //local variable increment
System.out.print("Global variable: " + myGlobalVariable);
System.out.println(" Local variable: " + myLocalVariable);
}
public static void main(String args[]){
JavaExample obj = new JavaExample();
obj.myMethod(); // Output: Global variable: 101 Local variable: 101
obj.myMethod(); // Output: Global variable: 102 Local variable: 101
obj.myMethod(); // Output: Global variable: 103 Local variable: 101
}
}