Java基本类型总结

**

java中基本类型出现的原因:

**
在Java编程思想的第一章就讲到:万物皆对象,new一个对象存储在堆中,我们通过堆栈的引用来使用这些对象,但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效。

分类

Java有8种基本类型,大致可以分为3类:字符型、布尔型、数值型。
在这里插入图片描述

1. 数值类型

  1. 整数类型

java中数值是没有无符号类型的,并且不会随着机器硬件的环境或者操作系统的改变而改变,它们的取值范围是固定不变的,这点相对于C/C++来说就很棒。

  • byte:(1字节/8bit),最大存储数据量是255,取值范围-128~127
  • short:(2字节/16bit),最大数据存储量是65536,取值范围-32768~32767
  • int:(4字节/32bit),最大数据存储容量是2^32-1, 取值范围 -231~231-1
  • long:64位,最大数据存储容量是2^64-1,取值范围为 -263~263-1

对于取值范围,在对应的包装器类中有常量记载,直接调用就可以了,无需记忆

基本类型byte 二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
基本类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
基本类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
基本类型double 二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE

  1. 浮点类型
  • float:(4字节/32bit),因为浮点型默认为double,所以在赋值时必须在数字后面加上F/f.
  • double:(8字节/64bit),因为浮点型默认属性为double,所以赋值时可以加d或D也可以不加。

2. 布尔型

布尔型:boolean 只能取两个值 true false 常用于条件判断,循环结构中使用

3.字符型
字符型char(1字符=2字节) 定义char型变量通常使用一对’ ',内部只能写一个字符 char c1=‘a’

整形常量默认类型为int型 浮点型常量默认类型为double型
这个是规定的,不要问为什么,记住就完事了。

Java类型转换

.基本数据类型之间的运算规则
1.自动类型提升
当容量小的数据类型变量和容量大的数据类型变量做运算时,结果自动提升为容量大的数据类型(此时的容量大小指的是,表示数的范围大小,比如float容量要大于long的容量)
byte、char、short->int->long->float->double 特别的:当byte、short、char三种变量做运算时(自身和自身做运算时也算),结果为int型

2.强制类型转换:
自动类型提升的逆运算(需要使用强转符号()) 强制类型转换可能会导致精度损失
整形常量默认类型为int型 浮点型常量默认类型为double型

3.包装器过渡类型转换

4.字符串与其他类型之间的转换

5.Date和其他数据类型之间的转换

总结:只有boolean不参与数据类型的转换
例子

import java.text.SimpleDateFormat;
        import java.util.Date;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //1.自动转换
        byte b1 = 12;
        int a = b1*2;          //这里发生了自动转换

        //2.强制转换测试
        byte byte1 = 12;
        byte byte2 = 1;
        byte i =(byte)(byte1 + byte1);     //显示不能从byte转换成int  这里需要强制转换

        //3.包装器过渡转换
        String s = "123";
        int value = Integer.parseInt(s);    //方法返回int值赋给value

        //4.字符串和其他类型的转换
        int num = 2017;
        String time= ""+num;              //右边最终结果是String

        String str1 = "123";
        int value1 = Integer.valueOf(str1);  //结果是int 123

        //5.Date与其他数据类型的相互转换
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMDD");
        String timeString = format.format(date);

    }

}

关于基本类型和包装类型的总结

  • 基本类型的优势:数据存储相对简单,运算效率比较高
  • 包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想
  • 声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
  • 存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
  • 初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
  • 使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值