枚举类型测试代码:
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 JOptionPanepublic class Addition {public static void main(String args[]) {String firstNumber, // first string entered by usersecondNumber; // second string entered by userint number1, // first number to addnumber2, // second number to addsum; // 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 stubint 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));
结论:从第一个字符串以后都默认为字符串(如果第二个变量为整型依旧看作字符串处理,除非采用括号优先运算)。