Java数据类型(八种基本数据类型 + 四种引用类型)、数据类型转换 |
您所在的位置:网站首页 › java的变量根据范围分类有哪些 › Java数据类型(八种基本数据类型 + 四种引用类型)、数据类型转换 |
1.总览Java的数据类型只有两大类:8大基本数据类型与引用数据类型。其中基本数据类型又被称为值类型基本数据类型:6种数字类型(byte/short/int/long/float/double)、1种字符型(char)、1种布尔型(boolean)引用数据类型:类(Class)、接口(Interface)、数组(Array)除了以上的基本数据类型和引用数据类型,还有一些其他相关的数据类型,例如字符串类型String、枚举类型Enum,它们都是基于引用数据类型来实现的基本数据类型只能存自己类型的值,无其他额外功能,具体介绍如下第2小节引用类型:参数传递时,以拷贝引用地址的方式传递给接收变量,而非复制整个数据本体。除八大基本数据类型之外的所有数据类型,都为引用数据类型。所有引用数据类型的默认值都为null。为了基本数据类型可以与引用数据类型互相转换、以利用彼此的特性,java为每一种基本数据类型提供了相应的包装类。包装类对基本数据类型进行了封装,提供了丰富的功能,包装类是基本类型的拓展包装类是引用类型的一种,包装类与基本数据类型一一对应,也有8种,分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean2.基本数据类型2.1 类型概述6种数字类型4种整数型:byte、short、int、long2种浮点型:float、double1种字符类型:char1种布尔型:boolean2.2 基本数据类型详解 基本类型 存储大小 初始化默认值 取值范围 包装类型 byte 1字节(8位) 0 -128~127 Byte short 2字节(16位) 0 -32768~32767 Short int 4字节(32位) 0 -2^31 ~ 2^31 - 1 Integer long 8字节(64位) 0L。"L"理论上不分大小写,但若写成"l"容易与数字"1"混淆,不容易分辨,所以最好大写。 -2^63 ~ 2^63 - 1 Long float 4字节(32位) 0.0f 符合IEEE754标准的浮点数,1.4E-45 ~ 3.4028235E38 Float double 8字节(64位) 0.0d 符合IEEE754标准的浮点数,4.9E-324 ~ 1.7976931348623157E308 Double char 2字节(16位) '\u0000' \u0000 ~ \uffff(十进制等效值为 0~65535,本质也是数值) Character boolean 1字节(8位)/4字节(32位) false true/false Boolean float、double不能用来表示精确的值,运算不精确——>解决方案:BigDecimal。 char 数据类型可以储存任何字符。 对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中 2.3 基本数据类型与引用数据类型区别存储方式:基本数据类型直接存储值,而引用数据类型存储的是对象的引用(内存地址)内存分配:基本数据类型在栈上分配内存,引用数据类型在堆上分配内存(具体内容存放在堆中,栈中存放的是其具体内容所在内存的地址)。栈上的分配速度较快,但是内存空间较小,而堆上的分配速度较慢,但可以分配更大的内存空间默认值:基本数据类型会有默认值,例如int类型的默认值是0,boolean类型的默认值是false。而引用数据类型的默认值是null,表示没有引用指向任何对象复制操作:基本数据类型进行复制时,会复制该变量的值。而引用数据类型进行复制时,只会复制对象的引用,两个变量指向同一个对象参数传递:基本数据类型作为方法的参数传递时,传递的是值的副本,不会修改原始值。而引用数据类型作为方法的参数传递时,传递的是对象的引用,可以修改对象的属性或状态比较操作:基本数据类型使用\==进行比较时,比较的是值是否相等。而引用数据类型使用\==进行比较时,比较的是引用是否指向同一个对象,如果要比较对象的内容是否相同,需要使用equals()方法注意:Java中的包装类(Wrapper Classes)对基本数据类型进行了封装,使其也具有了对象的特性,可以调用方法和进行类型转换等操作。 ![]() 注意:在Java 5及其之后的版本中,基本类型和包装类型之间的转换会通过自动装箱、拆箱来自动进行,使得基本类型和包装类型之间的使用更加方便 3.数据类型转换Java中的数据转换主要分为两种:自动类型转换(也称为隐式转换)、强制类型转换(也称为显式转换)。 转换从低级到高级:byte、short、char(三者同级)——> int ——> long ——> float ——> double 自动类型转换:代码无需任何处理,在代码编译时 编译器会自动进行处理。特点——低级转换高级。强制类型转换:需要在待转换数据类型前 使用 (type)value, type是要强制类型转换后的数据类型,可能会导致溢出或损失精度 。特点——高级转换低级。数据类型转换必须满足如下规则: 不能对boolean类型进行类型转换。不能把对象类型转换成不相关类的对象。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。转换过程中可能导致溢出或损失精度,例如: int i = 128; byte b = (byte)i; 因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如: (int)23.7 == 23; (int)-45.89f == -45;3.1 具体示例int 和 long 互转、int和double互转、int和byte互转、int和char互转、int和String互转 输出: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |