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 提供思路和方向

  • 相关阅读:
    【转】当你输入一个网址的时候,实际会发生什么?
    opencv 操作本地摄像头实现录像
    谷歌笔试题——排序,只允许0和其他元素交换
    判断素数的相关代码
    VS2010 代码自动对齐 快捷键
    谷歌的一道面试题
    各种排序算法代码汇总
    冒泡排序
    lua环境变量
    lua迭代
  • 原文地址:https://www.cnblogs.com/itxdm/p/6931227.html
Copyright © 2011-2022 走看看