• Java知识6 局部变量、成员变量和类变量的区别【多测师】


    一、局部变量、成员变量、类变量
    静态变量:由static修饰的变量为静态变量 本质为全局变量
    成员变量、类变量区别:
    1、成员变量随着对象创建存在 对象回收而释放
    2、静态变量随着类加载而存在 类消失而消失
    
    3、成员变量只能被对象调用
    4、静态变量可以被对象和类调用
    
    5、成员变量也称实例变量、数据存储在堆内存的对象中 称对象的特有数据
    6、静态变量也称类变量、数据存储在方法区 称对象的共享数据
    
    7、类变量声明在类中、方法体之外 但必须声明为static类型
    8、静态方法不能使用this 因为this代表对象
    
    举例如下:
    局部变量:在方法、构造方法、语句块中定义的变量。其声明和初始化在方法中实现,在方法结束后自动销毁
    public class  ClassName{
        public void printNumber(){
            int a;
        }
        // 其他代码
    }
    
    成员变量:定义在类中,方法体之外。变量在创建对象时实例化。成员变量可被类中的方法、构造方法以及特定类的语句块访问。
    public class  ClassName{
        int a;
        public void printNumber(){
            // 其他代码
        }
    }
    
    类变量:定义在类中,方法体之外,但必须要有 static 来声明变量类型。静态成员属于整个类,可通过对象名或类名来调用。
    public class  ClassName{
        static int a;
        public void printNumber(){
            // 其他代码
        }
    }
    
    二、类构造方法
    1、构造方法名字和类相同 没有返回值
    2、不能直接调用构造方法 要通过new关键字来自动调用、从而创建类的实例
    3、Java类必须要有构造方法 如果没有Java编译器会自动提供不带参数的构造方法
    4、New关键字的作用:为对象分配内存空间 引起对象构造方法的调用 
    5、使用java类实例化一个对象的时候,如果在类中不显式的声明其构造函数,则会使用一个默认的构造函数来初始化对象。
    实例:
    //一个没有显式声明构造函数的类
    public class People{
      int age = 23;
      public void getAge(){
          System.out.print("the age is "+age);
      }
    }
    
    //用这个类来实例化一个对象
    People xiaoMing = new People(); // People() 是People类的默认构造函数,它什么也不干
    xiaoMing.getAge();//打印年龄
    
    可以在声明类的时候显式的声明一个构造函数:
    //一个带显式构造函数的类
    public class People{
      int age = 23;
          public void getAge(){
          System.out.print("the age is "+ age);
      }
      // 显式声明一个带参数的构造函数,用于初始化年龄
      public People(int a){
          this.age = a;
      }
    }
    
    //用这个类来实例化一个对象
    People xiaoMing = new People(20); // 使用带参数的构造函数来实例化对象
    xiaoMing.getAge(); // 打印出来的年龄变为20
    
    三、成员变量与局部变量的区别
    1、声明位置不同
    成员变量也就是属性,在类中声明的。
    局部变量,在方法中声明或代码块中声明。
    
    2、初始值不同
    成员变量如果没有赋值则是有默认值的,数据类型不同则默认值不同。
    局部变量是没有默认值,也就是说必须先声明,再赋值,最后才使用。
    
    3、在一个类中,局部变量可以与成员变量同名,但是局部变量优先,如果非要访问成员变量的属性,则必须使用 this.color
    this 代表当前这个对象,也就是当前谁调用这个方法则这个对象就是谁。
    对象与引用的区别
    对象是具体的一个实例,如:new Student(); new 表示创建一个对象,并在堆内存中开辟一块空间。
    用名称是存放的对象的地址。
  • 相关阅读:
    TTTTTTTTTTTTTTTTTTT UVA 2045 Richness of words
    hdu 5723 Abandoned country 最小生成树+子节点统计
    hdu 5792 World is Exploding 树状数组+离散化+容斥
    MySQL字符集详解
    MySQL的sql语言分类DML、DQL、DDL、DCL、
    MySQL5.6的4个自带库详解
    Win10下安装MySQL5.6
    {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
    {python--GIL锁}一 介绍 二 GIL介绍 三 GIL与Lock 四 GIL与多线程 五 多线程性能测试
    Navicat安装及简单使用
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110691.html
Copyright © 2020-2023  润新知