enum 类型不是基本类型而是一个类,可以用==代替equals方法。特征:不能有public的构造函数、所有枚举值都是public static final的。其自身提供了valueof的方法与toString方法是相对应的。其返回值是相对应字符串的枚举值。另外在重写toString方法时应该对应的修改valueof方法。他还有values方法。用于遍历所有的枚举值,用法如下:
for(enumType e :enumType.values() ){
System.out.println(value);
}
原码:最高位标识符号位(“1”表示负号,“0”表示整数),其他未存放该数的二进制的绝对值。
反码:正数的反码还是原码,负数的反码是不变符号位,其它位按位取反。主要是用来解决包含负数的运算的错误。
补码:正数的补码还是原码,复数的补码等于反码+1
Java中的数使用补码
Java“同名变量的屏蔽原则”:
输出是12,使用的最后一次出现的声明。
Java中各数据类型所占的位数:
boolean: 1位 true/false
char: 16位 u0000~uFFFF
byte: 8位 -128~127
short: 16位 -32768~32767
int: 32位 -2147483648~2147483647
long: 64位 -9223372036854774808~9223372036854774807
float: 32位 3.402823e+38 ~ 1.401298e-45
double: 64位 1.797693e+308~ 4.9000000e-324
TestDouble.java运行实例:
输出:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
实际的结果和正确的结果之间有偏差。
System.out.println()输出的问题,代码示例:
package test;
public class AboutSout {
public static void main(String[] args) {
int X = 100;
int Y = 200;
System.out.println("X+Y=" + X + Y);
System.out.println(X + Y + "=X-Y");
}
}
实际输出:
当字符串在前时会将后面的加号认为是字符串的连接而不是数值的运算,如果数值运算在前则会先进行数值运算然后将结果作为字符串和后面的字符串连接,最后输出。