Java Basics Part 6/20 - Variable Types

Java Basics Part 6/20 - Variable Types

目录


变量就是存储数据的。每个变量都有一个特定的类型,这个类型决定了变量在内存中的大小以及分布情况、决定了变量的取值范围、决定了有哪些可以操作变量的方法。

使用变量之前,必须先声明:

data type variable [ = value][, variable [= value] ...] ;

声明和初始化举例:

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

三种变量类型:

  • 局部变量
  • 实例变量
  • 类/静态变量

局部变量

  • 在方法、构造器和块中声明的变量是局部变量
  • 进入方法、构造器或者块中时,局部变量被创建,离开就销毁
  • 访问控制修饰符不能用于局部变量
  • 仅在声明的方法、构造器或者块中可见
  • 局部变量存储在栈中
  • 局部变量没有默认的初值

举例:
如下, 局部变量 age,定义在 pupAge() 方法中,作用于仅限这个方法中。

public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

// output
Puppy age is: 7

举例:
如下,没有初始化局部变量 age,这会带来编译错误。

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

// output
Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

实例变量

  • 实例变量在类中,方法、构造器或者块的外面声明
  • 当堆中为对象分配一片空间的时候,每个实例变量的存储空间也都自动创建了
  • 当对象被 new 出来的时候,实例变量就创建了。对象销毁的时候,实例变量也就销毁了
  • 实例变量持有的值会被方法、构造器或者块引用到
  • 实例变量可以用访问控制修饰符修饰
  • 实例变量对类中的所有方法、构造器和块均可见
  • 实例变量都有默认值
  • 在类中,直接使用变量名即可访问实例变量

举例:

import java.io.*;

public class Employee{
   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor. 
   public Employee (String empName){
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal){
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp(){
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]){
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

// ooutput
name  : Ransika
salary :1000.0

类/静态变量

  • 变量通过 static 关键字来修饰,在类中,但是在方法、构造器或者块之外声明
  • 一个类只有一份,所有对象共享一个
  • 除了用来做常量声明之外,静态变量很少用
  • 静态变量存储在静态内存区
  • 程序启动时,静态变量被创建;程序结束后,静态变量被销毁
  • 可见性与实例变量一样,但是多数都是声明成 public 的
  • 都有默认值
  • 变量被声明为 public static final 时,名称都要是大写的。如果不是定义成 public static final 的,那么命名规则与实力变量和局部变量相同

举例:

import java.io.*;

public class Employee{
   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]){
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

// output
Development average salary:1000

如果外部想要访问静态变量,那么用这种方式:Employee.DEPARTMENT

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章