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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值