• Java_变量类型


    主要是为了复习java相关知识,本文主要内容来自于 http://www.runoob.com/java

    一、局部变量

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

    二、实例变量

    • 实例变量声明在一个类中
    • 当一个对象被实例化之后,每个实例变量的值就确定了
    • 实例变量在对象创建的时候创建,对象被销毁的时候销毁
    • 实例变量的值应该至少被一个方法、构造方法或语句块引用,使得外部能够通过这些方式获取实例变量信息
    • 实例变量可以声明在使用前或使用后
    • 访问修饰符可以修饰实例变量
    • 实例变量对于类中的方法、构造方法或语句块是可见的
    • 实例变量具有默认值。数值型默认为0,布尔为false,引用变量为null
    • 实例变量可以直接通过变量名访问。

    三、类变量(静态变量)

    • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法、构造方法和语句块之外
    • 无论一个列创建了多少个对象,类只拥有类变量的一份拷贝
    • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private, final/static类型的变量。常量初始化后不可改变
    • 静态变量存储在静态存储区,经常被声明为常量,很少单独使用static声明
    • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型

    实例:

     /**
     * 静态变量和实例变量的区别?
     * 1.静态变量需要使用 static 修饰符修饰.
     * 2.实例变量属于某个对象的属性,必须创建了实例对象,才会分配空间。
     *   静态变量不属于某个对象,而属于类,当类加载时就会被分配空间。
     */
    public class Test003 {
        private static int sTest; // 静态变量
        private int nTest ; // 实例变量
        private Test003(){
            //int jTest = sTest; //局部变量 0,1,2
            //int jTest = nTest; //局部变量 0,0,0
            //int jTest = ++nTest; //局部变量 1,1,1 ; nTest 的值为:2,2,2
            //int jTest = nTest++; //局部变量 0,0,0 ; nTest 的值为:2,2,2  nTest先赋值给jTest,然后再自加
            sTest ++;
            nTest ++;
            System.out.println("sTest:"+ sTest + ", nTest:"+ nTest /*+ ", jTest:"+ jTest*/);
        }
    
        public static void main(String [] args){
            Test003 t = new Test003();
            Test003 t1 = new Test003();
            Test003 t2 = new Test003();
    
            System.out.println(Test003.sTest); // 通过类名.静态变量来访问
            System.out.println(t.nTest); //通过实例对象.实例变量来访问
    
            // 无论创建多少个实例对象,永远都只为静态变量分配一次内存,其生命周期取决于类的生命周期;
            // 实例变量生命周期取决于实例的生命周期。每创建一个实例,就会分配一次内存
    
            /*打印结果为:
            sTest:1, nTest:1
            sTest:2, nTest:1
            sTest:3, nTest:1*/
        }
    }
    

    July 9, 2018 9:31 PM

  • 相关阅读:
    rand()和srand()关系很简单——一看就明白(通过一个可移植的源码)
    opencart配置mail服务
    dedecms mysql连接错误:#1040
    自动获取访客QQ
    apache虚拟目录设置
    在XAMPP上建立多个域名的站点
    QQ互联不能使用的通用解决方法
    织梦系统与discuz论坛整合方法
    DEDECMS整站复制
    DEDECMS模板中dede标签使用php和if判断语句的方法
  • 原文地址:https://www.cnblogs.com/zeo-to-one/p/9348360.html
Copyright © 2020-2023  润新知