首页 > 其他分享 >动手动脑

动手动脑

时间:2024-09-28 11:47:07浏览次数:6  
标签:int 动脑 补码 System 动手 println 原码 out

一以下代码的输出结果是什么?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

相关文章

  • 动手动脑
    一.仔细阅读示例:EnumTest.java,运行它,分析运行结果?第一个判断s和t是否引用了同一对象,由于s和t不是同一对象,所以是flase第二个判断s是否为基本数据类型,由于s是枚举类型,所以是flase第三个将字符串“SMALL”转化成为枚举类型,与s一样,所以是true最后遍历输出二.你能得到什么结论?你......
  • java动手动脑-2024.9.28
    枚举类publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;System.out.println(s==t);System.out.println(s.getClass().isPrimitive());Sizeu=Size.valueOf(&quo......
  • 动手动脑
    对EnumTest.java的测试点击查看代码publicclassEnumTest{ publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用一个对象? System.out.println(s==t);// //是原始数据类型吗 System.out.println(s.getClass().isPrim......
  • 动手动脑
    EnumText无法运行...TextDouble0.05+0.01=0.061.0-0.42=0.584.015*100=401.5123.3/100=1.233X+Y=100200300=X+Y第一个加号具有拼接字符串的作用,第二个加号是加法的意思生成四则运算importjava.util.Random;importjava.util.Scanner;publicclass......
  • 9.28博客(动手动脑)
    importjava.util.Random;publicclassRandomStr{publicstaticvoidmain(String[]args){//调用generateRandomString方法生成验证码StringverificationCode=generateRandomString();//输出生成的验证码System.out.println("生成的验证码为:"+verificationCode);......
  • 9.26博客(动手动脑)
    阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。原码:在计算机中,用二进制表示数时,最高位是符号位(0表示正数,1表示负数),其余位表示数的......
  • 动手动脑动手实验
    (1)枚举类型是引用类型!枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。可以使用“”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“”和equals()方法执行的结果是等价的。(2)(3)(4)在Java中,变量的“同名变量的屏......
  • 动手动脑01
    动手动脑01重新编写java测试00PlaninformationpublicclassPlanInformation{//变量id为整型,表示日报流水号,依次加一。//变量planid为字符串类型String,表示产品生产批次号(例如:2312-110,有8位字符组成,前四位表示年月,后三位表示序号)。//变量planname为字符串类......
  • java动手动脑-2024/9/27
    publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;//s和t引用同一个对象?System.out.println(s==t);////是原始数据类型吗?System.out.println(s.getClass().i......
  • 动手动脑
    根据运行结果,我们可以得出以下结论:System.out.println(s==t);//false结论:在枚举类型中,即使它们属于同一个枚举类,不同的枚举常量也是不同的对象。因此,比较操作符==在这里返回false,说明s和t引用的是不同的枚举常量。System.out.println(s.getClass().isPrimitive())......