1、java中字符和字符串用equals()方法进行判断是否相等。""比较的是地址
public class EnumTest {
public static void main(String[]args){
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用对象是否为同一个?
System.out.println(st);
//是原始数据吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(su); //true
for(Size value:Size.values()){
System.out.println(value);
}
}
enum Size{SMALL,MEDIUM,LARGE}
}
输出结果:
false
false
true
SMALL
MEDIUM
LARGE
枚举类的值是特定的对象,若相同则引用同一个对象。所以比较枚举类时可以用也能用equals()方法。
2、
原码:最高位时符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,符号位不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
import java.util.Scanner;
public class BitwiseOperations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个正数或负数: ");
int number = scanner.nextInt();
System.out.println("你输入的数是: " + number);
System.out.println("其二进制表示: " + Integer.toBinaryString(number));
// 按位与操作
int andResult = number & 111; // 与1取与操作
System.out.println("按位与操作 (与100): " + andResult + " (" + Integer.toBinaryString(andResult) + ")");
// 按位或操作
int orResult = number | 1; // 与1取或操作
System.out.println("按位或操作 (或1): " + orResult + " (" + Integer.toBinaryString(orResult) + ")");
// 按位异或操作
int xorResult = number ^ 1; // 与1取异或操作
System.out.println("按位异或操作 (异或1): " + xorResult + " (" + Integer.toBinaryString(xorResult) + ")");
// 按位取反操作
int notResult = ~number; // 取反
System.out.println("按位取反操作: " + notResult + " (" + Integer.toBinaryString(notResult & 0xFFFFFFFF) + ")");
// 左移操作
int leftShiftResult = number << 1; // 左移1位
System.out.println("左移操作 (左移1位): " + leftShiftResult + " (" + Integer.toBinaryString(leftShiftResult) + ")");
// 右移操作
int rightShiftResult = number >> 1; // 右移1位
System.out.println("右移操作 (算术右移1位): " + rightShiftResult + " (" + Integer.toBinaryString(rightShiftResult) + ")");
// 逻辑右移操作 (与无符号右移)
int unsignedRightShiftResult = number >>> 1; // 逻辑右移1位
System.out.println("逻辑右移操作 (无符号右移1位): " + unsignedRightShiftResult + " (" + Integer.toBinaryString(unsignedRightShiftResult & 0xFFFFFFFF) + ")");
scanner.close();
}
}
输出结果:
请输入一个正数或负数: 100
你输入的数是: 100
其二进制表示: 1100100
按位与操作 (与100): 100 (1100100)
按位或操作 (或1): 101 (1100101)
按位异或操作 (异或1): 101 (1100101)
按位取反操作: -101 (11111111111111111111111110011011)
左移操作 (左移1位): 200 (11001000)
右移操作 (算术右移1位): 50 (110010)
逻辑右移操作 (无符号右移1位): 50 (110010)
Process finished with exit code 0
请输入一个正数或负数: -100
你输入的数是: -100
其二进制表示: 11111111111111111111111110011100
按位与操作 (与100): 12 (1100)
按位或操作 (或1): -99 (11111111111111111111111110011101)
按位异或操作 (异或1): -99 (11111111111111111111111110011101)
按位取反操作: 99 (1100011)
左移操作 (左移1位): -200 (11111111111111111111111100111000)
右移操作 (算术右移1位): -50 (11111111111111111111111111001110)
逻辑右移操作 (无符号右移1位): 2147483598 (1111111111111111111111111001110)
Process finished with exit code 0
通过观察按位与操作结果,可以得出结论,java中的数据采用补码表示的。
3、在java中数据类型较小的转化为数据类型较大的无精度损失,反过来会造成精度损失。
4、浮点数在计算机中以二进制的方式存储,所以无法完全精确的表示十进制分数。
public class Test {
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.015100=" + (4.015 * 100));
System.out.println("123.3/100" + (123.3 / 100));
}
}
运行结果:
0.05+0.01=0.060000000000000005
1.0-0.42=0.5800000000000001
4.015100=401.49999999999994
123.3/1001.2329999999999999
5、在java中字符串用“+”连接。如果是字符串+数字,则根据加号前面的判断最终的结果。如果加号前面是字符串,则加号后面会被默认为字符串来进行计算。
public class Test {
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=100200
300=X+Y
6、出30道计算题:
import java.util.Scanner;
public class Test {
public static void main(String[]args) {
Math.random();
Scanner s=new Scanner(System.in);
int n=0;
for(int i=0;i<30;i++){
String c=s.nextLine();
switch(c){
case "+":
System.out.println((int)(Math.random()100)+"+"+((int)(Math.random()100)));
break;
case "-":
System.out.println((int)(Math.random()100)+"-"+((int)(Math.random()100)));
break;
case "":
System.out.println((int)(Math.random()100)+""+((int)(Math.random()100)));
break;
case "/":
System.out.println((int)(Math.random()100)+"/"+((int)(Math.random()100)));
break;
default:
System.out.println("重新输入");
}
}