您的位置:首页 > 编程语言 > Java开发

【java】java浮点型、整形字面量

2017-04-18 16:38 316 查看

1,一个整形(浮点型)默认是int(double)类型

一个整形默认是int类型,例:

int it=5;//int的范围-2147483648~2147483647


这里的5是一个直接量,会被当做int类型处理。虽然一个整形会被当做int类型处理,但是下面这样写也不会出错:

byte b=127;//byte的范围-128~127
short s=32767;//short的范围-32768~32767
char c=65535;//char的范围0~65535


只要赋的值不超过byte,short,char的范围就不出错。

如果需要把直接把一个整形常量值赋值给long类型,那么就需要在常量值的后面加上L或是l,因为小写l容易和数字1弄混,因此推荐使用L。比如:

long lg=2147483648L;


接下就是浮点数,java中的浮点型只有两种float和double,float是单精度,double是双精度。一个小数字面量默认是double类型,如果需要指定一个float类型的字面量,则需要在后面加上F或是f,推荐F。比如:

float f=1.2F;//float的范围-3.40E+38 ~ +3.40E+38


float虽然只占4个字节,但是float表示数的范围显然是int类型的大,详情可以参见【java】float和double。

2,java使用下划线分割数字

如果一个字面量太长,读起来就会比较困难。因此,从Java 7开始,就可以利用下划线来分隔整数字面量当中的数字。例如,下面两行代码的意思相同,但是读起来第二行明显比第一行要轻松得多:

int million = 1000000;
int million = 1_000_000;


把下划线放在哪里都可以。每三个数字就可以用一条下划线,就像上面这样,也可以是任意几个数字用一条下划线。下面再举几个例子:

short next = 12_345;
int twelve = 0B_1100;
long multiplier = 12_34_56_78_90_00L;


3,表达式类型的转化

在看上上面的第一点的时候肯定就要疑问,一个整形默认是int类型,int类型占4个字节,byte占1个字节,char占两个字节,short占2个字节,但是只要把一个不超过byte、short、char的整形值赋给他们就不会出错,比如:

byte b=127;


这里的b是byte是类型,127被看做int类型,那么int类型直接赋值给byte类型但却不出错,这是为什么?这个答案,笔者也不清楚,笔者猜测是java在编译的时候对这样的常量赋值表达式进行了判断,然后再决定是否在后台进行强制类型转化。但是不是所有int类型赋值给byte类型,java后台都会自动判断,比如:

byte b1=5;//5是int类型,但可以赋值给byte
byte b2=b1-3;//b1-3的结果是2,但是报错“cannot convert from int to byte”


上面的代码中,第二行“b1-3”是一个int类型,将一个int类型赋值给float类型会出错,上面第一行也是将一个int类型赋值给byte类型但是不会出错。所以笔者猜测java在编译的时候会后台对常量的赋值自动判断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: