9.13完成ppt动手动脑问题

枚举类型问题:

private enum Size{

SMALL,MEDIUM,LARGE

}

public static void main(String[] args) {

Size s = Size.SMALL;

Size t = Size.valueOf("SMALL");

System.out.println(t.valueOf("SMALL"));

for(Size value:Size.values()) {

System.out.println(value);

}

}

运行结果:

 

枚举类中valueOf()方法为将普通字符串转换为枚举实例,

 

private enum MyEnum{

ONE,TWO,THREE

}

public static void main(String[] args) {

 

for(MyEnum value:MyEnum.values()) {

System.out.println(value);

}

 运行结果:

枚举类中values()方法为以数组形式返回枚举类型的所有成员。

 

结论:

枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

 

 

数值的二进制表示:

原码:十进制数据的二进制表现形式就是原码,原码最左边的一个数字就是符号位,0为正,1为负。

反码:正数的反码是其本身(等于原码),负数的反码是符号位保持不变,其余位取反。

补码:正数的补码是其本身,负数的补码等于其反码 +1。

 

隐式类型转换:

public class Test {
public static void main(String[] args) {
// 小的数据类型往大的数据类型进行转换底层就是通过左补零完成的
byte a = 10; // 0000 1010
int b = a; // 0000 0000 0000 0000 0000 0000 0000 1010
System.out.println(b);
}
}

强制类型转换:

public class Test {
public static void main(String[] args) {
int a = 300; // 0000 0000 0000 0000 0000 0001 0010 1100
byte b = (byte) a; // 0010 1100
System.out.println(b); // 打印出44
/*
int a = 200; // 0000 0000 0000 0000 0000 0000 1100 1000
byte b = (byte)a; // 1100 1000
System.out.println(b); // 打印出-56
*/
}
}

 

 

变量的作用域:

public class demo {

private static int value=1;

public static void main(String[] args) {

int value = 2;

System.out.println(value);

}

}

 运行结果:

 

经过多次实验得到的结论:

java中变量遵循就近原则,首先在自己的类中寻找变量,再去类外以及其他地方寻找,输出靠自己近的变量值。

 

 

double类型的数值进行计算,其结果是不精确的:

public class demo {

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

}

}

 运行结果:

 结论:

使用double类型的数值进行计算,其结果是不精确的。

使用double类型进行计算可能会导致结果不精确。这是因为double类型是一种浮点数类型,它在内存中以二进制形式表示小数。由于计算机在二进制中无法精确表示所有的小数,所以在进行运算时可能会出现舍入误差。

为了解决这个问题,可以考虑使用其他数据类型,例如BigDecimal。BigDecimal可以精确表示任意长度和精度的十进制数,因此在需要精确计算的场景下更为适用。另外,还可以注意避免在计算中频繁进行浮点数的加减乘除操作,尽量使用整数进行计算,再将结果转换为浮点数。

总之,在使用double类型进行计算时,要时刻注意结果可能存在误差,并根据实际需求选择合适的数据类型来进行计算。

 

 

 

子串联接操作:

public class demo {

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

}

}

运行结果:

 

原因:

第一个输出语句中首先输出“X+Y=”的字符串,后面的+则相当于把X和Y依次添加到前面字符串的结尾,所以最后输出的是X+Y=100200

第二个输出语句中从左往右依次进行,首先是X+Y,为100+200结果为300,Y后的+相当于把300添加在后门“=X+Y”字符串的前方,所以最后的输出结果为300=X+Y。

 

posted @ 2023-09-13 20:04  不如喝点  阅读(7)  评论(0编辑  收藏  举报