• Java的变量类型


    以下内容引用自http://wiki.jikexueyuan.com/project/java/variable-types.html

    一个变量提供了程序可以操作的命名存储。Java中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局;可以存储在该存储器中的值的范围;以及可以应用于变量的一组操作。

    在使用前必须现将所要使用的变量进行声明。声明变量的基本格式如下:

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

    这里的data type是Java的一种数据类型,variable是一种变量的名称。要声明一个以上的特定变量类型,可以采用逗号分隔开。

    下面是Java中有效的变量声明和赋值的例子:

    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'

    Java中共有三种变量:

    • 本地变量(局部变量)
    • 实例变量
    • 类、静态变量

    一、本地变量(局部变量)

    • 本地变量在方法、构造器或者块中声明
    • 本地变量在方法、构造器或者块进入时被创建,一旦退出该变量就会被摧毁
    • 可访问描述符不能用于本地变量
    • 本地变量仅在已经声明的方法、构造器或者块中可见
    • 本地变量在栈深度内部实施
    • 本地变量没有默认值,因此本地变量必须被声明并且在第一次使用前要给它赋值

    例子:

    这里,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();
       }
    }
    //上述代码会输出如下结果:
    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();
       }
    }
    //编辑时会产生如下错误:
    Test.java:4:variable number might not have been initialized
    age = age + 7;
    ^
    1 error

    二、实例变量

    • 实例变量在类中声明,但是它在方法、构造器或者块外。
    • 当堆中的对象被分配了一个空间时,每个实例变量的位置就被创建了。
    • 当对象采用关键字“new”创建时实例变量就被创建了,当对象被销毁时它也就被销毁了。
    • 实例变量的值必须被一个以上的方法、构造器或者块,或者类中必须出现的对象的状态的重要部分所引用。
    • 实例变量可以在类级别上,在使用前或者使用后声明。
    • 实例变量可以用可访问描述符。
    • 实例变量对类中的所有方法、构造器或者块可见。一般来讲,推荐将这些变量私有(访问层面)。然而子类的可见性可用可访问描述符给予那些变量。
    • 实例变量有默认值。数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。
    • 实例变量可以采用直接在类中叫名字方式访问。然而在静态方法和不同的类(实例变量可以被访问)中应当使用完全限定名称。ObjectReference.VariableName

    例子:

    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();
       }
    }
    //上述代码会输出如下结果:
    name  : Ransika
    salary :1000.0

    三、类、静态变量

    • 类变量也叫静态变量,它是在类中用static关键字声明的,但是它在方法、构造器或者块之外。
    • 每个类中只有一个类变量,不管这个类有多少对象。
    • 除了作为常量被声明之外,类变量很少被应用。常量是被作为public、private、final和static被声明的变量。实例初始化后值不会被改变。
    • 静态变量存储在静态内存中,除了声明final之外,静态变量也很少使用public或rpivate作为常量。
    • 静态变量随着程序的开始和结束而开始和结束。
    • 可见性和实例变量相似。然而大多数静态变量被声明为public由于他们必须为类的使用者所用。
    • 默认值和实例变量相似。对于数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。除此之外,可以在特殊的静态初始化区赋值。
    • 静态变量可以用类的名称访问。ClassName.VariableName
    • 当静态变量被作为public static final声明时,变量(常量)名称都要用大写字母。如果静态变量不是public和final,它的命名方法和实例变量和本地变量相同。
    • 声明为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);
       }
    }
    //上述代码会输出如下结果:
    Development average salary:1000

    注:如果变量从类外访问,常量就必须以Employee.DEPARTMENT访问。

    测试工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test3

  • 相关阅读:
    A05. openstack架构实战-nova服务控制节点安装
    A04. openstack架构实战-glance服务安装
    A03. openstack架构实战-keystone安装
    SSH暴力破解的解读与防御
    tcpdump抓包命令使用
    Superspeed.sh 一键测试服务器到中国上传/下载速度
    Windows ping TCP端口工具之tcping
    实验验证centos 7 系统不会缓存dns信息
    Linux下的TCP测试工具——TCPING安装简明教程
    Debian 9.12 live系统密码重置
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6922391.html
Copyright © 2020-2023  润新知