您的位置:首页 > 职场人生

黑马程序员------2015.6.17java基础--异常--package---线程

2015-06-17 22:26 483 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.    自定义异常时:如果该异常的发生,无法再继续进行运算

            就让自定义异常继承RuntimeException

        对于异常分两种:

        a.编译时被检测的异常

            如函数内部抛出非运行时异常,而函数外没有抛出异常,则会编译失败

            或者,程序调用抛出异常的函数时,没有对其进行处理。

        b.编译时不被检测的异常(运行时异常,RuntimeException以及其子类)

            在函数内部抛出运行时异常就可以。

2.finally通常用于关闭资源    

3.格式-:try{              

                 } catch() {

                

                 }

    格式二:try{              

                 } catch() {

                

                 } finally {

                

                 }

    格式三:try{              

            

                     } finally {

            

                  }        

4.异常在子父类覆盖中的体现

    a.子类在覆盖父类时,如果父类的方法抛出异常,那么子类覆盖方法,只能抛出父类的异常或者该异常的子类               

    b.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

    c.如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。            

        如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。

5.只有出现System.exit(0);finally不会被执行到        

6.继承体系中 相同的变量不会被覆盖

7.throw单独存在时,下面不要定义语句,因为执行不到。

8.包package

        将class文件放到指定的文件中

        javac -d c:\file Test.java

        javac -d . Test.java        //放到当前文件中

9.包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰

        不同包中的子类还可以直接访问父类中被protected权限修饰的成员

        

    包与包之间可以使用的权限有public protected

    

                   public       protected        default     private

同一个类中    ok              ok             ok           ok

同一个包中    ok              ok             ok

子类          ok              ok

不同包            ok

10.一个文件中不允许出现两个同为public的类

11.import 为了简化类的书写

     建议不写通配符* 占内存

12.进程:是一个正在执行中的程序

                        每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元

     线程:就是进程中的一个独立的控制单元。

                         线程在控制着进程的执行。

     一个进程中至少有一个线程。

    

     java JVM 启动的时候会有一个进程java.exe

     该进程中至少一个线程负责java程序的执行。

     而且这个线程运行的代码存在于main方法中

     该线程称为主线程。

    

     其实更细节的说jvm,它启动不止一个线程,还有负责垃圾回收机制的线程。

13.如何定义一个线程呢?

    方式一:继承Thread,覆盖run方法

    步骤:a.定义类继承Thread

                b.复写Thread类中的run方法

                        目的:将自定义的代码存储在run方法中

                c.调用线程的start方法,

                        该方法有两个作用:启动线程,调用run方法

14.发现运行结果每一次都不同。

     因为多线程都获取cpu的执行权。cpu执行到谁,谁就运行。

     明确一点,在某时刻只能有一个程序在运行(多核除外)。

     cpu在做着快速的切换,以达到看上去是同时运行的效果。                        

    

     这就是多线程的一个特性:随机性,谁抢到谁执行,至于执行多长时间,cpu说了算。

15.为什么要覆盖Thread的run方法?

        Thread类用于描述线程。

        该类就定义了一个功能,用于存储线程类要运行的代码,该存储功能就是run方法

        

        也就是说Thread类中的run方法,用于存储线程要运行的代码。    

16.

/*
练习:创建两个线程和主线程同时运行
原来线程都有自己默认的名称
Thread-编号 该编号从0开始

static Thread currentThread();获取当前线程对象
相当于  this
getName();获取线程名称

设置线程名称:setName或者构造函数
*/

class ThreadDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo("one");
Demo d2 = new Demo("two");
d1.start();
d2.start();
//d.run();这样仅仅是对象调用方法,而线程创建了,并没有运行
for(int x=0;x<100;x++)
{
System.out.println("hello world"+x);
}
}
}

class Demo extends Thread
{
public Demo(String name)
{
super(name);
}
public void run()
{
for(int x=0;x<100;x++)
{
//this.getName()获得线程的名字,每个线程都有自己的名字
//Thread-编号 该编号从0开始
System.out.println(this.getName()+"demo"+x);

System.out.println((Thread.currentThread()==this)+this.getName()+x);
}
}
}


17.局部变量在每一个线程中都有一份   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息