码迷,mamicode.com
首页 > 其他好文 > 详细

动手动脑及实验性练习总结

时间:2015-10-06 14:07:01      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1.EnumTest.java的分析

   (1)源代码

 1 public class EnumTest {
 2 
 3     public static void main(String[] args) {
 4         Size s=Size.SMALL;
 5         Size t=Size.LARGE;
 6         //s和t引用同一个对象?
 7         System.out.println(s==t);  //
 8         //是原始数据类型吗?
 9         System.out.println(s.getClass().isPrimitive());
10         //从字符串中转换
11         Size u=Size.valueOf("SMALL");
12         System.out.println(s==u);  //true
13         //列出它的所有值
14         for(Size value:Size.values()){
15             System.out.println(value);
16         }
17     }
18 
19 }
20  enum Size{SMALL,MEDIUM,LARGE}

(2)结果截图

技术分享

(3)s和t没有引用同一个对象,变量只有一个值,那么就要选取枚举类型中的一个值进行赋值。上例是将字符串转化为枚举类型。

(4)枚举不属于原始数据类型,是引用类型,它的具体值引用的是特定的对象。int(整数),float(浮点)类型为原始数据类型。

2.反码、补码跟原的基本概念

  (1)原码: 这个数本身的二进制形式

   (2)反码

      正数的反码就是它的原码,而负数的反码是将它的原码的除符号位之外的各位求反。

 (3)补码

    正数的补码还是它的原码,但负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

  PS:JAVA采用的是补码。

3.TestDouble.java

(1)源代码

1 public class TestDouble {
2 
3     public static void main(String args[]) {
4         System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
5         System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
6         System.out.println("4.015 * 100 = " + (4.015 * 100));
7         System.out.println("123.3 / 100 = " + (123.3 / 100));
8     }
9 }

(2)运行结果截图

   技术分享

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

    计算机只能识别二进制,一切的数据最后都要转换为二进制。例如源程序中的2.4是十进制的,要转换为二进制,但2.4的二进制不是精确的2.4,只是接近4.4,实为2.3999999999999999,浮点数由两部分组成:指数和 尾数,在进行浮点数的二进制与十进制的转换时,浮点数参与了计算,那么转换的过程就会变得不可预测,并且变得不可逆。

(4)在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)

    4.

      int X=100;

      int Y=200;

      System.out.println("X+Y="+X+Y);

      System.out.println(X+Y+"=X+Y");

   (1)代码的输出结果是什么?

     技术分享

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

       语句1为字符串的连接,其中的“+”为连接运算,输出字符串“X+Y=”与X(100)与Y(200);

       语句2为数字相加,其中的第一个“+”为相加运算,第二个“+”为连接运算。

5. Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

   

 1 class c
 2 {
 3   public int name = 12;
 4 }
 5 class d extends c
 6 {
 7 int name =13;
 8 void d2()
 9 {
10 System.out.println(super.name);
11 }
12 }
13 public class Main
14 {
15   public static void main(String[]args)
16   {
17   d d1 = new d();
18   System.out.println(d1.name);
19 d1.d2();
20   }
21 }

技术分享

6.看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

(1)Java里面包含8个基本数据类型,boolean、byte、char、short、int、float、douboe、long。

     byte类型是JAVA中最小的数据类型,占8位,表示数值范围为-128到127。

     short类型占2个字节,取值范围为-32678到32677。

     char类型占2个字节,表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0 到 65535。

     int型占4个字节,取值范围为-2147483648 到2147483647 。

     float 单精度浮点型型占4个字节,取值范围从-3.4E38 到3.4E38。

     long 长整型在内存中占8个字节,取值范围从 -9223372036854775808 到9223372036854775807。

     double 型占8个字节,取值范围从-1.7E308 到1.7E308。

      boolean型变量在内存中只占1/8个字节

(2)Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。 JAVA中所有的数字变量都是有符号(正负)的。

 

 

     

技术分享

动手动脑及实验性练习总结

标签:

原文地址:http://www.cnblogs.com/LL66/p/4856960.html

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!