zoukankan      html  css  js  c++  java
  • 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 提供思路和方向

  • 相关阅读:
    AJAX请求MVC控制器跨域头问题
    HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021
    C# 同一时间批量生成订单号不重复
    Unity书籍下载地址
    几种常见的设计模式
    C# web api 对象与JSON互转
    自动按参数首字母排序参数
    C# 3DES加密 解密
    C#大量数据导出Excel
    判断对象是数组
  • 原文地址:https://www.cnblogs.com/itxdm/p/6931227.html
Copyright © 2011-2022 走看看