day08_类中成员变量丶局部变量

发布时间:2024年01月23日

成员变量

成员变量的分类

  • 实例变量:没有static修饰,也叫对象属性,属于某个对象的,通过对象来使用
  • 类变量:有static修饰,也叫类变量,属于整个类的,不是属于某个实例

简而言之:类变量的值是所有对象共享的,而实例变量的值是每个对象独立的

如何声明成员变量

属性(成员变量)的类型可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

实例

public class Student {
    // 类变量可以直接赋值
    static String country;
    // 类变量如果不直接赋值,也有默认值
    static String teacher = "张三";

    //实例变量如果不直接赋值,也有默认值
    String name;
    //实例变量直接赋值
    char gender = '男';
}

?成员变量的默认值如下图所示

如何在类外面访问成员变量

?实例

public class Student {
    // 类变量可以直接赋值
    static String country;
    // 类变量如果不直接赋值,也有默认值
    static String teacher = "张三";

    //实例变量如果不直接赋值,也有默认值
    String name;
    //实例变量直接赋值
    char gender = '男';
}

class Test{
    public static void main(String[] args) {
        Student s = new Student();
        //类名.静态成员变量  推荐
        System.out.println(Student.country); // null
        System.out.println(Student.teacher); //张三
        //静态的成员变量也可以通过对象.进行访问  不推荐
        System.out.println(s.country); // null
        System.out.println(s.teacher); //张三

        //对象名.非静态成员变量
        System.out.println(s.name); // null
        System.out.println(s.gender); // 男

    }
}

局部变量

在方法体{ }中或方法的形参列表、代码块中定义的变量我们称之为局部变量。

public class Test {
    public static void main(String[] args) {
        // 声明 局部变量 ,位置方法内
        int age;
    }
}

?其他注意事项,特点 在前面的已经学习过了,这里就不细说了

成员变量与局部变量的区别

声明位置和方式

  • 静态变量:在类中方法外,并且有static修饰
  • 实例变量:在类中方法外,没有static修饰
  • 局部变量:在方法体{ }中或方法的形参列表、代码块中

在内存中存储的位置不同

  • 静态变量:方法区
  • 实例变量:堆
  • 局部变量:栈

生命周期

  • 静态变量:和类的生命周期一样,因为它的值是该类所有对象共享的,早于对象的创建而存在。
  • 实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡, 而且每一个对象的实例变量是独立的。
  • 局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡, 而且每一次方法调用都是独立。

作用域

  • 静态变量和实例变量:不谈作用域 在本类中,唯一的限制,静态方法或静态代码块中不能使用非静态的,其他都可以直接使用。 在其他类中,能不能使用看修饰符(public,protected,private等)
  • 局部变量:有作用域 出了作用域就不能使用

修饰符

  • 静态变量:很多 public,protected,private,final,volatile等,一定有的是static
  • 实例变量:public,protected,private,final,volatile,transient等 (
  • 局部变量 :权限修饰符 final:是否是常量,即值是否可以修改 volatile:和多线程有关 transient:是否序列化,和IO有关

默认值

  • 静态变量:有默认值
  • 实例变量:有默认值
  • 局部变量:没有,必须初始化 其中的形参比较特殊,靠实参给它初始化。
文章来源:https://blog.csdn.net/weixin_44462792/article/details/135733684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。