Java-基本数据类型

八种基本数据类型

基本数据类型有八种,分为三大类(数值型,字符型,布尔型)

数值型

数值型分为两类(整型,浮点型)

整型

byte

  • byte8位的数据类型,占用1个字节
  • 默认值:0
  • 最小值:-128 (-2^7)
  • 最大值:127 (2^7-1)
 byte bMaxValue = Byte.MAX_VALUE;
 byte bMinValue = Byte.MIN_VALUE;
 System.out.println("最大值:" + bMaxValue);
 System.out.println("最小值:" + bMinValue);

short

  • short16位的数据类型,占用2个字节
  • 默认值:0
  • 最小值:-32768(-2^15)
  • 最大值:32767(2^15-1)
    short sMaxValue = Short.MAX_VALUE;
    short sMinValue = Short.MIN_VALUE;
    System.out.println("最大值:" + sMaxValue);
    System.out.println("最小值:" + sMinValue);
    

int

  • int32位的数据类型,占用4个字节
  • 默认值:0
  • 最小值:-2,147,483,648 (-2^31)
  • 最大值:2,147,483,647 (2^31-1)
    int iMaxValue = Integer.MAX_VALUE;
    int iMinValue = Integer.MIN_VALUE;
    System.out.println("最大值:" + iMaxValue);
    System.out.println("最小值:" + iMinValue);
    

long

  • long64位的数据类型,占用8个字节
  • 默认值:0L或者0l ==l容易与数字1混淆,建议使用大写L==
  • 最小值:-9,223,372,036,854,775,808 (-2^63)
  • 最大值:9,223,372,036, 854,775,807 (2^63-1)
    long lMaxValue = Long.MAX_VALUE;
    long lMinValue = Long.MIN_VALUE;
    System.out.println("最大值:" + lMaxValue);
    System.out.println("最小值:" + lMinValue);
    

浮点型

float

  • float32位数据类型,占用4字节
  • 单精度赋值时数字后必须加F或者f
  • 最小值:3.4e-45
  • 最大值:1.4e38
  • 不能表示精确的值
    float fMaxValue = Float.MAX_VALUE;
    float fMinValue = Float.MIN_VALUE;
    System.out.println("最大值:" + fMaxValue);
    System.out.println("最小值:" + fMinValue);
    

double

  • double64位数据类型,占用8字节
  • 单精度赋值时数字后最好加上D或者d
  • 最小值:4.9e-324
  • 最大值:1.8e308
  • 不能表示精确的值
    double dMaxValue = Double.MAX_VALUE;
    double dMinValue = Double.MIN_VALUE;
    System.out.println("最大值:" + dMaxValue);
    System.out.println("最小值:" + dMinValue);
    

字符型

char

  • char类型是一个单一的 16 位 Unicode 字符,占用两个字符
  • 最小值: \u0000(即为0)
  • 最大值:\uffff(即为65,535
  • 可以存储任何字符
    char cMaxValue = Character.MAX_VALUE;
    char cMinValue = Character.MAX_VALUE;
    System.out.println(cMaxValue);
    System.out.println(cMinValue);
    

布尔型

boolean

  • boolean布尔类型,占用1个字节
  • 只有两个值:true,false
    boolean bt = Boolean.TRUE;
    boolean bf = Boolean.FALSE;
    System.out.println(bt);
    System.out.println(bf);
    

类型转换

boolean类型比较特殊不可以转换成其他类型

类型转换大小,指的是取值范围的大小

自动类型转换

由低级别转到高级别,是属于自动类型转换。
(byte,short,char) < int < long < float < double

byte b = 10; 
short s = b;
int i = s;
long l = i;
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);

强制类型转换

由高级别转为低级别,则需要强制转换。

类型转换是根据类型的取值大小来区分自动或强制的。所以强制类型转换时一定要注意取值范围,如果超出取值范围则会溢出。

==溢出时候不会抛出异常,也不会有任何提示==

强制类型转换时要注意精度丢失问题。

//超出取值范围
int shortMax = 32769;
short s = (short) shortMax;
System.out.println(s);
//精度丢失
double d = 99.999;
float f = (float) d;
int i = (int) d;
long l = (long) d;
System.out.println(d);
System.out.println(f);
System.out.println(i);
System.out.println(l);

类型提升

多种数据类型的表达式中,类型会向取值范围大的数据类型提升

long a = 100000000;
int b = 1999;
long c = a * b;
int c1 = (int) (a * b);
System.out.println(c);
System.out.println(c1);

装箱拆箱

包装类

将基本类型包装起来,使基本类型拥有对象的性质。

基本类型 包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

自动拆箱与自动装箱

Integer integer = 10; //自动装箱
// Integer integer = new Integer(10); jdk1.5之前写法
int in = integer; //自动拆箱
System.out.println(integer);
System.out.println(in)
//查看class文件源码后
Integer integer=Integer.valueOf(10);
int i=integer.intValue();

自动装箱是通过valueOf()方法实现,自动拆箱则是通过intValue()实现。
同理可查看其他几种基本类型。

你可能感兴趣的:(Java-基本数据类型)