• Java 之多态


    Java 之多态(包含封装)

    基础知识:

    Java 在处理基本数据类型(例如int ,char,double)时,都是采用按值传递的方式执行,除此之外的其它类型都是按引用传递的方式执行。对象除了在函数调用时时引用传递,在使用“=”赋值时也是采用引用传递。

    代码示例:

    class TempTest1 {
        static class A {
            int age = 0;			// 值传递
            // num是基本类型,值就直接保存在变量中。
        }
        public static void main(String[] args) {
            A a = new A();
            // 这个a就是一个引用类型变量。引用指向实际对象,实际对象中保存着内容。
            a.age = 20;
            System.out.println(a.age);
        }
    }
    
    class TempTest2 {
        private void test1(int a){  // 值传递
            a = 0;					// 值传递
            System.out.println(a);
        }
        public static void main(String[] args) {
            TempTest2 t = new TempTest2();
            // 这个t就是一个引用类型。引用类型指向一个对象而不是原始值,指向对象的变量是引用变量。
            int a = 20;				// 值传递
            t.test1(a);
        }
    }
    

    前辈原话:

    一:搞清楚 基本类型 和 引用类型的不同之处

    int num = 10;
    String str = "hello";
    
    

    如图所示,num是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。

    二:搞清楚赋值运算符(=)的作用

    num = 20;
    str = "java";
    
    

    对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。
    对于引用类型 str,赋值运算符会改变引用中所保存的地址,原来的地址被覆盖掉。但是原来的对象不会被改变(重要)。

    如上图所示,"hello" 字符串对象没有被改变。(没有被任何引用所指向的对象是垃圾,会被垃圾回收器回收)

    后续请参考原文


    注:本人正在学习状态,文中多有引用,也有解释纰漏之处,敬请包涵、指正!

    参考:

    https://www.zhihu.com/question/31203609

    http://blog.csdn.net/wenwen091100304/article/details/46673865

    感谢:usna 提供思路和方向

  • 相关阅读:
    ESP32环境搭建(arduino)
    uPyCraftIDE的介绍以及使用
    ESP32项目汇总
    MicroPython固件烧写
    Server 架构
    base家族在线解密工具
    第1年2月24日 iOS相机旋转问题 为什么UIimage.ciimage值为空
    第1年2月23日 du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序
    第1年2月14日 mac 运行java
    第1年2月10日 检查iOS app证书过期时间信息
  • 原文地址:https://www.cnblogs.com/itxdm/p/6931227.html
Copyright © 2020-2023  润新知