课程实验代码及动手动脑测试

枚举类型测试代码:

public class EnumTest {

    public static void main(String[] args) {
        Size s = Size.SMALL;
        Size t = Size.LARGE;
        // s和t引用同一个对象?
        System.out.println(s == t); //
        // 是原始数据类型吗?
        System.out.println(s.getClass().isPrimitive());
        // 从字符串中转换
        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
};

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

变量,用“==”和equals()方法执行的结果是等价的。枚举类型中values()方法的作用是获取枚举类中的所有变量,并作为数组返回。

使用两个输入框输入数据和一个输出框输出输入两个数据的和

//An addition program 

import javax.swing.JOptionPane;                                // import class JOptionPane

public class Addition {
    public static void main(String args[]) {
        String firstNumber,                                   // first string entered by user
                secondNumber;                                 // second string entered by user
        int number1,                                          // first number to add
                number2,                                      // second number to add
                sum;                                          // sum of number1 and number2

        // read in first number from user as a string
        
        firstNumber = JOptionPane.showInputDialog("Enter first integer");

        // read in second number from user as a string
        
        secondNumber = JOptionPane.showInputDialog("Enter second integer");

        // convert numbers from type String to type int
        
        number1 = Integer.parseInt(firstNumber);
        number2 = Integer.parseInt(secondNumber);

        // add the numbers
        
        sum = number1 + number2;

        // display the results
        
        JOptionPane.showMessageDialog(null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE);

        System.exit(0);                                     // terminate the program
    }
}

调用了Java中swing类进行窗口的建立,并利用将字符串转化为数字进行数字的相加。

public class test {
    private static int value = 1;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int value = 2;
        System.out.println(value);
    }

}

Java中变量遵循“同名变量屏蔽原则”(个人理解:就近原则)

TestDouble代码测试

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类型的数据进行计算时,其结果是不精确的(与浮点数在计算机内部的表示方法有关)。

使用BigDecimal类进行测试

import java.math.BigDecimal;

public class TestBigDecimal
{
    public static void main(String[] args) 
    {
        BigDecimal f1 = new BigDecimal("0.05");
        BigDecimal f2 = BigDecimal.valueOf(0.01);
        BigDecimal f3 = new BigDecimal(0.05);
        System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
        System.out.println("0.05 + 0.01 = " + f1.add(f2));
        System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
        System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
        System.out.println("0.05 / 0.01 = " + f1.divide(f2));
        System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
        System.out.println("0.05 + 0.01 = " + f3.add(f2));
        System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
        System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
        System.out.println("0.05 / 0.01 = " + f3.divide(f2));
        
    }
}

结论:在构建BigDecima对象时应使用字符串而不是double类型,否则仍有可能引发计算精度问题。

 对Java中+连接字符串的问题的思考

int x=100;
        int y=200;
        System.out.println("x+y="+x+y);
        System.out.println("x+y="+(x+y));

结论:从第一个字符串以后都默认为字符串(如果第二个变量为整型依旧看作字符串处理,除非采用括号优先运算)。

猜你喜欢

转载自www.cnblogs.com/weixiao1717/p/11567726.html