- java5后classpath环境变量不需要在设置
- jdk9后没有jre
https://stackoverflow.com/questions/53111921/how-to-get-java-11-run-time-environment-working-since-there-is-no-more-jre-11-fo - java字节码反编译工具
jd-ui - java代码中的整数默认为int类型,小数默认为double类型
- 成员变量定义后会被初始化默认值,局部变量没有默认值,定义后必须初始化
- switch支持字符串(jdk>=1.7)
- 对象堆分配
- ArrayList线程不安全,扩容1.5倍,Vector线程安全,扩容2倍
- 构造函数内调用其他构造函数必须是该函数内第一条语句
- 静态导包(import static ),导入指定类的静态成员,使用时,可以不加类名(jdk>=1.5)慎用,使用不当将降低代码的可读性、可维护性
- 不加访问修饰符,默认只能被同类和同包访问
- 常量池在jdk1.7之后放堆空间
- 字符串的本质就是字符数组
- HashMap实现数据结构数组+链表(1.7),数组+链表+红黑树(>=1.8),HashMap线程不安全,允许null键值,HashTable线程安全,(hash碰撞)
- 内部类( new OutClass().InnerClass())
匿名内部类 一般只使用一次,实现接口或抽象类
静态内部类 new OutClass.StaticInnerClass()
方法内部类 - try-finally 含有reture语句
- finally中含有return语句,try中的return被覆盖掉
- finally中没有return语句,则继续执行try的return
- finally中没有return语句,但是改变了try中return要返回的值,如果该值为基本类型或文本字符串,则该改变不影响try中return要返回的值,如果为引用类型,则try中return的返回值受影响
public class TryFinallyDemo{
static int testInt(){
int num=10;
try{
num+=80;
return num;
}finally{
System.out.println("finally.....");
num=100;
}
}
static int testIntForReturn(){
int num=10;
try{
num+=80;
return num;
}finally{
System.out.println("finally.....");
num=100;
return num;
}
}
static String testString(){
String num="我是没有return 字符创";
try{
num="我是try修改值";
return num;
}finally{
System.out.println("finally.....");
num="我是finally修改值";
}
}
static StringBuffer testStringBuffer(){
StringBuffer buffer=new StringBuffer();
try{
buffer.append("我是try加的内容");
return buffer;
}finally{
System.out.println("finally.....");
buffer.append("我是finally加的内容");
}
}
}