传智播客的JAVA SE基础视频 1-5 自学笔记

昨天晚上开始学习传智播客的JAVA SE基础视频,到今天晚上已经把基础视频1-5看完了,因为之前段段续续的自学过C和JAVA,所以前面这几讲都看得挺快的,第5讲讲多线程,就有些复杂了。

 

2009-12-20  00:08:37


 

OS环境变量:OS定义的变量,可被应用程序使用。

set:查看

set path=%path%;..../jdk/bin;          //   =两边不能有空格

在命令行窗口下设置时,不影响其他程序,只对当前命令行窗口有效。

path:java命令路径

classpath:JVM查找类的路径。一般要加上.;表示当前路径。classpath中不能有空格,也不能有中文字符。


java -verbose:可以查看JVM启动加载过程。


JVM运行过程:

    代码装入(ClassLoader)---->代码校验(字节码验证)---->执行(解释器)


反编译工具

    JDK自带的javap命令可以反编译,可惜反编译的结果只有方法声明,无方法的具体内容,用java的反射功能自己也可以实现。

    JAD工具(很强大,让我震撼了一把,不知道实现的原理是什么):jad -s java Test.class。 居然可以完全反编译,得到完整的源码。

    FrontEnd:JAD的GUI版


java标示符:字母、数字、下划线、$(有点新奇)组成,不能以数字开头,不能是关键字。


所以byte、short、char运算时,都先转换为int类型。

    System.out.println('a'+1);                 // 输出98,因为'a'先转为int

    System.out.println(""+'a'+1);           //  输出a1


java不允许嵌套定义变量(和C/C++不同)。


 <<左移, >>右移, >>>无符号右移。   (java没有无符号数)。

移位运算适用于byte, short, char, int, long,低于int的,都先自动转换为int。

对int移位a>>b,先将b对32去模,a>>33和a>>1效果一样。

对long移位a>>b,先将b对64去模,a>>65和a>>1效果一样。


switch():只接受byte, short, char, int, enum型。


数组:java数组都有个length属性。

数组拷贝:JAVA SE 1.6之前使用System.arraycopy(),1.6后可以使用java.util.Arrays.copyOf(),看Arrays的源码,可知Arrays.copyOf()实际内部还是调用System.arraycopy()。

数组排序:Arrays.sort()方法。


java的finalize方法:垃圾回收器调用。

System.gc():运行垃圾回收器,等效于Runtime.getRuntime().gc()

静态方法中不能访问非静态成员。


内部类:

    Outer outer = new Outer();

    Outer.Inner inner = Outer.new Inner();


接口:

    接口中方法都是public,变量默认是public static final。


多线程

    多任务系统中,每个独立执行的程序称为进程。一个进程可以包含一个或多个线程,一个线程就是一个程序内部的一个执行线索。

    java实现多线程方法:1、继承Thread类   2、实现Runnable接口。 都要重写run()方法,然后调用start()就可以了。

后台线程(守护线程?)与联合线程:

    后台线程:对某个线程对象在启动(调用start)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。

    对java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。

    pp.join()作用:把pp所对应线程合并到调用pp.join()语句的线程中。

多线程同步:

    方法1:代码块同步  synchronized(object){}     //object为监视器对象,为任一对象的引用,不能放到run()中定义。

    方法2:函数同步 synchronized f(){}    //监视器对象为this

    (同步关键:监视器对象应是同一个对象)。

死锁:

    比喻:中国人拿了美国人的刀叉,等待筷子,而美国人又拿了筷子,等待刀叉。结果大家都拿不到东西。

线程间通信:

    生产者-消费者问题。

 

 

synchronized(o) {

    o.wait();

 

    o.notify();

}

 


线程生命周期:

 

 

 线程生命周期

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值