Java入门第93课——Number的intValue和doubleValue方法

问题

    在Java中,抽象类Number是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short类的超类。该类提供了六个方法,如图-1所示。

byte

byteValue()

  以byte形式返回指定的数值。

abstract double

doubleValue()

  以double形式返回指定的数值。

abstract float

floatValue()

  以float形式返回指定的数值。 

abstract int

intValue()

  以int形式返回指定的数值。 

abstract long

longValue()

  以long形式返回指定的数值

short

shortValue()

  以short形式返回指定的数值

    以上六个方法中,floatValue方法和doubleValue方法在使用时,可能涉及到舍入;其它四个方法可能涉及到舍入或者取整。

    本案例要求测试Number类的intValue方法和doubleValue方法,即,首先,定义Number类型的两个变量:

    Number d=123.45;
    Number n=123;

    要求获取d对象和n对象所属的数据类型。

    然后,将d对象分别转换为int类型变量和double类型变量,并输出转换后的结果。

    最后,将n对象分别转换为int类型变量和double类型变量,并输出转换后的结果。

方案

    首先,新建包和类,并在类中新建测试方法。

    其次,使用代码d.getClass().getName()和代码n.getClass().getName()获取d对象和n对象所属的数据类型。此处只需了解这样可以获取对象所属数据类型即可。

    第三,使用Number类的intValue方法和doubleValue方法,将d对象分别转换为int类型变量和double类型变量,并输出转换后的结果。

    第四,使用Number类的intValue方法和doubleValue方法,将n对象分别转换为int类型变量和double类型变量,并输出转换后的结果。

步骤

    实现此案例需要按照如下步骤进行。

步骤一:构建包、类以及测试方法

    首先在day02包下新建名为TestNumber的类,然后在该类中新建测试方法testIntValueAndDoubleValue,代码如下所示:

    package day02;
    
    import org.junit.Test;
    
    public class TestNumber{
    /**
     *测试Number的intValue方法和doubleValue方法
     */
     @Test
     public void testIntValueAndDoubleValue(){
     
     }
    }

步骤二:获取Number类的对象所属类型

    使用代码d.getClass().getName()和代码n.getClass().getName()获取d对象和n对象所属的数据类型。此处只需了解这样可以获取对象所属数据类型即可。代码如下所示:

    package day02;
    
    import org.junit.Test;
    
    public class TestNumber{
    /**
     *测试Number的intValue方法和doubleValue方法
     */
     @Test
     public void testIntValueAndDoubleValue(){
     
         Number d=123.45;
         Number n=123;
         
         //输出d和n对象所属的类型
         System.out.println(d.getClass().getName());//java.lang.Double
         System.out.println(n.getClass().getName());//java.lang.Integer
     
     }
    }

步骤三:运行

    运行步骤二中的testIntValueAndDoubleValue方法,控制台输出结果如下所示:

    java.lang.Double
    java.lang.Integer

    从输出结果可以看出,d的所属类型为Double,n的所属类型为Integer,这是因为,123.45该直接量的类型为double,经过自动装箱以后转换为Double类型,Double类型是Number类型的子类,子类类型转换为父类类型属于自动类型转换,因此,d的所属类型为Double,同理,n的所属类型为Integer。

步骤四:将d对象分别转换为int类型变量和double类型变量,并输出转换后的结果,代码如下所示:

    package day02;
    
    import org.junit.Test;
    
    public class TestNumber{
    /**
     *测试Number的intValue方法和doubleValue方法
     */
     @Test
     public void testIntValueAndDoubleValue(){
     
         Number d=123.45;
         Number n=123;
         
         //输出d和n对象所属的类型
         System.out.println(d.getClass().getName());//java.lang.Double
         System.out.println(n.getClass().getName());//java.lang.Integer
     
         int intValue=d.intValue();
         double doubleValue=d.doubleValue();
         System.out.println(intValue+","+doubleValue);//123,123.45
     }
    }

步骤五:运行

    运行方法testIntValueAndDoubleValue,最后一条输出语句的输出内容为:

123,123.45

    从输出结果上可以看出,将原本Double类型的对象d,转换为int类型后,取了d对象的整数部分。但转换为double类型后没有变化。

步骤六:将n对象分别转换为int类型变量和double类型变量

    使用Number类的intValue方法和doubleValue方法,将n对象分别转换为int类型变量和double类型变量,并输出转换后的结果。

    package day02;
    
    import org.junit.Test;
    
    public class TestNumber{
    /**
     *测试Number的intValue方法和doubleValue方法
     */
     @Test
     public void testIntValueAndDoubleValue(){
     
         Number d=123.45;
         Number n=123;
         
         //输出d和n对象所属的类型
         System.out.println(d.getClass().getName());//java.lang.Double
         System.out.println(n.getClass().getName());//java.lang.Integer
     
         int intValue=d.intValue();
         double doubleValue=d.doubleValue();
         System.out.println(intValue+","+doubleValue);//123,123.45
         
         intValue=n.intValue();
         doubleValue=n.doubleValue();
         System.out.println(intValue+","+doubleValue);//123,123.0
     }
    }

步骤七:运行

    再次运行testIntValueAndDoubleValue方法,最后一条输出语句的输出内容为:

123,123.0

    从输出结果上可以看出,将原本Integer类型的对象n,转换为double类型后,小数点后保留一位小数。但转换为int类型后没有变化。

关注公众号,获取学习视频

发布了139 篇原创文章 · 获赞 82 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/houjunkang363/article/details/102560829