Head first in java

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());  有错误提示
    }

转载于:https://my.oschina.net/ouyangtaohong/blog/862528

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值