网站favicon图标制作 单例模式 Vue全家桶 sockets svg iframe 3d Web Uploader Movejs vue官方下载 vue论坛 建站一条龙 河南普通话考试报名 sql视频教程 jquery的点击事件 change事件 mysql数据库名称 mysql升序 mysql删除存储过程 python平方函数 windows搭建python开发环境 java使用 java编程入门 java运行环境配置 java读文件 java文件读取 java中的泛型 python网站开发实例 ntscan vbs脚本 matlab2016a安装教程 pr缩放 网络克隆 电子书制作软件 x64dbg c4d挤压怎么用 ps出血 国都证券官网下载 mtu设置多少最好 mix2s拆机
当前位置: 首页 > 学习教程  > 编程语言

java引用类型和基本类型

2021/1/28 23:38:49 文章标签:

java中有两种数据类型:基本类型和引用类型。 基本类型有8个: 整数类型 byte、short、int、long 浮点数类型 float、double 字符型 char 布尔类型 boolean 引用类型包括三种: 类 Class 接口 Interface 数组 Array 基本类型是通过诸如 int a …

java中有两种数据类型:基本类型和引用类型。

基本类型有8个:
整数类型 byte、short、int、long
浮点数类型 float、double
字符型 char
布尔类型 boolean
引用类型包括三种:
类 Class
接口 Interface
数组 Array

基本类型是通过诸如 int a = 5; long b = 6L;的形式来定义的,称为自动变量,自动变量存放的是字面值,不是类的实例,它存放在内存的堆栈中,数据大小和生存期必须是确定的,存取速度比较快,在堆栈中的字面值可以共享,也就是说我们定义一个int a = 5;然后又定义了一个int b = 5;这时a与b在内存中指向的是同一个字面常量。
引用类型一般是通过new关键字来创建,比如Integer num = new Integer(3);它存放在内存的堆中,可以在运行时动态的分配内存大小,生存期也不必事先告诉编译器,当引用类型变量不被使用时,Java内部的垃圾回收器GC会自动回收走。引用变量中存放的不是变量的内容,而是存放变量内容的地址。
在参数传递时,基本类型都是传值,也就是传递的都是原变量的值的拷贝,改变这个值不会改变原变量,而引用类型传递的是地址,也就是参数与原变量指向的是同一个地址,所以如果改变参数的值,原变量的值也会改变。这点要注意。

在java中,8种基本类型在java中都有对应的封装类型,也就是引用类型:
整数类型 Byte、Short、Integer、Long
浮点数类型 Float、Double
字符型 Character
布尔类型 Boolean
有时候我们会看到这样的语句 Integer num = 3;Boolean b = true;这样定义也能行得通,其实这里面有一个自动装箱的问题,即java自动把3这个字面常量封装成了Integer对象,同理也有自动拆箱。

还有些需要注意的比较特殊的地方:
1.Integer类型
Integer i1 = 3;
Integer i2 = 3;
此时i1 == i2 返回的是true
Integer i1 = 128;
Integer i2 = 128;
此时i1 == i2返回的是false,
这时因为Integer的数值在-128~127之间时,即在int的范围内,默认是按照基本类型int来存放的,仍旧存在堆栈中,如果超出了int的范围,就按照对象的方式来存放和比较了。
2、String类型
String类型我们有时候也会直接这样定义:
String s = “abc”;
这里的"abc"称为字符串常量,也是存在堆栈中的,s中存放的就是指向这个堆栈地址的引用,如果再定义一个
String s1 = “abc”;
这时,s与s1存放的是同一个地址的引用,即s与s1指向的是同一个字符串常量,
s == s1的值是true,
但是如果有
String s2 = new String(“abc”);
这时s == s2则为false,因为使用new之后,每次生成的对象都不是同一个,即使存储的内容相同。
上面的s == s1,s == s2其实比较的都是地址,并不是里面的内容。如果要比较内容,可以使用equals()方法。

引用


本文链接: http://www.dtmao.cc/news_show_650267.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?