【笔记整理】—— 2.14 Java 的引用数据类型 | 创建对象过程


【前言】
思考源头: Java 除 8 种基本数据类型外, 剩下的都是引用数据类型。而我们平常熟知的引用类型是“字符串等等”,那“ 等等”中到底包含什么?

常见引用数据类型

百度百科:引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。

  • 常见引用数据类型:String字符串、类、接口、数组。

  • 引用数据类型的两种比较

    1. (常用) 比较两者的是否相等——用equals
    2. 比较两者是否指向同一个对象——用 == 。若为同一个对象则地址应相同
    3. 比较 a b 分别对应不同的对象,此时 a b 中的地址 一定是不同的了 ,此时比较的是对象的值 ,因此这里的比较只能用equals
  • 我们可以把引用当作一个指针,当创建对象并出现 new 关键字时,分配堆空间。

  • 内存分为:栈,堆,方法区,方法区内的常量池。基本数据类型才是真正存放在栈中,引用数据类型的常量放在在常量池中

  • 局部变量和成员变量的区别

    1. 定义的位置不一样
      局部变量定义在方法中,成员变量定义在方法外面,类的里面

    2. 作用域不同
      局部变量的作用域就是所定义的大括号,成员变量的作用域:在整个类中都可以使用,并且,成员变量的作用域跟变量修饰付有关系,如果修饰符不是private,在其他的类中也可以使用

    3. 在内存中的位置不一样
      局部变量存在于栈中,会随着作用域的结束而消失,成员变量存在堆中,是和对象的生命周期相同

    4. 初始化不同
      局部变量在使用之前一定要手动的进行初始化,而成员变量,如果没有进行手动初始化,java会给它一个默认值,
      整数类型:0,long:0L,小数类型:0.0,引用类型:null

Java创建对象做了什么

引用数据类型又称为对象数据类型

  1. .class文件加载到内存的方法区。方法区中内容只有一份,且只有第一次创建对象时加载一次
  2. 在栈中创建一块空间——栈帧,再给对象起个名字
  3. 看见 new ,就在堆中开辟一块空间
  4. 给成员变量进行默认的初始化。int型为0,引用类型默认值为null
  5. 显示初始化(成员变量)
  6. 将对象的引用(指针)交给变量
创建对象 与 static的关系
  • static修饰的变量称为静态变量,用static修饰的方法称为静态方法,这些变量和方法是在.class文件加载时进行创建的,【先于对象创建】
  • 非静态的方法可以访问静态的方法或属性,反之不行
  • 在静态方法中不能使用非静态的成员变量,如果想要使用,要先创该类的对象
  • 静态方法也不能有this、super
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值