动手动脑

与世无争的帅哥 提交于 2020-03-01 07:25:06

动手动脑1

public class EnumTest {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Size s=Size.SMALL;

Size t=Size.LARGE;

//st引用同一个对象?

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);

}

}

 

}

enum Size{SMALL,MEDIUM,LARGE};

运行结果分别为

false

false

true

SMALL

MEDIUM

LARGE

第一个输出是错的,s和t不是引用同一个对象

第二个输出是错的,Size类型不是原始数据类型,原始数据类型有byte(字节)、short(短整型)、int(整数型)、long(长整型)、float(单精度浮点数类型)、double(双精度浮点数类型)、char(字符类型)、boolean(布尔类型)。

第三个输出是对的,从字符串中转换后是一个方法,输出后就对了

第四个输出就是运用了value这个方法进行输出。

结论:枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。原始数据类型有byte(字节)、short(短整型)、int(整数型)、long(长整型)、float(单精度浮点数类型)、double(双精度浮点数类型)、char(字符类型)、boolean(布尔类型)。

 

 

 

 

 

 

动手动脑2

原码, 反码, 补码是计算机存储一个具体数字的编码方式。

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。

反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

Java中运用补码

动手动脑3

输出结果是2,明显第一个value的作用范围是全局,第二个value的作用范围是main方法,而输出的value是在main中输出,所以,在定义变量的时候,一定要注意变量所在的区域。

动手动脑4

 

 

byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);

short 数据类型是 16 位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);

int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);

long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。

double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:double d1 = 123.4。

char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。

结论:由整型向浮点型转换会有精度损失,因为浮点型不能表示精确的值

动手动脑5

 

结论:使用double类型的数值计算结果是不准确的,double是浮点型,

我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

动手动脑6

    

结果证明+X+Y意为分别输出X和Y,如果写成+(X+Y),就不会出现第一种情况   

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!