zoukankan      html  css  js  c++  java
  • Java变量类型,实例变量 与局部变量 静态变量



    实例变量:
    • 实例变量在类中声明,但在方法的外面,构造函数或任何块。

    • 当空间分配给某个对象在堆中,插槽为每个实例变量创建值。

    • 当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量。

    • 实例变量认为必须由一个以上的方法,构造函数或块,或一个对象的状态的关键部分必须出现在整个类中引用的值。

    • 实例变量可以在使用前或后级的级别声明。

    • 访问修饰符可以给出实例变量。

    • 实例变量对于所有方法,构造函数和块在类中可见。通常,建议,使这些变量私有(接入层)。然而能见度子类可以给这些变量与使用访问修饰符。

    • 实例变量有默认值。对于数字的默认值是0,为布尔值是false和对象引用为null。值可以在声明或构造函数中分配。

    • 实例变量可以直接通过调用变量名的类的内部访问。然而在静态方法和不同的类(当实例变量被赋予访问)应使用完全限定名调用 ObjectReference.VariableName.

    •  1 public class Sample 
       2 { 
       3  private int a=1;  //实例变量 
       4  
       5  public void b() 
       6  { 
       7   int a=2;  //局部变量 
       8   System.out.println("局部变量:a="+a); 
       9   System.out.println("实例变量:a="+this.a);//局部变量的作用域内引用实例变量:this.变量名 
      10  }  
      11  public static void main(String[] args) 
      12  { 
      13   new Sample().b(); 
      14  } 
      15 }                                                                                                                                        
      16  

      =========================================================================================

    局部变量:

    • 局部变量的方法,构造函数或块中声明。

    • 创建局部变量的方法,构造函数或块时进入,一旦退出方法,构造函数或块中的变量将被销毁。

    • 访问修饰符不能用于局部变量。

    • 局部变量是可见的,只有内声明的方法,构造函数或块。

    • 局部变量在堆栈级别内部实现。

    • 在这里对局部变量没有默认值,因此局部变量应该声明和初始值应在第一次使用前分配。

    例如:

    在这里,age 是一个局部变量。这是定义里面 pupAge()  方法,其范围仅限于该方法。

     1 public class Test{ 
     2    public void pupAge(){
     3       int age = 0;
     4       age = age + 7;
     5       System.out.println("Puppy age is : " + age);
     6    }
     7    
     8    public static void main(String args[]){
     9       Test test = new Test();
    10       test.pupAge();
    11    }
    12 }

    这将产生以下结果:

    Puppy age is: 7
    

      

    例如:

    下面的示例使用 age 没有初始化它,所以它会在编译时给出错误信息。

     1 public class Test{ 
     2    public void pupAge(){
     3       int age;
     4       age = age + 7;
     5       System.out.println("Puppy age is : " + age);
     6    }
     7    
     8    public static void main(String args[]){
     9       Test test = new Test();
    10       test.pupAge();
    11    }
    12 }

    编译它,这将产生以下错误:

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

    类/静态变量:

    • 类变量也称为静态变量在类的static关键字声明的,但在方法外面,构造函数或块。

    • 每个类变量只有一个副本,不管有多少对象从它被创建。

    • 静态变量很少使用不是被声明为常量等。常量是被声明为公共/私营,最终和静态变量。常量变量从来没有从他们的初始值改变。

    • 静态变量被存储在静态存储器中。这是罕见的使用静态变量以外声明为final,用作公共或私有常数。

    • 在程序启动时的静态变量被创建,在程序停止销毁。

    • 能见度类似于实例变量。然而,大多数静态变量声明为 public,因为它们必须可用于类的使用者。

    • 默认值是相同的实例变量。对于数字,默认值是0;为布尔值,它是假的,和对象引用,它为null。值可以在声明或构造函数中分配。另外值可以在特殊的静态初始化块进行分配。

    • 静态变量可以通过调用与类名来访问。 ClassName.VariableName.

    • 当定义的变量为 public static final ,那么变量的名称(常量)都是大写。如果静态变量是不公开的和最终的命名语法是相同的实例变量和局部变量。

    例子:

     1 import java.io.*;
     2 
     3 public class Employee{
     4    // salary  variable is a private static variable
     5    private static double salary;
     6 
     7    // DEPARTMENT is a constant
     8    public static final String DEPARTMENT = "Development ";
     9 
    10    public static void main(String args[]){
    11       salary = 1000;
    12       System.out.println(DEPARTMENT+"average salary:"+salary);
    13    }
    14 }

    这将产生以下结果:

    Development average salary:1000

    注意:如果变量是从外部类访问的常数应被访问 Employee.DEPARTMENT

  • 相关阅读:
    [Windows] 输入字符间距变宽
    [Android] 安卓手机不用root删除自带app
    [Linux] 内核通知链 notifier
    [RK3399] ES8316+NS4150 播放视频只有背景音,播放歌曲有的有声音,有的无声音
    [Linux] RTC 读写指令及测试程序
    [Linux] scp指令用法
    [Ubuntu] sudo apt-get update指令执行失败
    [RK3399] 修改移动网络默认为4G
    [RK3288] 外接USB设备出现丢数
    laravel 模拟数据批量添加
  • 原文地址:https://www.cnblogs.com/AceIsSunshineRain/p/5058728.html
Copyright © 2011-2022 走看看