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
修仙者
目录
相关文章
|
5月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
2111 102
|
6月前
|
存储 缓存 人工智能
Java int和Integer的区别
本文介绍了Java中int与Integer的区别及==与equals的比较机制。Integer是int的包装类,支持null值。使用==比较时,int直接比较数值,而Integer比较对象地址;在-128至127范围内的Integer值可缓存,超出该范围或使用new创建时则返回不同对象。equals方法则始终比较实际数值。
210 0
|
4月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
178 1
|
4月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
541 1
|
4月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
183 0
|
5月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
6月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
110 0
|
6月前
|
安全 算法 Java
Java 中 synchronized 与 AtomicInteger 的区别
在Java多线程编程中,`synchronized`和`AtomicInteger`均用于实现线程安全,但原理与适用场景不同。`synchronized`是基于对象锁的同步机制,适用于复杂逻辑和多变量同步,如银行转账;而`AtomicInteger`采用CAS算法,适合单一变量的原子操作,例如计数器更新。二者各有优劣,应根据具体需求选择使用。
192 0
|
10月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
202 13
|
10月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
346 15