JAVA动手动脑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA动手动脑相关的知识,希望对你有一定的参考价值。

1.EnumTest.java程序:

package damo;

 

public class EnumTest {

   enum Size{SMALL,MEDIUM,LARGE};

   public static void main(String[] args) {

      Size s=Size.SMALL;

      Size t=Size.LARGE;

      //s和t引用同一个对象?false

      System.out.println(s==t);  //

      //是原始数据类型吗?false

      System.out.println(s.getClass().isPrimitive());//判断是什么数据类型

      //从字符串中转换

      Size u=Size.valueOf("SMALL");//将small的值赋给u

      System.out.println(s==u);  //true

      //列出它的所有值

      for(Size value:Size.values()){//遍历

         System.out.println(value);

      }

   }

   //enum Size{SMALL,MEDIUM,LARGE};

}

运行结果

 

首先判断s==t?不等所以输出false;第二个判断是否是原始数据类型,不是原始的数据类型,false;第三个s表示SMALL将SMALL赋给了u,u=s,ture;第四、五、六个是遍历,Size{SMALL,MEDIUM,LARGE}中有三个数据,所以遍历是三个数据。

结论:

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象

2.数值的二进制

数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。

原码就是这个数本身的二进制形式。正数的反码和补码都是和原码相同,负数的反码是将其原码除符号位之外的各位求反,负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

3.TestDouble.java程序

源程序:

package damo;

 

public class TestDouble {

    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.015 * 100 = " + (4.015 * 100));

           System.out.println("123.3 / 100 = " + (123.3 / 100));

       }

}

实验截图:

 

分析:使用double类型的数值进行计算,  其结果是不精确的

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

java中double类型数据是用64位来表示的,精度肯定是有限的,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。在需要更高精度的运算过程中,有两种方法可供参考:1. 自己用超过64位来表示一个double类型,比如用100个byte[]来表示一个double(800bytes);这样的话,double的加减乘除就需要自己实现一遍了。很多IT公司有这样的面试题。2. 用java自带的BigDecimal类可以方便做高精度的运算。(c++中是没有BigDecimal这种方面的类的,所以只能用第一种方法)

4.

int X=100;

      int Y=200;

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

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

程序结果

 

原因:+X+Y表示连续输出x和y的值,第二个表示两数相加

以上是关于JAVA动手动脑的主要内容,如果未能解决你的问题,请参考以下文章

java 动手动脑7

java动手动脑08

Java的动手动脑

java09动手动脑

Java03-动手动脑

Java11月9日的动手动脑