Java笔记
发表于|更新于
|阅读量:
JAVA杂碎知识点
x++和++x的区别:
&&运算符的短路求值
1 2 3 4 5 6 7 8 9 10
| public class E { public static void main(String args[]) { int x = 8, y = 8; if (x++ == 9 && ++y == 9) { x = 10; y = 10; } System.out.println("x=" + x + " , y=" + y); } }
|
在if语句中,&&运算符先对左边进行运算:x++此时值为8,不等于9,导致判断结果为false,当已经有一方为false时,整个if语句已是false,导致&&右边的运算不会进行,所以只有x进行了自增操作,而y没有。
switch case
1 2 3 4 5 6 7 8 9 10 11 12
| public class E { public static void main(String args[]){ int x=2, y=5, z= 20; switch(x) { case 7 : z--; case 5 : z-=2; case 2: z-=5; default: z+=10; } System.out.println(z); } }
|
不要认为经过一个case就会结束,要看看有无break语句,若无则会一条条往下走,直至走完default。
package语句要放在最前面
静态嵌套类
1 2 3 4 5 6 7 8 9 10 11 12
| public class OuterClass { static class A { public static int a = 1; static { a = 2; } }
public static void main(String[] args) { System.out.println(A.a); } }
|
其中A为静态嵌套类,无需将其实例化即可访问其中的静态属性
static { a=2; }
为静态代码块,在类加载时会被执行。即使静态变量a的初值是1,当A类被加载时,a的最终值是2。
非静态嵌套类
访问外部类成员
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class OuterClass { private String name = "OuterClass Name";
class InnerClass { public void printOuterName() { System.out.println("Outer class name: " + name); } } }
public class Main { public static void main(String[] args) { OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); inner.printOuterName(); } }
|