【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在编译的时候会后台对常量的赋值自动判断。
相关文章推荐
- 用java实现编译器之有限状态机驱动的整形,浮点型数值识别器
- 疯狂Java讲义笔记 整形与浮点型
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- Java里的浮点型数据。(摘自精通Jbuilder 2005)
- java 处理浮点型数据的显示
- java长整形数据使用问题
- 在java中如何将字符常量转化为整形
- C语言中的整形,字符型,浮点型
- c#中的浮点型转整形的舍取-四舍五入和银行家舍入
- 求java编程 字节byte怎么转换成整形int?
- Javaの二进制之整形输出二进制
- Java Puzzlers笔记--Puzzle 2: Time for a change 关于浮点型的问题
- 关于java整形数组的两个简单操作
- java 整形数组、字节流的互转
- 清华大学计算中心培训部-技术分享:java入门教程:浮点型(实型)数据
- Java两个整形数组的对比,获取出哪些不同的
- Java从字符串中提取整数、浮点型数值
- 注意java int整形变量的取值范围
- c#中的浮点型转整形的舍取 四舍五入和银行家舍入实现代码
- java实现大整形加法、减法(还没有乘法和除法,目测除法会很难,乘法还凑合)