java基本变量和引用变量_引用类型与值类型的区别

java基本变量和引用变量_引用类型与值类型的区别Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。Java的8中基本类型的变量称为基本类型变量,而类、接口和数组变量时引用类型变量。这两种类型变量的结构和含义不同,系统对他们的处理也不相同。1.基本类型与引用类型变量*基本类型(primitivetype)基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。

Java的8中基本类型的变量称为基本类型变量,而类、接口和数组变量时引用类型变量。这两种类型变量的结构和含义不同,系统对他们的处理也不相同。

1.基本类型与引用类型变量

*基本类型(primitive type)

基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个数字、一个字符或一个布尔值,例如一个整型值是32位的二进制补码格式的数据,而一个字符型的值是16位的Unicode字符格式的数据等。

*引用类型(reference type)

引用型变量的值与基本类型变量不同,变量值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。

引用在其他语言中称为指针或内存地址。Java语言与其他程序设计语言不同,不支持显示使用内存地址,而必须通过变量名对某个内存地址进行访问。

2.两种变量的不同处理

在Java语言中基本类型变量声明时,系统直接给该变量分配空间,因此程序中可以直接操作。例如,

int a; //声明变量a的同时,系统给a分配了空间

a=12;

引用类型(或称为引用型)变量声明时,只是给该变量分配引用空间,数据空间未分配。因此引用型变量声明后不能直接引用,下列第二条语句是错误的:

MyDate today;

today.day = 14; //错误!因为today对象的数据空间未分配

……

引用类型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。通过对引用型变量声明与实例化语句的执行过程分析,可以理解系统对引用型变量的上述处理。例如有如下语句:

MyDate today;

today = new Date();

第一条语句的执行,将给today变量分配一个保存引用的空间,第二条语句分两个步骤执行,首先执行new Date(),给today变量开辟数据空间,然后再执行第二条语句中的赋值操作,

3.引用变量的赋值

Java中引用型变量之间的赋值是引用赋值。例如,下列语句执行后,内存的布局如图3-5所示。

MyDate a,b; //在内存中开辟两个引用空间

a = new MyDate(); //开辟MyDate对象的数据空间,并把该空间的首地址赋给a

b = a; //将a存储空间中的地址写到b的存储空间中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179391.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TextMate 激活成功教程

    TextMate 激活成功教程网上google来两个方法,如下:(目的还只是个人学习只用,如果今后用于商业目的,一定支持正版)方法1:关于TextMate的注册这个号称TheMissingEditorfor Mac OSX的编辑器我就不介绍了,我就说说如何注册吧。第一种方法:花39欧元第二种方法:UninstallfirstandInstalagain,justopenthe TextMate unix

    2022年7月13日
    15
  • 我的IDEA常用快捷键记录

    我的IDEA常用快捷键记录用了这么久的IDEA了,感觉就这些快捷键最好用,一起分享吧。快捷键组合实现效果psvm+Tab键publicstaticvoidmain(String[]args)sout+Tab键System.out.println()Ctrl+X删除当前行Ctrl+D复制当前行Alt+Insert(或右键Generate)生成代码(如get,set方法,构造函数等)Ctrl+Alt+T生成trycatch(或者Alt+ente

    2022年5月14日
    63
  • Linux虚拟机连不上网

    Linux虚拟机连不上网Linux虚拟机连不上网

    2022年6月26日
    27
  • Java快排算法(java工程师需要掌握哪些知识)

    思路对于给定的数组,从中选一个元素为比较对象,一般选最左或最右的元素,选左边为升序排,选右边反之。数组array[]:最左边:target=5数组下标:i=0,j=9步骤:①从右边遍历数组,把array[j]比5小的放在5的左边,j–;交换位置后i=0,j=7:②从左边遍历数组,把array[i]比5大的放在5的右边,i++;交换位置后i=…

    2022年4月11日
    40
  • Java 8 Stream Collectors groupingBy 示例

    Java 8 Stream Collectors groupingBy 示例展示如何使用Java8Stream Collectors进行分组,计数,总和和排序List分组,计数和排序1.1分组List并显示其总数。Java8Example1.javapackagecom.mkyong.java8;importjava.util.Arrays;importjava.util.List;importjava.util.Map;

    2022年8月20日
    6
  • 如何用两个栈实现一个队列

    如何用两个栈实现一个队列如何实现使用两个栈实现一个队列呢 这里主要还是自己的思想问题 在这里我们首先整理一下自己的思维 1 首先准备两个栈 栈 A 与栈 B2 栈 A 专门用来完成入队列操作 栈 B 专门用来出队列与取队首元素操作 3 每次入队列操作时 首先得判断 B 栈是否为空 不空则将 B 栈元素全都依次入 A 栈 最后继续入新元素 即将要入栈元素添加到栈 A 4 每次出队列与取队首元素操作时 将 A 栈中的元素依次入 B 栈 出队列即取出 B 栈中的元素 取队首元素即取 B 栈栈顶元素即可 importjava util Stack public

    2025年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号