一、什么是引用数据类型

数组,类,接口被称为引用数据类型,共同特点是,他们的字面值并不是一个“值”而是一段地址。

二、定义(创建)

过程如下(以数组为例)

由上可知,引用变量存储的是一个地址,地址指向堆中存储arr实际内容的一片区域(虽然java中并没有指针,但不代表java不使用指针,指针只是被封装在java编译器内部,我们无法窥见而已。)由于存储的是一个地址,所以无论是数组还是类和接口,他们的长度都是一样的,是一个地址的长度(一个地址多长呢?如果是64bit的jdk就是64bit,如果是32bit的jdk就是32bit)

三、调用

1、先说基本类型变量的调用,对于基本数据变量来说,对变量的操作一般是对变量的“值”的操作。例如赋值:i1 = i2,变化的是变量的值。

2、再看引用类型变量,引用变量的调用分两种,一种是对引用变量本身的调用,一种是对引用变量的元素的调用。

对于引用变量本身的调用,调用的是引用变量的地址值,也可以理解为引用变量的值就是地址值。

对于引用变量的元素的调用,也要分情况:一种是调用的元素本身也是一个引用变量,那么按调用引用变量本身来算;如果调用的是元素是基本变量类型,那么按照调用基本变量类型来算。

四、特殊的String

有一个说法String是一种特殊的引用变量类型,特殊在哪里呢?说他是引用变量,是因为它的内存方式,说它特殊也在它的内存方式。

如果我们想改变字符串的内容,系统会首先查看常量池内是否有我们要改成的字符串,如果有就直接把地址改过去,如果没有,就创造一串新的字符,并把地址改过去。

因此说String是引用变量,是因为它存储的是地址,地址指向一段字符串,说它特殊是因为对字符串内容进行改动时,一定会影响到字符串的地址,也就是字符串的值。

java:引用数据类型相关推荐

  1. Java引用数据类型String详解

    Java引用数据类型(String) 引用数据类型概述 引用数据类型与基本数据类型的差别(举例说明) 引用数据类型概述 说到引用数据类型,那么何为引用数据类型? 引用类型,都可以用null值作为值,也 ...

  2. Java学习笔记之:Java引用数据类型之字符串

    一.简介 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串. 创建字符串最简单的方式如下: String greeting = "H ...

  3. java引用数据类型可以更改类型_java,基本数据类型和引用数据类型

    java中的数据类型分为基本数据类型和引用数据类型 基本数据类型 整型:byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用数据类型 ...

  4. java引用数据类型可以更改类型_Java改变引用数据类型的值

    Java改变引用数据类型的值 在Java中,引用数据类型的数据传递的是值(地址)的拷贝 对于以下代码 class BirthDate { private int day; private int mo ...

  5. java 引用数据类型Scanner类 Random类

    Scanner类是属于引用数据类型 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 基本数据类型定义:数据类型  变量名  =  值;            引用 ...

  6. JAVA基础第2.5章 JAVA引用数据类型

    (一)Java变量 1.Java中有两种数据类型:基本数据类型和引用数据类型 基本数据类有8种:byte, short, int, long, char, boolean, float, double ...

  7. Java引用数据类型(类)+案例

    引用数据类型(类) 自定义类也是一种数据类型.只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物. 类的定义格式 创建java文件,与类名相同 pub ...

  8. java引用数据类型之数组

    首先我们都知道在编程中赋值运算"="的意思是把右边的值赋给左边. 如图所示,当b=a时,实际上就是把a的值赋值给b. 但是在数组中,可不是这么回事 如图所示,先定义一个数组变量a, ...

  9. java引用数据类型

    一.定义 1.类似c的指针,引用类型存放的时对象的引用 2.引用变量再声明时被指定位一个特定的类型,一旦声明后,类型就不能被改变 3.引用类型包括:类,接口,数组,枚举,注解 4.所以的引用类型的默认 ...

  10. Java程序员的春天!java引用数据类型和基本数据类型区别

    正文 这次写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis集群搭建 搭建完redis集群环境后,开始springboot之旅 1. ...

最新文章

  1. Unity网络多玩家游戏开发教程(上册)
  2. MySQL删除普通用户
  3. 组件化开发实战_一篇文章搞懂什么是前端“组件化”开发
  4. 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)
  5. 【Es】Es 集群设置分片很大导致集群无法选举主节点异常等
  6. 在C#中有效地使用列表作为字典键
  7. 常用c语言函数实现,常用的C语言库函数实现
  8. 信息安全系统设计基础实验三:实时系统的移植
  9. 探讨e.target与e.currentTarget
  10. [矩阵论] 上三角阵的逆(如果有)则也是上三角阵
  11. 51单片机简单计算器
  12. SPSS中如何进行快速聚类分析
  13. js的延迟执行 async defer/ js的数据类型全/ null和undefined区别/=、==、===的区别/js中的宏任务和微任务js的作用域附带试题有答案
  14. 用阿里云短信服务--通过Web接口发送短信
  15. android 弹幕 计算碰撞轨道,GitHub - imtaotao/danmuku: 高度自定义弹幕样式,碰撞检测,你值得拥有 ...
  16. Kuangbin 带你飞-线段树专题 题解
  17. 主流安全大漏洞:隐私空间泄密
  18. 【那些年,我们一起追得女孩】第十五章
  19. 系统程序员成长计划-管道过滤器(Pipe-And-Filter)模式
  20. A.O.史密斯创新精品净水热饮机 净水热饮无需等待

热门文章

  1. java面试题good and gbc
  2. 谷歌Android专利侵权拖累一大片厂商
  3. 别小看tail 命令,它难倒了技术总监
  4. linux中压缩某个文件夹
  5. C++ 不能通过给字符数组名赋值的方法给字符数组赋值
  6. Android 常用设计模式(一)
  7. 三问联通:不能挣钱,拥抱互联网有用吗?
  8. 跟着Cell Research学单细胞分析:以小提琴图、热图为例
  9. 写一个程序来模拟网桥功能。
  10. flex自适应宽度显示省略号