java变量
变数
变量是Java程序中基本的存储单元。 变量由标识符,类型和可选的初始化程序的组合定义。 此外,所有变量都有一个范围,该范围定义了它们的可见性和生存期。 接下来将检查这些元素。
声明变量
在Java中,必须先声明所有变量,然后才能使用它们。 变量声明的基本形式如下所示:
类型标识符[=值] [,标识符[=值]…];
- 该类型是Java的原子类型之一(数据类型),或者是类或接口的名称。 (稍后我们将讨论有关类和接口类型)。
- 标识符是变量的名称。
- 您可以通过指定等号和值来初始化变量。 请记住,初始化表达式必须产生与为变量指定的值相同(或兼容)的值。
- 要声明多个指定类型的变量,请使用逗号分隔的列表。
例
int a,b,c; //声明三个整数,a,b和c。int d = 3,e,f = 5; //声明另外三个int,分别初始化d和f。
字节z = 22; //初始化z。
双pi = 3.14159; //声明pi的近似值。
char x ='x'; //变量x的值为'x'。
布尔值d =假; //用值false初始化的布尔值;
您选择的标识符名称中没有任何内在的含义,表明它们的标识符
类型。
动态初始化
尽管前面的示例仅使用常量作为初始化程序,但Java允许使用声明变量时有效的任何表达式来动态初始化变量。 动态变量初始化的示例程序:
class DynInit {
public static void main(String args[]) {
double a = 3.0, b = 4.0;
// c is dynamically initialized
double c = Math.sqrt(a * a + b * b);
System.out.println("Hypotenuse is " + c);
}
}
- 在此,声明了三个局部变量a,b和c。 前两个参数a和b由常量初始化。
- c被初始化为斜边的长度。
- 该程序使用Java的另一种内置方法sqrt()(它是Math类的成员)来计算其参数的平方根。
- 这里的关键点是初始化表达式可以使用初始化时有效的任何元素,包括对方法,其他变量或文字的调用。
变量的范围和寿命
到目前为止,所有使用的变量都已在main()方法的开始处声明。 但是,Java允许在任何块中声明变量。 块定义范围。 因此,每次启动一个新块时,都在创建一个新的作用域。 范围确定哪些对象对程序的其他部分可见。 它还确定了这些对象的寿命。
根据作用域和生存期,Java中存在三种变量
局部变量:局部变量在方法,构造函数或块中声明。
全局变量/实例变量:实例变量在类中声明,但在方法,构造函数或任何块之外。
实例变量也是对象变量,通常称为字段或属性。 它们被称为对象变量。 每个对象都有其自己的每个变量副本,因此,如果一个对象更改了变量的值,则它不会影响实例变量。
class Student
{String name;int age;
}
这里的名称和年龄是Student类的实例变量。
类/静态变量:类变量也称为静态变量,在类中使用static关键字声明。 静态变量也与final关键字一起用于声明常量。 我们将在接下来的章节中详细了解静态变量
class Student
{String name;int age;static int collegeCode =1101;
}
在这里, CollegeCode是一个静态变量。 Student类的每个对象将共享collegeCode属性。
示例程序的范围
// Demonstrate block scope.
class Scope {
public static void main(String args[]) {
int x; // known to all code within main
x = 10;
if(x == 10) { // start new scope
int y = 20; // known only to this block
// x and y both known here.
System.out.println("x and y: " + x + " " + y);
x = y * 2;
}
// y = 100; // Error! y not known here
// x is still known here.
System.out.println("x is " + x);
}
}
在一个块中,变量可以在任何时候声明,但是仅在声明它们之后才有效。 如果在方法开始时定义变量,则该变量可用于该方法中的所有代码。
- 变量在输入范围时创建,在离开范围时销毁。
- 变量超出范围后将不保留其值。
- 在方法中声明的变量在调用该方法之间将不保留其值。 同样,当离开该块时,在块内声明的变量将丢失其值。 因此,变量的生存期仅限于其范围。
- 如果变量声明包括一个初始化程序,则该变量将在每个变量后重新初始化。
- 输入声明它的块的时间。
// Demonstrate lifetime of a variable.
class LifeTime {
public static void main(String args[]) {
int x;
for(x = 0; x < 3; x++) {
int y = -1; // y is initialized each time block is entered
System.out.println("y is: " + y); // this always prints -1
y = 100;
System.out.println("y is now: " + y);
}
}
}
输出量
y is: -1
y is now: 100
y is: -1
y is now: 100
y is: -1
y is now: 100
重复变量错误
尽管可以嵌套块,但是您不能在外部作用域中声明一个变量与该变量具有相同的名称。 例如,以下程序是非法的:
// This program will not compile
class ScopeErr {
public static void main(String args[]) {
int bar = 1;
{ // creates a new scope
int bar = 2; // Compile-time error – bar already defined!
}
}
}
翻译自: https://www.javacodegeeks.com/2017/10/java-variables.html
java变量