美文网首页
java中的对象与引用

java中的对象与引用

作者: 秋灯锁忆 | 来源:发表于2017-06-12 00:19 被阅读0次

    关键词:对象,对象引用,基本数据类型,传值


    对象声明

    • 定义Person类:
      为了方便说明,我们定义的类
      public class Person{
      int number
      String name; //对象属性;
      public void setName(String name){
      this.name = name;
      } //对象方法;
      }
    • 声明语句:
      Person one = new Person();

    那么问题来了,上述语句前后的Person是啥意思勒?都是Person对象?都是Person类?还是对象与类的组合?


    语句拆分

    1. new Person():这一句应该最好理解,即使用new在堆内存中创建Person对象的内存空间;
    2. Person one :这句话其实是让程序在栈内存中创建一个名为one的Person对象的引用;
    3. =:将二者匹配,使得引用指向所开辟的具体空间位置。

    你可以将Person one看成电视控制器, new Person()看成电视,遥控器指向电视。


    对应关系

    • 一个对象引用指向0-1个对象;例如
      • Person one;//定义引用无指向
      • Person one = new Person(); //引用指向对象空间
    • 一个对象可能有0-无穷个对象引用
      0指向;例如
      • Person one = new Person();
        one = null; //失去(所有)引用指向,等待GC回收的对象实例;
    • 多个或无穷;例如
      • Person one = new Person();
        Person two;
        two = one; //指向同一对象空间

    primitive类型与其他类型

    java中基本数据类型包括:

    基本数据类型(void不算)
    • 基本类型
      int number;
      number = 1;(8类数据在创建不需要new等关键字开辟存储空间,且做局部变量时number在栈中存值)
      System.out.print(number); //输出number的值
    • 其他类型
      Person one;
      one = new Person();
      Person.number ; //在声明引用指向后,未定义的实例变量系统默认为0或null等(依照变量类型而定,例Person.number = 0而Person.name = null)
      System.out.print(one); //运行结果Person@15db9742(类名加地址值)
      注:8种数据是不是对象呢,它们存在的意义在哪呢?我也理解的不是很透彻。。。。

    引用传递和值传递

    • 引用类型:除了在函数传值的时候是"引用传递",在任何用"="向对象变量赋值的时候都是"引用传递"。
    • 值传递:*基本类型的传递都属于值传递,和C语言一样,当把Java的基本数据类型(如int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值传递"。

    相关文章

      网友评论

          本文标题:java中的对象与引用

          本文链接:https://www.haomeiwen.com/subject/tukxqxtx.html