基础 | 数据类型

Java是强类型语言,即每个变量和对象都必须具有声明类型。
由于不同数据存储时所需的空间大小各不相同,故对不同数据采用不同的数据类型来进行区分。

数据类型结构图:

一、数据类型

1.基本数据类型

基本数据类型在声明变量后会立刻分配数据的内存空间,在其中存储的是数据值,数据占用的内存空间大小是固定的,与软硬件环境无关,这两点保证了java的跨平台性和安全性。

基本数据类型存储需求和表示范围:
在这里插入图片描述
注意:
①java中不允许使用未初始化的变量
②boolean类型的取值只能是ture或false,不能与其他类型进行转换
③char占两个字节是因为java采用unicode编码而不是ASCII编码
④在计算机中都以二进制的补码形式存储

2.引用数据类型

引用数据类型在声明变量时不会分配数据的内存空间,只会分配一个空间用来存储数据的内存地址。Java中,引用类型指向一个对象,指向对象的变量是引用变量。

注意:
①引用类型的变量在java栈中存储对数据的引用地址,而数据存储在java堆中。
②这些变量在声明时被指定为一个特定的类型,变量一旦声明后,类型就不能被改变了。
③所有引用类型默认值都为null。

二、装箱机制、拆箱机制

java数据类型中的8中简单类型分别为:boolean、byte、char、short、int、long、float、double。与之相对应,java类库java.lang包中定义了8种包装类:Boolean、Byte、Character、Short、Integer、Long、Float、Double。

1.装箱

装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。

如:Integer a=10; <隐式加包> 将基本数据类型10加包为Integer类型
Integer.valueOf(10)<显式加包>

2.拆箱

拆箱:将引用类型的对象简化成值类型的数据

如:Int b=a;<隐式拆包> 将Integer类型a拆包为int型10
int b=a.intValue();<显式拆包>

注:装 / 拆箱操作会导致额外的系统开销。
例:

public class TestBoxing{
       public static void main(String[] args) {
          int i=123;
          Integer obj1=i;                     //隐式装箱 int i->Integer obj1
          Integer obj2=Integer.valueOf(i);    //显式装箱
          int j=obj1;                         //隐式拆箱 Integer类型的obj1->int j
          int k=obj2.intValue();              //显式拆箱
          System.out.println("The value-type value(j)="+j);
          System.out.println("The value-type value(k)="+k);
          System.out.println("The object-type value(obj1)="+obj1.toString());
          System.out.println("The object-type value(obj2)="+obj2.toString());
       }
}

运行结果:
在这里插入图片描述

三、类型转换

1.自动类型转换:只允许发生从低精度到高精度的类型转换,转换后的数值大小不受影响。

例:

short s=10;
int n=s;   //类型提升为int

<将short类型变量s赋值给int类型n,由于int类型的取值范围大于short类型的取值范围,在赋值过程中不会造成数据丢失,故编译器自动完成类型转换。>

不同数据类型间的转换规则:
在这里插入图片描述

2.强制类型转换:一般使用强转操作符 ( ) 进行转换。

例:

double x=3.14;
int n=(int)x

结果为:x=3.14,n=3

注意:
①若把大类型的数据存到小类型的变量当中势必会发生数据截断、精度降低的现象。
②java中的数据类型从byte转成char需要:byte->int->char
③无论从short类型转成char类型还是char类型转成short类型都必须强制转换。
在java中只有char类型是无符号整型,其余都是有符号类型。由此可知short和char类型变量,虽然他们所占字节数相同,但是他们之间表示的范围却不同,char类型保存16位整数,而short类型保存的是15位整数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值