Java中值得注意的细节1

    技术2025-12-09  2

    加号与加等于的区别

     

    public class 加号与加等于 { public static void main(String[] args) { byte a = 5; //下面语句出错,因为5默认是int类型,a+5就是int类型。 //把int类型赋给byte类型的变量,所以出错 a = a+5; byte b= 5; //但是这个语句不会出错 b += 5; } }

    简单的计算问题

     

    public class TestCompute { public static void main(String[] args) { double a = 2.3; int b = 2; System.out.println("a="+a+", b="+b); System.out.println("a%0="+a%0); System.out.println("0%a="+0%a); System.out.println("0%0="+0%0.0); System.out.println("3%1="+3%1); System.out.println("a/b="+a/b); //不会出现除零错 System.out.println("a/0="+a/0); //出现除零错 System.out.println("b/0="+b/0); } }

    运行结果: a=2.3, b=2 a%0=NaN 0%a=0.0 0%0=NaN 3%1=0 a/b=1.15 a/0=Infinity java.lang.ArithmeticExcepTion:/by zero 比较的问题

     

    public class Compare { public static void main(String[] args) { //比较对象时如果直接用"=="表示比较地址 //Integer采用了缓存机制,会出现这样奇怪的情况 Integer inta = 2; Integer intb = 2; System.out.println("inta==intb ? " + (inta==intb)); Integer biga = 128; Integer bigb = 128; System.out.println("biga==bigb ? " + (biga==bigb)); //String使用构造器和使用直接量赋值时的情形是不同的 //通过构造器创建的String实例时,系统总会新创建一个对象,如下: String aStr = new String("Hello"); String bStr = new String("Hello"); System.out.println("aStr==bStr ? "+(aStr==bStr)); //通过直接量赋值创建的String实例系统会将之缓存, //若再次使用相同的直接量创建对象,系统便会在缓存中找到这样的实例,并引用之 String cStr = "Hello"; String dStr = "Hello"; System.out.println("aStr==bStr ? "+(cStr==dStr)); } }

    运行结果: inta==intb ? true biga==bigb ? false aStr==bStr ? false aStr==bStr ? true

     

    最新回复(0)