1、每一个可以运行的Jar包中,解压后都有一个META-INF目录,其中有一个文件中MANIFEST.MF,文件的内容表明了运行的Main方法。如下:
Manifest-Version: 1.0
Main-Class: com.oyth.jar.TestJar
2、primitive 中整形中 long 是64位,int 是32位 。浮点型 double 64位,float 是32位。
3、java的基本8中基本类型,数值型(整数形) int ,short ,long byte. 数值型(浮点型)float ,double .字符型char ,布尔型,boolean
4、实例变量有默认值,int = 0 ,float = 0.0 ,boolean = false . char = '/uoooo'(null), 对象是null.
5、局部变量没有默认值,在使用前一定要初始化。
6、局部变量和方法保存在堆栈上,对象和实例变量保存在堆上,实例变量包含在对象中,即实例变量构成了对象。若对象有非primitive属性,则只包含该对象属性的引用,等该对象被创建时才会在堆上。
7、类上不能被继承的方法。final 方法;存取权限为private的方法。
8、类的访问控制权限只有public ,protected(包访问)。**没有private **
9 、方法的重载(overload) .方法名,参数个数,形参类型不同,若是返回值不同,则不是重载
10、Object 的作用 1、作为多态可以应付各种类型的机制,以及提供Java在运行期对任何对象都有需要的方法的实现程序代码(让所有的类都会继承到)。2、线程有关。
11、使用super()调用父类的构造函数,必须在子类的构造函数的第一行。
12、使用this()来从某个构造函数调用一个类的另一个构造函数,thi()只有在构造函数中,且必须是第一条语句。this()不可以与super()兼得。
13、对象的生命周期完全要看引用他的“引用”。如果引用还活着,则对象也会继续活在推上;1、局部变量只会存活在声明该变量的方法中,2、实例变量的寿命与对象相同,如果对象还活着,则实例变量也还活着。
14、life与scope的范围, life : 只要变量的堆栈块还在堆栈上,局部变量就算活着,即,活到方法执行完毕为止; scope :局部变量的范围只限于声明它的方法之内。当此方法调用别的方法时,该变量还活着,但不在目前的范围内,执行方法完毕返回后,范围也就跟着回来了。
15、只要有活着的引用,对象也就会活着。如果某个对象的引用语句不在它的范围中,但此引用还是活着的,则该对象就会继续存活在堆上。当最后一个引用消失时,对象就会变成可回收的。
16 java 中所有的异常都继承制Throwable。有Error 和Exception继承他。Error有:Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
Exception有 IOException ,InterruptedException 和RuntimeException
Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions) 可查异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。
除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。
不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。
具体参考:http://blog.csdn.net/hguisu/article/details/6155636
17、使用对象的锁。 多线程锁机制:在方法上加上synchronized.其实是每个对象有一把锁。如果有两个同步化的方法都对同一个对象操作,就表示两个线程无法进入同一个方法。也表示两个线程无法同时进入不同方法;如果你有多个方法操作同一实例,则这些方法都需要同步化的保护。
同步化的目标是要保护重要的数据,但是要记住,你锁住的是不是数据,而是存取数据的方法。同步化可以是方法的一部分。
静态变量的同步化,每一个类都有一把锁 。表示如果有3个Dog对象在堆上,则会有4把锁,3个是Dog实例的,1个是类的锁。
18、对象的hashCode值相同,不一定对象就相等,还得要比较equals方法。因为可能有多个hashcode值相同的对象,但对象的值不同。hash算法。
19、万用字符
<? extends Animal >
在方法参数中使用万用字符时,编译器会阻止任何可能破坏引用参数所指集合的行为,你能够调用List中的任何元素的方法,但不能加入元素。
public static void addAnimal(ArrayList<? extends Cat> cats){
for(Cat cat:cats){
cat.getWeight();
}
///cats.add(new MyCat()); 有错误提示
}