Java面向对象——详解成员变量和局部变量的区别

简介: Java面向对象——详解成员变量和局部变量的区别

成员变量和局部变量



1. 定义的位置不一样【重点】


局部变量:在方法的内部


成员变量:在方法的外边,直接写在类当中


2. 作用范围不一样【重点】


局部变量:只有方法当中才可以使用,出了方法就不能使用


成员变量:整个类都可以使用


3. 默认值不一样【重点】


局部变量:没有默认值,如果想使用,必须手动进行赋值


成员变量:如果没有赋值,会有默认值,规则和数组一样


4. 内存的位置不一样(了解)


局部变量:位置栈内存


成员变量:位于堆内存


5. 生命周期不一样(了解)


局部变量:随着方法进栈而诞生,随着方法出栈而消失


成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失


创建一个demo02的类:

package demo02;
public class demo001 {
    String name; //成员变量
    public void methodA(){
        int num = 20; //局部变量
        System.out.println(num); //20
        System.out.println(name); //因未赋值,为默认值 num
    }
    public void methodB(int param) { //方法参数就是局部变量
        System.out.println(param);
        int age; //局部变量
//      System.out.println(age); //没有赋值不能用
//      System.out.println(num); //错误写法
        System.out.println(name); //因未赋值,为默认值 num
    }
}


使用demo02这个类:

package demo02;
public class demo02 {
    public static void main(String[] args) {
        demo001 one = new demo001();
        System.out.println("成员变量name未赋值");
        one.methodA();
        one.methodB(40);
        System.out.println("===============================");
        System.out.println("将成员变量name赋值为'修仙者'");
        one.name = "修仙者";
        one.methodA();
        one.methodB(40);
    }
}


运行结果:

成员变量name未赋值
20
null
40
null
===============================
将成员变量name赋值为'修仙者'
20
修仙者
40
修仙者
目录
相关文章
|
2月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
32 2
|
2月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
113 53
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
83 14
|
29天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
62 8
|
2月前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
25 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
2月前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2