Java中一些容易遗忘的语法

1. 构造代码块

public class App {
    {
		System.out.println("Ctor");
    }
}
在创建对象的时候会被调用,对比与静态代码块

public class App {
    static{
		System.out.println("Load Class");
    }
}
这个只有在类加载的时候调用一次。

2.代码块标签

	t: for (int i = 0; i < 10; i++) {
	    for (int j = 0; j < 10; j++) {
		if(j==i)
		    continue t;//等价 break
		if(j==5)
		    break t;//跳出最外层循环t
	    }
	}
类似goto的使用,这个在java中还是很有用的,尤其是在循环嵌套。

3.静态导入

import static java.lang.System.out;
public class App {
    {
		out.println("import static");	
    }
}
必须是导入类中字段或者成员,方便使用。

4.位移>>>,>>-2,<<-3

out.println(1 << -31);// 2147483647

最高位补充0,不管是正还是负。

	out.println(1 << -31);// 2
	out.println(4 >> -31);// 2

在位移为负数时位移数为32+n(如32-31=1)

5.Java权限修饰符是四种

private,protected,friendly(默认),public

import static java.lang.System.out;
public class App {
    void f(){
		out.println("friendly");
	}
}
类App中的f只能在包内被访问,其他包,子包都无法访问。

6.内部类的private,protected对它的外部类是可见的

public class App {
    public static void main(String[] args) throws Exception {{
		new C().f();
	}
	private static class C {
		private C() {

		}

		public void f() {

		}
    }
}

以上代码是完全正确的。

7.一个.java文件中可以写任意多个类,但是只能文件名同名类为public。

class App{

}

class A{
}

以上代码保存在App.java中编译成功,若把A改为public则出错。

8.java 中禁止java.开头的包名,安全需要,因为这类包只能有bootstrap类加载器加载。

如下代码编译出错:

package java.x;
public class App{
    public static void main(String[] args) throws Exception {

    }

}

9.Java中方法泛型参数的传递方法为如下:

import java.util.List;

public class B <T>{
    T t;
    public B(T t){
	this.t=t;
    }
    public void f1(){
	this.<List>f();
    }
    public <K extends List> void f(){
	K k;
	k=(K)t;
	System.out.println(k.add("1"));
    }
}

参数在前,方法名在后,Java中的泛型只是在编译器级别做了处理,运行时类型擦出为Object类型。

10.内部类引用外部类成员

public class C {
    public String s;
    public C(String s){
	this.s=s;
    }
    public class CC{
	private String s;
	void f(){
	    System.out.println(s);
	    System.out.println(C.this.s);
	}
    }
}
创建内部类对象

	C c=new C("123");
	C.CC cc=c.new CC();
	cc.f();

。。。未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值