2019.9.16日动手动脑作业
一、枚举类型
(1)题目
(2)源代码
package class; public class EnumTest { public static void main(String[] args) { 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); } } } enum Size{SMALL,MEDIUM,LARGE};
(3)运行结果
(4)分析
s 和 t 进行 == 运算,输出为false,说明两者引用的不是同一对象。
isPrimitive()函数表明 s 不是原始类型(boolean、char、byte、short、int、long、float、double)。
s 和 u 进行 == 运算,输出为true,说明两者都是指向了同一地址。
(5)结论
枚举类型中的各个参数都为常量,引用的时候都会引向常量的地址而不是某个对象的地址。
二、TestDouble
(1)题目
(2)源代码
package class; public class TestDouble { public static void main(String args[]) { System.out.println("0.05 + 0.01 = " + (0.05 + 0.01)); System.out.println("1.0 - 0.42 = " + (1.0 - 0.42)); System.out.println("4.015 * 100 = " + (4.015 * 100)); System.out.println("123.3 / 100 = " + (123.3 / 100)); }
(3)运行结果
(4)分析
该结果说明了浮点数的运算是不精确的,如果要进行高精度的浮点数运算应该使用BigDecimal类。
三、字符串输出
(1)题目
(2)源代码
package class; public class TestStringAdd { 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"); } }
(3)输出结果
(4)分析
第一次输出是输出了字符串“X+Y=”后接着连续输出了X和Y的值,即将X和Y变为了字符串。
而第二次输出则是X和Y的值的和以及字符串的内容。
(5)结论
在进行运算时,如果字符串在前,那么在字符串后的内容都会变成字符串。
四、同名屏蔽
局部变量和全局变量(静态变量)同名时会优先使用局部变量,而如果想要使用全局变量,则需要加上 类名. 来使用。
代码:
public class Bianliang { static int n=5; public static void main(String[] args) { int n = 6; System.out.println(n); } }
结果:为6
如果在n前加上 Bianliang. 后结果为:5
五、JAVA中的类型转换
可以看到,当前变量与异类变量相加的时候,数据类型所占位数小的会自动变为所占位数多的数据类型。