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

posted @ 2023-09-14 23:06  欧吼吼  阅读(8)  评论(0编辑  收藏  举报