• JAVA课后作业01


    一.关于枚举的问题

    public class EnumTest {
    
    	public static void main(String[] args) {
    		Size s=Size.SMALL;
    		Size t=Size.MEDIUM;
    		//s和t引用同一个对象?
    		System.out.println(s==t);  //false
    		//是原始数据类型吗?
    		System.out.println(s.getClass().isPrimitive());//false
    		//从字符串中转换
    		Size u=Size.valueOf("SMALL");
    		System.out.println(s==u);  //true
    		//列出它的所有值
    		for(Size value:Size.values()){
    			System.out.println(value);
    		}
    	}
    }
     enum Size{SMALL,MEDIUM,LARGE};
    

       1.运行下列代码可得注释后的结果,由此可以看出枚举的每个具体值都引用一个特定的对象,当引用的都为SMALL时,结果为true,则相同的值则引用同一个对象;

       2.第二显示表示枚举并不属于八个原始数据类型,是属于引用类型;

       3.第三个表示在枚举中可以直接使用“==”和equals()方法直接对比;

    二.java中数值进行运算为什么得不到数学上精确

       运行以下代码:

       得到结果:

       可见,double类型在进行运算时并不能达到数学上的精确。原因是我们的计算机是二进制的,浮点数没有办法是用二进制进行精确表示的,CPU在表示浮点数是由两个部分表示的:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。

       所以在Java中的数值运算只能用于科学计算或是工程计算,在大多数的商业计算中,一般所采用java.math.BigDecimale类来进行精确计算。

    步骤如下:

      1)将double类型转换成string类型

      2)将string类型转换成BigDecimal对象

      3)使用BigDecimal对象的方法如add等进行加减乘除运算。

    三.输出结果显示问题

    运行以下代码:

    1         int x=100;
    2         int y=200;
    3         System.out.println("x+y="+x+y);
    4         System.out.println(x+y+"=x+y");

    程序结果为:

    原因:在Java中,+有时是运算符,有时是连接符

      1)当左右两边连接的都是非数字型时,则为连接符。

      2)当一边是数值类型,另一边是非数值类型时,则为连接符。

      3)当两边都是数值类型时,则为运算符,即相加求和的作用。

  • 相关阅读:
    codeforces 587B
    codeforces 552E
    算法竞赛模板 字典树
    算法竞赛模板 二叉树
    算法竞赛模板 图形面积计算
    TZOJ 1545 Hurdles of 110m(动态规划)
    算法竞赛模板 判断线段相交
    算法竞赛模板 折线分割平面
    TZOJ 3005 Triangle(判断点是否在三角形内+卡精度)
    算法竞赛模板 KMP
  • 原文地址:https://www.cnblogs.com/heiyang/p/9745909.html
Copyright © 2020-2023  润新知