Java2SE基础知识点整理(二)

第一篇:Java2SE基础知识点整理(一)

1.Interface与abstract类的区别

No.区别抽象类接口
1定义关键字abstract classinterface
2组成常量、变量、抽象方法、普通方法、构造方法全局常量、抽象方法
3权限可以使用各种权限只能是public
4关系一个抽象类可以实现多个接口接口不能继承抽象类,却可以继承多接口
5使用子类使用extends继承抽象类子类使用implements实现接口
5使用抽象类和接口的对象都是利用对象多态性的向上转型,进行接口或抽象类的实例化操作抽象类和接口的对象都是利用对象多态性的向上转型,进行接口或抽象类的实例化操作
6设计模式模板设计模式工厂设计模式、代理设计模式
7局限一个子类只能继承一个抽象类一个子类可以实现多个接口

2.Static class 与non static class的区别
静态内部类表示为“外部类”,并且只能访问外部类中static类型的操作。

3.java多态的实现原理
方法的覆写(Overriding)和重载(Overloading)。

4.实现多线程的两种方法:Thread与Runable
简单说来,继承Thread类,覆写它的run()方法,再启动start()启动一个线程;实现Runnable接口使用线程,依旧再覆写它的run()方法,之后使用Thread类中定义的public Thread(Runnable target)启动线程。

5.线程同步的方法:sychronized、lock、reentrantLock等
sychronized可以用来定义同步代码块或同步方法实现每次只有一个线程操作,其他线程等待。
Java5引入了ReentrantLock类。
lock()是sychronized关键字提供的一个锁,除此外还提供了锁的条件。

6.锁的等级:方法锁、对象锁、类锁
请看这篇文章(点击此处
7.写出生产者消费者模式


public class ProducerAndConsumer {

    public static void main(String[] args) {
        Message msg = new Message();
        new Thread(new Producer(msg)).start();
        new Thread(new Consumer(msg)).start();
    }   

}


class Message {
    private String title;
    private String content;
    //flag = true:表示可以生产,但是不能取走
    //flag = false:表示可以取走,但是不能生产
    private boolean flag = true;

    public synchronized void set(String title,String content){
        if(this.flag == false){
            try {
                super.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.title = title;
        try{
            Thread.sleep(100);
        }catch(InterruptedException e){
            e.printStackTrace();
        }
        this.content = content;
        this.flag = false;
        super.notify();
    }

    public synchronized void get(){
        if(this.flag == true){
            try {
                super.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        try{
            Thread.sleep(100);
        }catch(InterruptedException e){
            e.printStackTrace();
        }
        System.out.println(this.title + "==>" + this.content);
        this.flag = true;
        super.notify();
    }

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }


}

//定义生产者
class Producer implements Runnable{
    private Message msg = null;
    public Producer(Message msg){
        this.msg = msg;
    }
    @Override
    public void run() {
        for(int x = 0;x < 50;x++){
            if(x % 2 == 0){
                this.msg.set("《西游记》","一部神魔小说");
            } else{
                this.msg.set("《红楼梦》","一一部人情小说");
            }
        }

    }

}

//定义消费者
class Consumer implements Runnable{
    private Message msg;
    public Consumer(Message msg){
        this.msg = msg;
    }
    @Override
    public void run() {
        for(int x = 0; x < 50 ; x++){
            this.msg.get();
        }

    }

}

8.ThreadLocal的设计理念与作用
一个关于创建线程局部变量的类。一般创建的变量是可以被任何一个线程访问并修改的。使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。
详细请移步到这篇文章(点击这里

9.ThreadPool用法与优势
Java中线程池是通过Executor框架实现的。这篇文章值得一读(点击这里这里写链接内容
10.Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等

11.wait()和sleep()的区别
sleep()是Thread类定义的static方法,表示线程休眠,将执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复。
wait()是Object类定义的方法,表示线程等待,一直到执行了notify()或notifyAll()后才结束等待。

12.foreach与正常for循环效率对比
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。(参考:这里

13.Java IO与NIO
IO:面向流;阻塞IO
NIO:面向缓冲;非阻塞IO

14.反射的作用于原理
Class类是反射机制操作的源头。

15.泛型常用特点,List< String >能否转为List< Object >
不可以。因为<>里面的类型不一样。

16.设计模式:单例、工厂、适配器、责任链、观察者等等

17.JNI的使用
关于这个JNI完全可以另写一套专题了。就不再写出答案了,大家可以搜索JNI百度百科或者去官网查看JNI文档(就是点这里)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值