Java课后实验性问题
枚举类型
枚举有三种类型 SAMLL ,MEDIUM,LARGE
运行
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};
可知,当枚举类型相同时,对象相同,被转换的字符是相同的。
运行时读取用户输入
String属于类,不属于数据类型
public class Test{
private static int value=1;
public static void main(String[] args) {
int value=4;
System.out.println(value);
}
}
进行输出输出结果为4,主函数中去决定性作用
对于正数 反码补码原码是一样的
对于负数:反码:原码中除去符号位,其他的数值位按位取反,即0变1,1变0 补码:反码+1
运行时用户的输入输出使用scanner类
import java.util.*;
public class InputTest
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
// get first input
System.out.print("What is your name? ");
String name = in.nextLine();
// get second input
System.out.print("How old are you? ");
int age = in.nextInt();
/* int i;
String value="100";
i=Integer.parseInt(value);
i=200;
String s=String.valueOf(i);*/
// display output on console
System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
}
}
Java中的类型转换
由高位向地位转换时精度会有损失,而由地位向高位转换时没有精度损失 ,由整型向浮点型转换时会有精度损失
除此种方法还可以通过包装类进行转换,但多数情况推荐使用强制转换
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));
}
}
对于double类型的数据运算无法确定精确值,加减的精度损失较小,乘除的损失大
浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。 因为计算机内部使用的是二进制数,所以基数自然就是2。 因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。 也就是说,64位(双精度浮点数)和32位(单精度浮点数)的数据,会被分为三部分来使用。
处理精度损失,使用BigDecimal类
import java.math.BigDecimal;
public class TestBigDecimal
{
public static void main(String[] args)
{
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);
System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));
System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
}
}