前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >引用数据类型

引用数据类型

原创
作者头像
二次员
修改于 2019-10-08 04:07:51
修改于 2019-10-08 04:07:51
56800
代码可运行
举报
文章被收录于专栏:Java小白入门Java小白入门
运行总次数:0
代码可运行

在 "java基本数据类型"我们已经知道如何声明primitive(基本)数据类型变量并给他们赋值,但是非primitive数据类型的变量我们该如何处理呢。比如如何处理“对象”变量。


  • 事实上并不存在“对象变量”这样的称呼。
  • 只有reference(引用)到对象的变量。
  • reference(引用)变量保存的不是值而是对象的方法
  • 他并不像一个奶茶杯子用来装不同的变量,而是类似一个遥控器,而指针就像一个按钮。
  • 对象只存在与回收垃圾的堆中。

对象引用变量是以字节来表示取得对象的方法。我们使用圆点运算符 . 来对引用变量表示取得圆点前面的对象,然后运行该对象圆点后的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myDog.bark();

代表名为myDog的变量引用对象上的bark()。可以把它想象成遥控器与上面的按钮,引用变量就是遥控器,圆点运算符就是遥控器上的按钮对应着你要调用的方法。

声明一个对象

代码语言:java
AI代码解释
复制
Dog myDog = new Dog;

代表取得Dog对象的方法以字节心事放进变量中。对象本身并没有放进变量中。

1.声明一个引用变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dog myDog 

java虚拟机分配空间给引用变量,并将辞变量命名为Dog。此引用变量将被固定为Dog类型。换句话说,他是一个控制Dog的遥控器,不会是Cat或者是皮卡丘的遥控器。

2.创建对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Dog()

java虚拟机分配堆空间给新建立的Dog对象。

3.连接对象和引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=

