JavaSE之基本数据类型介绍

JavaSE之基本数据类型大小及其类型转换

    • 八种基本数据类型大小
    • 类型转换规则
        • 发生在哪?
        • 基本转换规则
        • 具体转换规则
        • 另外
    • 基本数据类型的初始值

八种基本数据类型大小

类型 占用字节数
boolean 1
byte 1
char 2
short 2
int 4
float 4
long 8
double 8

类型转换规则

发生在哪?
 赋值、方法调用、算术运算以及在静态分派(重载)的匹配优先级中,可能还有一些待以后补全...
基本转换规则
**从低位类型到高位类型自动转换,从高位类型到低位类型需要强制类型转换**
也可以这样理解(个人理解,大佬勿喷): 用少的钱去换别人的不止这个价格的物品自己是乐意的(就不用别人干啥,这个时候你是没有损失的。即隐式转换),而用很多钱只能换到别人不值这个价格的的物品自己是不乐意的,这个时候如果别人掏出武器(别人强制去让你换,这个时候你是有损失的。即显示转换),你就只能乖乖的去换了。
具体转换规则

boolean 和其他基本数据类型之间不能相互转换
byte(1B) 可隐式转换为short(2B)、int(4B)、long(8B)、float(4B)、double(8B)
char(2B) 可隐式转换为int(4B)、long(8B)、float(4B)、double(8B)
short(2B) 可隐式转换为int(4B)、long(8B)、float(4B)、double(8B)
int(4B) 可隐式转换为long(8B)、float(4B)、double(8B)
float(4B) 可隐式转换为double(8B)
long(8B) 可隐式转换为float(4B)和double(8B);
double(8B) 只能强制转换了,不可隐式转换

这里特殊的点:
boolean不参与类型转换(包括强制转换),因为八种基本数据类型分为两种:boolean和数值(其他七种),只有数值类型之间才能转换。
一般的(不包括整数类型到浮点类型如int可转为float)相同位数的不能隐式转换
一般的(不包括整数类型到浮点类型如long可转为float)低位数不能转为高位数
还有一个byte不能隐式转换为char(目前不太清楚具体原因)
而对于整数类型转换为浮点类型的特殊,暂时的理解是浮点类型float比int,long可表示的范围大得多。

另外

还有一个比较小的点可能经常用到,字符串转数值类型,和数值类型转字符串:

  1. 字符串转数值类型,很简单,比如转int,则Integer.parserInt(""),转其他的同理,还有一个是Integer.valueOf()可以是将数字转化其包装类型或字符串转为Integer。
  2. 数值类型转字符串,最简单的就是这样:
String s = 1 + "";

麻烦一点的还有两种方式:

// 对应的Integer.valueof(number)是将数字转化其包装类型或字符串转为Integer
String.valueof(number);

Integer.toString(number);

基本数据类型的初始值

基本类型 初始值
boolean false
char \u0000(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

这里说一点,整形的默认类型为int,浮点数的默认类型为double。还有这个初始值是什么时候被赋予呢?有且仅有这些基本数据类型是某个类的成员变量时,在类初始化时就会被赋予。

你可能感兴趣的:(JavaSE,java,javase)