文章目录
一、Java包含哪些数据类型?请举例说明
Java的数据类型包括:基本数据类型与引用数据类型,
基本数据类型:
- 整形:
byte
short
int
long
- 浮点型
float
double
- 字符型
char
- 布尔型
boolean
基本类型 | 位数 | 字节 | 默认值 |
---|---|---|---|
int | 32 | 4 | 0 |
short | 16 | 2 | 0 |
long | 64 | 8 | 0L |
byte | 8 | 1 | 0 |
char | 16 | 2 | ‘u0000’ |
float | 32 | 4 | 0f |
double | 64 | 8 | 0d |
boolean | 1 | false |
对于 boolean
,官方文档并未明确定义,它依赖于 JVM 厂商的具体实现,逻辑上是理解占用 1 位,但是实际中会考虑计算机高校存储因素。
基本数据类型对应的包装类型
- int - Integer
- short - Short
- long - Long
- float - Float
- double - Double
- boolean - Boolean
- char - Character
- byte - Byte
助记:
基本数据类型对应的包装类型首字符大写,除过int 和 char
int -----> Integer
char ----> Character
包装类类型不赋值为NULL
, 而基本类型有默认值且不是NULL
注意:
- Java 里使用
long
类型的数据一定要在数值后面上加 L,否则将作为整形解析。 char a = 'h'
char : 单引号,String a= "hello"
String :双引号
引用类型包括:
类(class) 接口(interface)和数组。
二、Java基本数据类型转换包含哪两类?请举例说明?
Java基本数据类型转换包含:强制转换和自动转换。
基本数据类型有整形,数值型,浮点类型,这些数据在计算机中的字节数不同(具体见下图),所以计算机在对这些不同类型的数据进行运算操作时,就会发生类型转换。
自动类型转换
自动类型转换(隐式类型转换),由系统自动完成的类型转换。从存储范围小的类型到存储范围大的类型。
示例如下:
public class javaDemo{
public static void main(String args[]){
byte x = 20;
double y = 0.5;
System.out.println(x*y);
}
}
此程序的运行结果:10.0 ;可以看出在运算时,低等级的byte类型自动被转换成了高级的double类型。
强制类型转换。
强制类型转换(显式类型转换),从存储范围大的类型到存储范围小的类型。该类类型转换很可能存在精度的损失。
示例代码如下:
public class javaDemo{
public static void main(String args[]){
long num = 2147483649L;
int temp = (int)num;
System.out.println(temp);//这段程序的运行结果是-2147483647;
}
}
本程序定义了一个超过 int 范围的 long 变量 ,所以在进行强制数据类型转换时就出现了数据溢出问题。
关于隐式类型转换
float与 double
字面量1.1是属于double
类型的,不能直接将1.1赋值给float
变量,因为这个是向下转型。 java
不能隐式执行向下转型,因为这样会降低精度。
若是赋值为float
类型,可以有:
float f=1.1f;
float f= (float) 1.1;
short
short
类型比int
类型精度要低,所以不能隐式的将int
类型向下转型为short
类型。但是使用++
,+=
运算符时,会执行隐式类型转换。
short s5=1;
s5+=1;
s5++;
//相当于将s5+1的结果进行了向下转型
s5=(short)s5+1;
三、为什么需要包装类?
引入包装类的目的如下:
(1) 基本数据类型并不是对象,在一些场合不能直接使用,需要转化为对应的包装类对象才能继续使用。
(2)包装类的一些静态方法可以实现不同数据类型的转化。
示例代码如下:
public class JavaDemo{
public static void main(String args[]){
in