将新的Dog赋值给myDog这个引用变量,就好像设定遥控器。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java 学习笔记】《Head First Java》——基本概念
类是对象的蓝图,它会告诉虚拟机如何创建某种类型的对象。根据某类创建出来的额对象都会有自己的实例变量。
全栈程序员站长
2022/09/08
6040
【Java 学习笔记】《Head First Java》——基本概念
JAVA基本数据类型与引用数据类型
┏基本数据类型━━┫             ┗━浮点型:float double
用户7886150
2021/04/26
9970
HeadFirstJava
不要直接用类名点变量来改变属性值,一般都用get、set方法。封装的基本原则:将你的实例变量标记为私有,并提供公有的getter与setter来控制存取动作。
全栈程序员站长
2022/09/06
2230
java中的基本数据类型一定存储在栈中吗?
基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型在内存中的存储问题来解释一下:
全栈程序员站长
2022/07/01
1.3K0
基本数据类型及引用数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
Java架构师历程
2018/09/26
2.6K0
Java 回顾 ( Revisiting Java )
最近在看一些工程代码,于是看了看设计模式,看设计模式之前发现Java是先修知识,又重新补了一遍Java,温故知新,获得一些新的体会。 本文不打算作为“Java知识点详细梳理”,“10分钟学会Java”之类的文章,仅作为博主自己的一个回顾,涉及的内容也无定法。
哲洛不闹
2018/09/14
1.7K0
Java 回顾 ( Revisiting Java )
Java学习笔记(2)——数据类型
终于要写点干货了,其实思考了很久下面一篇文章要写什么,主要的纠结点在于,既想要分享那些精美的知识,又怕这些知识不太好嚼。后来想想还是对初学者不太好友算了..一来这系列文章叫做学习笔记,我的。另外写得足够有料,才能发挥笔记的作用,不然索然无味的,连收藏、喜欢的意义也没有了。 写在文章之前 终于写点干货了,想先简单谈谈自己的一些看法。对于我自己而言,我比较厌烦那些繁琐的无聊的知识点,反而更在乎一些实际应用的东西。但了解一些底层的东西是非常有意义的,它有助于我们理解程序。 每一点知识的积累,终会有用武之地
我没有三颗心脏
2018/04/26
6370
Java学习笔记(2)——数据类型
Java 之数据类型
基本类型与引用类型的区别: 1.基本类型与引用类型的组成 基本类型是一个单纯的数据类型,它表示的是一个具体的数字、字符或一个布尔值,例如100、'M'和true。对于引用类型,若一个变量引用的是一个复杂的数据结构的实例,则该变量的类型就属于引用类型,在引用类型变量所引用的实例中,不仅可以包含基本类型的变量,还可以包括对这些变量进行操作的行为。 例如:创建一个People类,该类中包含了一个short型的成员变量和一些String型变量,并且定义了对这些成员变量进行操作的方法,其代码如下: public class People{     private String id;                        //表示身份证号码     private String name;                          //表示姓名     private short age;                       //表示年龄     private String sex;                      //表示性别  public void setId(String id){         //设置成员变量id值的方法         this.id=id;     }     public String getId(){                         //返回成员变量id值的方法         return this.id;     }     …//省略了其他成员变量的setXXX()与getXXX()方法 } 下面创建People类的两个实例,并分别通过变量you和me引用: People you=new People(); People me=new People(); 则变量you与me的类型为引用类型,并且引用的是类的实例,所以更具体的为类引用类型。对于类引用类型变量,通过运算符“.”就可以访问类中的成员变量和方法了。例如,通过以下代码分别为变量you与me所引用的实例设置成员变量name的值: you.setName("reader");                              //设置name值为"reader" me.setName("MR");                                  //设置name值为"MR" 通过以下代码来输出引用变量you与me所引用实例的name值: System.out.println(you.getName());                   //输出"reader" System.out.println(me.getName());                    //输出"MR" 2.Java虚拟机的处理方式 对于基本类型的变量,Java虚拟机会根据数据类型为其分配实际占用的内存空间,如对int型变量为其分配32位内存空间并存放变量值。 而对于引用类型变量,Java虚拟机同样要为其分配内存空间,但该空间内存放的并不是变量所引用的对象,而是对象在堆区存放的地址。所以引用变量最终只是指向被引用的对象,而不是存储了被引用的对象,因此两个引用变量之间的赋值,实际上就是将一个引用变量存储的地址复制给另一个引用变量,从而使两个变量指向同一个对象。 例如:定义两个Book类型的类引用变量book1和book2,其中变量book1引用Book类的一个对象,book2不引用任何对象。 Book类中定义了一个float型成员变量price,表示价格,代码如下: public class Book{     private float price=50.0f;                   //float型成员变量price, 表示价格     private int store=100;                        //int型成员变量store, 表示库存     private String name;                          //String类型成员变量name, 表示书名 } 通过以下代码定义book1和book2引用变量。 Book book1=new Book(); Book book2=null; Java虚拟机为引用变量book1、book2及book1所引用对象的成员变量分配的内存空间如图1所示。 从图1可以看出变量book1引用了Book类的实例,book2没有引用任何对象,下面通过如下代码对book2变量进行赋值。 book2=book1     //将book1引用对象的地址复制给book2变量, book1与boo
ccf19881030
2019/04/23
1.1K0
Java基础知识总结(超详细整理)
Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)于1995年推出。它设计之初的目标是“编写一次,到处运行”,意味着Java程序可以在任何平台上运行,只要该平台安装了Java虚拟机(JVM)。
猫头虎
2025/03/15
2980
Java基础知识总结(超详细整理)
理解Java8的数据类型和运行时数据区域
Java虚拟机包含对对象的显式支持,对象要么是动态分配的类实例,要么是静态数组,对对象的引用我们可以叫做指针或者引用,一个对象可以有多个引用,对象总是通过引用的值进行操作,传递和测试。
我是攻城师
2018/10/19
6190
理解Java8的数据类型和运行时数据区域
js数据类型很简单,却也不简单
javascript的数据类型分为两大类,一类是原始类型(primitive type),一类是对象类型(object type)。
程序员白彬
2020/07/10
1.4K0
js数据类型很简单,却也不简单
java的栈内存和堆内存_Java本地方法栈
在方法中定义的一些基本类型的变量和对象的引用变量都在方法的栈内存中分配,当在一段代码块中定义一个变量时,Java就在栈内存中为这个变量分配内存空间,当超出变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立刻被另作他用。
全栈程序员站长
2022/10/03
1K0
java的栈内存和堆内存_Java本地方法栈
「干货」基本数据类型和引用数据类型的区别
今天继续来讲面试,已经出了很多java一面真题系列文章了,之后也会整理成一个系列,欢迎持续关注哦。
用户7656790
2020/09/01
1.9K0
用画小狗的方法来解释Java中的值传递
答案是 A旺财,changeName方法并没有把myDog的名称改了。如果你答错了,没关系,我要开始画小狗了,画完你就明白了;如果你答对了,但不太明白其中的原因,那我画的小狗也肯定能帮到你。
凯哥Java
2019/07/01
9470
工作这么多年了,你知道JAVA中基本数据类型和引用数据类型的区别吗?
在比较中==与equals对基本数据类型与引用数据类型的引用是不一样的,==对基本数据类型比较的是值,对引用数据类型比较的是地址,而equals默认比较的是地址,对基本数据类型会在比较完引用地址后再比较值是否相等,但是像String、Integer等包装的引用数据类型重写了equals来让他们的equals变为值的比较
余生大大
2022/11/02
2970
工作这么多年了,你知道JAVA中基本数据类型和引用数据类型的区别吗?
剖析依赖属性
这节来讲一下WPF中的依赖属性 (Dependency Property)。
宿春磊Charles
2021/11/05
4820
java基本变量和引用变量_引用类型与值类型的区别
Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。
全栈程序员站长
2022/11/01
2.2K0
Java学习笔记(三)——类和对象
在类实例化的过程中自动执行的方法叫做构造方法,它不需要你手动调用。构造方法可以在类实例化的过程中做一些初始化的工作。
蛮三刀酱
2019/09/10
5230
你真的懂 Java 的内存管理和引用类型吗?
对于 Java 程序员来说,在 Java 虚拟机自动内存管理机制的帮助下,不再需要为每一个 new 操作去写对应的 delete/free 代码,不容易出现内存泄露和内存溢出的问题。不过,也正是因为 Java 程序员把内存控制的权力交给了 Java 虚拟机,一旦出现内存泄露和内存溢出的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会非常艰难。
developerHaoz
2018/08/20
7390
JAVA基础知识点:内存、比较和Final
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题。(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。 释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。 2.什么叫java的内存泄露 在java中,
老白
2018/03/19
1.3K0
推荐阅读
相关推荐
【Java 学习笔记】《Head First Java》——基本概念
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验