Java 变量

本文主要介绍Java中,定义声明变量、声明多个变量、变量名及命名规则、final变量、输出变量值、局部变量、实例变量、类变量(静态变量)和标识符,以及相关的示例代码。

1、变量类型

变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。

在Java中,有不同类型的变量,例如:

  • String:存储文本字符串,例如,“cjavapy”。 字符串值用双引号引起来
  • int:存储整数(整数),不带小数,例如,123或-123
  • float:存储浮点数,带小数,例如,19.99或-19.99
  • char:存储单个字符,例如,'a'或'B'。 字符值用单引号引起来
  • boolean:存储具有两种状态的值:true或false

2、定义声明变量

要创建变量,必须指定类型并为其分配值:

语法

type variable = value;

其中type是Java的一种类型,例如,intString,而variable是Java的变量名,例如,x或name,= 用于为变量分配值。

要创建一个应存储文本字符串的变量,请看以下示例:

例如:

创建类型为String的名为name的变量,并为其分配值“cjavapy”:

String name = "cjavapy";
System.out.println(name);

要创建一个应该存储数字的变量,请看以下示例:

例如:

创建类型为int的名为myNum的变量,并为其分配值15

int myNum = 15;
System.out.println(myNum);

还可以在不分配值的情况下声明变量,然后在以后分配值:

例如:

int myNum;
myNum = 15;
System.out.println(myNum);

请注意,如果将新值分配给现有变量,它将覆盖以前的值:

例如:

myNum的值从15更改为20

int myNum = 15;
myNum = 20;  // myNum 的值是 20
System.out.println(myNum);

3、final 变量

用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。如果不想之后的代码覆盖现有值,则可以添加final关键字。

例如:

final int myNum = 15;
myNum = 20;  // 会报错: cannot assign a value to a final variable

4、其它类型变量

定义声明其它类型变量的示例代码。

例如:

int myNum = 5;
float myFloatNum = 5.99f;
char myLetter = 'D';
boolean myBool = true;
String myText = "Hello";

5、打印输出变量

println()方法通常用于显示变量。

要将文本和变量拼接在一起成一个字符串,请使用+字符:

例如:

String name = "cjavapy";
System.out.println("我是 " + name);

还可以使用+字符将两个字符串变量拼接成一个字符串:

例如:

String firstName = "cjavapy";
String lastName = ".com";
String fullName = firstName + lastName;
System.out.println(fullName);

对于数字值,+字符用作数学运算符(请注意,此处我们使用int(整数)变量):

例如:

int x = 5;
int y = 6;
System.out.println(x + y); // 输出 x + y的值

6、定义声明多个变量

要声明多个相同类型的变量,请使用逗号分隔的列表:

例如:

int x = 5, y = 6, z = 50;
System.out.println(x + y + z);

7、Java 标识符

所有Java变量必须使用唯一的名称标识。

这些唯一的名称称为标识符。

标识符可以是短名称(如x和y),也可以是更具描述性的名称。

注意:建议使用描述性名称,以创建可理解和可维护的代码:

例如:

// 通过变量名就知道存的是年龄
int age = 60;

// 变量名可以,但是不好理解
int a = 60;

构造变量名称(唯一标识符)的一般规则是:

  • 名称可以包含字母,数字,下划线和$
  • 名称必须以字母开头
  • 名称应以小写字母开头,并且不能包含空格
  • 名称也可以以$和_开头(但在本教程中我们将不使用它)
  • 名称区分大小写( myVarmyvar 是不同的变量)
  • 保留字(例如,Java关键字,例如,intboolean)不能用作名称

标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标识符时,应赋予它一个有意义或有用途的名字。

6、Java 局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

例如,

package com.cjavapy.test;
 
public class Test{ 
   public void say(){
      int age = 0;//声明变量需要初始化,没有初始化编译时会报错
      age = age + 3;
      System.out.println("cjavapy的年龄是: " + age);
   }
   
   public static void main(String[] args){
      Test test = new Test();
      test.say();
   }
}

7、实例变量

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

例如,

package Variable;

public class VariableDemo {

    //实例变量
    int a;

    //静态变量
    static int b;

    public static void main(String[] args) {
        System.out.println(VariableDemo.b);//静态变量可以直接被类调用,实例变量不可以
        
        //新建一个对象 variableDemo
        VariableDemo variableDemo = new VariableDemo();

        //实例变量和静态变量都可以被对象调用,默认值为0或null
        System.out.println(variableDemo.a);//0
        System.out.println(variableDemo.b);//0

        //再新建两个对象 variableDemo1 、variableDemo2
        VariableDemo variableDemo1 = new VariableDemo();
        VariableDemo variableDemo2 = new VariableDemo();

        //对象variableDemo将静态变量b的值改变
        variableDemo.b=10;

        //静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果
        System.out.println(VariableDemo.b);//10
        System.out.println(variableDemo.b);//10
        System.out.println(variableDemo1.b);//10
        System.out.println(variableDemo2.b);//10

        //对象variableDemo将实例对象a的值改变
        variableDemo.a = 15;

        //实例变量属于对象私有,某一个对象将其值改变,不影响其他对象
        System.out.println(variableDemo.a);//15
        System.out.println(variableDemo1.a);//0
        System.out.println(variableDemo2.a);//0
    }
}

8、类变量(静态变量)

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

例如,

package Variable;

public class VariableDemo {

    //实例变量
    int a;

    //静态变量
    static int b;

    public static void main(String[] args) {
        System.out.println(VariableDemo.b);//静态变量可以直接被类调用,实例变量不可以
        
        //新建一个对象 variableDemo
        VariableDemo variableDemo = new VariableDemo();

        //实例变量和静态变量都可以被对象调用,默认值为0或null
        System.out.println(variableDemo.a);//0
        System.out.println(variableDemo.b);//0

        //再新建两个对象 variableDemo1 、variableDemo2
        VariableDemo variableDemo1 = new VariableDemo();
        VariableDemo variableDemo2 = new VariableDemo();

        //对象variableDemo将静态变量b的值改变
        variableDemo.b=10;

        //静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果
        System.out.println(VariableDemo.b);//10
        System.out.println(variableDemo.b);//10
        System.out.println(variableDemo1.b);//10
        System.out.println(variableDemo2.b);//10

        //对象variableDemo将实例对象a的值改变
        variableDemo.a = 15;

        //实例变量属于对象私有,某一个对象将其值改变,不影响其他对象
        System.out.println(variableDemo.a);//15
        System.out.println(variableDemo1.a);//0
        System.out.println(variableDemo2.a);//0
    }
}


推荐阅读
cjavapy编程之路首页