动手动脑_1

以下代码的输出结果是什么?

int X=100; i

nt Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

为什么会有这样的输出结果?

结果:

X+Y=100200
300=X+Y

加号的结合性是从做到右的,所以第一个x当做字符串输出,第二个由于是两个整数相连,执行选择高于字符串,所以先计算加法

 

Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t); //
//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s==u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}

结果:

false 引用的不是同一个对象
false 不是基本类型,只有八个基本类型boolean、char、byte、short、int、long、float、double
true  valueOf和toString函数的用法很像,返回的是Size.SMALL
SMALL
MEDIUM
LARGE

浮点数在计算机中是以二进制数的形式存放的,科学计数法的形式表示的 但是计算机在计算机中无法精准的表示0.1,只能是无限的靠近就出现了精度损失的问题

double 的表示形式

在这里插入图片描述
在这里插入图片描述

  • 同理这个和上面的是一样的。
实际上这个1.M表示的是比如1000.111这个数,小数点移动位为1.000111,在754标准下存储为000111位数,这么做相当于是能够多保存一位,所以float可以保存的尾数是24位(23),double为53位而不是(52)。

 

posted @ 2020-10-01 10:59  While!true  阅读(118)  评论(0编辑  收藏  举报