一以下代码的输出结果是什么?int X=100;int Y=200;System.out.println("X+Y="+X+Y);System.out.println(X+Y+"=X+Y");为什么会有这样的输出结果?X+Y=100200300=X+Y原因:算术加法运算的优先级高于字符串拼接,字符串与整型变量相加时,整型变量被自动转换成字符串形式,然后进行字符串拼接二动脑动手:Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。package test;public class Test {private static int Albert = 1;public static void main(String[] args) {int Albert = 2;System.out.println(Albert);}}结果为2三四则运算import java.util.Random;import java.util.Scanner;public class ArithmeticQuizGenerator { // 主方法 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); // 用户可以选择生成题目的数量 System.out.print("请输入你想生成的题目数量: "); int numberOfQuestions = scanner.nextInt(); for (int i = 0; i < numberOfQuestions; i++) { // 生成题目 String question = generateQuestion(random); // 输出题目 System.out.println(question); } scanner.close(); } // 生成题目的方法 private static String generateQuestion(Random random) { int num1 = random.nextInt(100); // 生成0到99之间的随机数 int num2 = random.nextInt(100); // 生成0到99之间的随机数 char operator = getRandomOperator(random); // 获取随机运算符 return num1 + " " + operator + " " + num2 + " = ?"; } // 获取随机运算符的方法 private static char getRandomOperator(Random random) { char[] operators = {'+', '-', '', '/'}; return operators[random.nextInt(operators.length)]; }}四阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。原码:在计算机中,用二进制表示数时,最高位是符号位(0表示正数,1表示负数),其余位表示数的绝对值。例如,5的原码是00000101,-5的原码是10000101。反码:对于正数,反码与原码相同;对于负数,反码是将原码除符号位以外的所有位取反。例如,5的反码是00000101,-5的反码是11111010。补码:对于正数,补码与原码相同;对于负数,补码是反码加1。例如,5的补码是00000101,-5的补码是11111011。public class BitwiseOperations { public static void main(String[] args) { int positiveNumber = 5; // 正数 int negativeNumber = -5; // 负数 // 打印原码、反码、补码 System.out.println("正数的原码、反码、补码(以二进制表示):"); printBinary(positiveNumber, "原码"); printBinary(~positiveNumber & 0xFFFFFFFF, "反码(按位取反后与0xFFFFFFFF相与)"); printBinary(positiveNumber, "补码(正数补码与原码相同)") System.out.println("\n负数的原码、反码、补码(以二进制表示):"); printBinary(negativeNumber, "原码(直接输出为补码形式,但理解为原码输入)"); printBinary(~negativeNumber & 0xFFFFFFFF, "反码(按位取反后与0xFFFFFFFF相与)"); printBinary(negativeNumber, "补码"); // 位操作示例 System.out.println("\n位操作示例:"); System.out.println("正数左移一位:" + (positiveNumber << 1)); System.out.println("负数左移一位:" + (negativeNumber << 1)); System.out.println("正数右移一位:" + (positiveNumber >> 1)); System.out.println("负数右移一位:" + (negativeNumber >> 1)); } // 打印整数的二进制表示 private static void printBinary(int number, String description) { String binaryString = Integer.toBinaryString(number); if (number < 0){ binaryString = binaryString.substring(binaryString.length() - 31); // 取32位中的低31位(去掉符号位前的补零) binaryString = "1" + binaryString; // 加上符号位 } System.out.printf("%s: %32s\n", description, binaryString); }}五动手实验:请运行以下代码(TestDouble.java)public class TestDoublepublic 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.015100));System.out. println("123.3/100="+(123.3/100));}你看到了什么样的输出,意外吗?0.05 + 0.01 = 0.0600000000000000051.0 - 0.42 = 0.58000000000000014.015 * 100 = 401.49999999999994123.3 / 100 = 1.2329999999999999意外,浮点数运算的精度问题需要特别注意六import java.util.Random; public class RandomStr { public static void main(String[] args) { // 调用generateRandomString方法生成验证码 String verificationCode = generateRandomString(); // 输出生成的验证码 System.out.println("生成的验证码为:" + verificationCode); } // 生成六位随机验证码字符串的方法 public static String generateRandomString() { StringBuilder sb = new StringBuilder(); // 创建一个Random对象用于生成随机数 Random random = new Random(); // 循环六次,每次生成一个随机字符并追加到StringBuilder中 for (int i = 0; i < 6; i++) { // 生成一个0到9之间的随机整数,并将其转换为字符追加到StringBuilder中 int randomInt = random.nextInt(10); sb.append(randomInt); } return sb.toString(); } }
标签:int,动脑,补码,System,动手,println,原码,out From: https://www.cnblogs.com/bixi/p/18437181