动手动脑的问题以及课后实验性的问题

      

结果:

实验结论:枚举类型是引用类型!
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

2.课后联系

阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原 码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。

原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码:反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码:补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

3.动手动脑

为什么double类型的数值进行运算得不到“数学上精确”的结果?

这个涉及到二进制与十进制的转换问题。 N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。 double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。 举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。 简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

4.动手动脑

以下代码的输出结果是什么?

为什么会有这样的输出结果?

第一句输出中“+”连接字面量,计算结果是将X和Y将两数据连接。

语句二输出中“+”是运算符,计算结果是对X和Y求和。

时间: 2024-11-05 04:26:40

动手动脑的问题以及课后实验性的问题的相关文章

将课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档

1.仔细阅读示例:EnumTest.java,运行它,分析运行结果? 2.请运行以下代码(TestDouble.java) 3.解决方法——使用BigDecimal类 4.以下代码的输出结果是什么? int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y");

动手动脑的问题以及课后实验性的问题2

请看以下代码,你发现了有什么特殊之处吗? 1 // MethodOverload.java 2 // Using overloaded methods 3 4 public class DDD { 5 6 public static void main(String[] args) { 7 System.out.println("The square of integer 7 is " + square(7)); 8 System.out.println("\nThe squ

05-String动手动脑问题及课后实验性问题总结

一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一份以节约内存,所以s0,s1,s2实际上引用的同一个对象. (2)编译器在编译s2一句时,会去掉"+"号,直接把两个字符串连接起来得一个字符串("Hello").这种优化工作由Java编译器自动完成. (3)当直接使用new关键字创建字符串对象时,虽然值一致(都是&qu

JAVA 数组作业——动手动脑以及课后实验性问题

JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // Passing arrays and individual array elements to methods //引用传递和按值传递 public class PassArray { public static void main(String[] args) { int a[] = { 1,

动手动脑问题及课后实验性问题总结

动手动脑一:仔细阅读示例:Enum.Test.Java,运行它,分析结果?得到什么结论?是否掌握枚举类型的用法? 运行结果如图:s和t是不同的内容,引用不同的对象:枚举类型是引用数据类型:可以字符转换:对定义变量名进行逐个列出. Enum 一般用来表示一组相同类型的常量.如性别.日期.月份.颜色等.对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals . 用法: 枚举的声明,其形式为:访问修饰符enum 枚举名: 基础类型{ 枚举成员(标识符) 

JAVA语法基础作业——动手动脑以及课后实验性问题 (七)

一.动手动脑 1)源代码 public class ParentChildTest { public static void main(String[] args) { Parent parent=new Parent(); parent.printValue(); Child child=new Child(); child.printValue(); parent=child; parent.printValue(); parent.myValue++; parent.printValue(

07-继承与接口动手动脑及课后实验性问题总结

一.运行TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! class Grandparent { /*public Grandparent() { System.out.println("GrandParent Created"); }*/ public Grandparent(String string) { System.

03-方法ppt动手动脑问题及课后实验性问题总结

一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法写在一个类中调用就行.主函数一般也只是调用不做数据处理. 2.static方法是在编译的时候确定的,在类装入内存的时候也同时装入内存了.而非static方法是在类的实例化的时候装入内存的,其必须依赖于类的实例. 实例在装入堆栈的时候是会附加上指向method area的指针,所以可以在非静态方法中调

异常处理---动手动脑及课后作业

动手动脑1:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 源码: import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception