java基础:java基本数据类型详解

1.java基本数据类型

java有八种基本数据类型:

  • 4种整型 :byte,short,int,long
  • 2种浮点型:float,double (3.14F位浮点型,没有F默认为double)
  • 一种字符型:char
  • 一种boolean型:boolean
    java基础:java基本数据类型详解_第1张图片

基本数据类型之间的类型转换??

1.1、自动转换: 低类型的向高类型的转换

java基础:java基本数据类型详解_第2张图片

1.2、强制类型转换

高类型的向底类型转换,但可能会数据溢出或者精度丢失
基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。

2. 基本数据类型对应的包装类

java是一门面向对象的语言,但是8中基本数据类型不具备面向对象的特征,所以实际使用中很不便所以为java八种基本数据类型提供了对应的包装类。
java基础:java基本数据类型详解_第3张图片

2.1 基本数据类型和包装类类型的区别

  • 包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本类型不是;
  • 包装类型是引用的传递,基本类型是值的传递;
  • 声明方式不同,基本数据类型不需要new关键字,而包装类型需要new在堆内存中进行new来分配内存空间;
  • 存储位置不同,基本数据类型直接将值保存在值栈中,而包装类型是把对象放在堆中,然后通过对象的引用来调用他们,因此,包装类的效率会比基本数据类型的效率要低。
  • 初始值不同,比如:int的初始值为0、boolean的初始值为false,而包装类型的初始值为null;

2.2、自动装箱和自动拆箱

  1. 自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
  2. 自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)
  • 包装类和基本数据类型比较时,只要值相等就相等
public static void main(String[] args) {
    Integer a1=127;
    Integer a2=127;
    int a3=127;
    Integer b1=128;
    Integer b2=128;
    int b3=128;
    System.out.println(a1==a2);
    System.out.println(a1==a3);
    System.out.println(b1==b2);
    System.out.println(b1==b3);
}

/*输出:true true false true

解析:自动装箱时采用valueOf方法,由于127在静态数组的范围内,所以不是new的,
而128的两个引用是指向new出现对象的,所以第一个是true,第三个是false。
而包装类和基本数据类型比较时,只要数值是相等的,就相等

3、为什么需要有包装类类型???

java程序中可以直接操作基本数据类型,但是某些情况下需要将它们看成对象来处理,这些情况下就需要借助于Java API中基本数据类型对应的包装类来处理了。

包装类主要作用:

  • Java中的基本类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。这在实际使用中存在很多不足,为了解决这个不足,对每个基本类型都对应了一个引用的类型,称为装箱基本类型。
  • 提供了一系列实用的方法,比如toString(),equals(),hsahCode(),wait(),notify()
  • java集合不允许存放基本数据类型,存放数字时要用包装类型;(为什么?)
    Java集合不能存放基本数据类型,只能存放对象的引用。每个集合元素都是一个引用变量,实际内容都存放在堆内或方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时会被收回。 可以通过包装类,把基本数据类型转化为对象类型,存放引用。有了自动拆箱和装箱功能,基本数据类型和其对应对象之间的转换变得很方便,把基本数据类型存入集合中可以自动存。

你可能感兴趣的:(java基础,java,jvm,servlet)