Java 基础数据类型
Java的两大数据类型:基本数据类型、引用类型。
Java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
整形:byte,short,int,long
字符类型:char
浮点类型:float,double
布尔类型:boolean
示例如下:
Java每个基本类型在java.lang包中都有一个相应的包装类,集合不允许存放基本数据类型数据,存放数字时,要用包装类型。
集合不允许存放基本数据类型数据,存放数字时,要用包装类型
这八种包装类所继承的父类不全都相同。
• Integer ,Byte,Float,Double,Short,Long都属于Number类的子类,Number类本身提 供了一系列的返回以上六种基本数据类型的操作。
• Character属于Object子类。
• Boolean属于Object子类。
装箱及拆箱
• 将基本数据类型变成包装类称为装箱。
• 将包装类的类型变为基本数据类型称为拆箱。
• 在JDK1.5之后,提供了自动装箱和自动拆箱功能。
//自动装箱和自动拆箱
Integer int1 = 30;//装箱
int int2 = int1;//拆箱
基本数据类型包装类如下所示:
数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
long | Long |
char | Charcater |
byte | Byte |
类型转换示例如下:
//类型转换(使用包装类)
String str = "12";
double doubleB = Double.parseDouble(str);
System.out.println(doubleB);
结果如下:
// 包装类提供一些类型转换的方法 、类型的属性
String str = "123";
int a = Integer.parseInt(str);//标准的int
int b = Integer.valueOf(str);//并不是标准的int ,但返回结果一样
System.out.println(a);
System.out.println(b);
String strxs = "124";
byte xcv = Byte.valueOf(strxs);//valueOf parseByte作用是一样的
byte cvds = Byte.parseByte(strxs);
System.out.println(xcv);
System.out.println(cvds);
结果如下:
关于类型的转换:
一、自动类型转换(隐式类型转换)
• 小的类型自动转化为大的类型。
• 整数类型可以自动转化为浮点类型,可能会产生舍入误差。
• 字符可以自动提升为整数。
byte byte1=10;
int Value1=byte1+5;
System.out.println(Value1);
• 整数类型可以自动转化为浮点类型,可能会产生舍入误差。
• Float和Double提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值。
• 整数类型的为准确值,浮点型中为精确值(无限接近于真实值)
float float1=2+10f;
float Value2=float1-11.9f;
System.out.println(Value2);
结果如下:
二、强制类型转换(显式类型转换)
强制类型转换可能导致溢出或损失精度。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换 。
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
byte a1 = (byte) 127;
System.out.println("a1:"+a1);
byte d = (byte) 128; //溢出
System.out.println("d:" +d);
如下图所示:a1 没有溢出,当byte 满127时,d 溢出。
使用强制类型转换,把容量大的类型转换为容量小的类型。
int intValueA=127;
byte byteValueB=(byte) intValueA;
System.out.println(byteValueB);
int ValueA=128; //溢出
byte ValueB=(byte) ValueA;
System.out.println(ValueB);
如图所示ValueB 溢出:
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
int Value5=(int)23.7;
int Value6=(int)-23.7;
System.out.println(Value5);
如图所示: