Java基础

2016-09-03  本文已影响28人  neo已经被使用
类型 大小 取值范围
byte 1字节 -128~127 (10000000~01111111) [-2^7 ~ 2^7-1]
short 2字节 -3276832767(100...011...) [-215~215-1]
int 4字节 根据以上规律可推出(正好超过20亿,无法表示全球人数)
float 4字节 根据以上规律可推出
long 8字节 根据以上规律可推出(足够表示全球人数)
double 8字节 根据以上规律可推出
char 2字节 java采用Unicode,2个字节(16位)来表示一个字符
boolean 未知 true 、false
Paste_Image.png
   和策略模式结构一样,但是行为跟状态有关(有一个上下文对象来控制具体的状态)
    eg:电视遥控器在开机状态 的各种操作(调音量、换频道)才有效,在关机状态无效
    实用场景:用户登录状态和未登录状态会有不一样的响应!!!!(非常实用)
    public class PowerOn  implements TVState{
        @Override
        public void nextChannel() {
            System.out.println("下一频道");
        }
        @Override
        public void preChannel() {
            System.out.println("上一频道");
        }
        @Override
        public void turnOn() {
            System.out.println("正在开机");
        }
        @Override
        public void turnOff() {
            System.out.println("关机");
        }
    }
    public class PowerOff implements TVState{
        @Override
        public void nextChannel() {}
        @Override
        public void preChannel() {}
        @Override
        public void turnOn() {
            System.out.println("开机");
        }
        @Override
        public void turnOff() {}
    }
    public class TvContext {
        private TVState tvState=new PowerOff();
        public void setTate(TVState tvState){
            this.tvState=tvState;
        }
        public void turnOn(){
            setTate(new PowerOn());
            tvState.turnOn();
        }
        public void turnOff(){
            setTate(new PowerOff());
            tvState.turnOff();
        }
        public void nextChannel(){
            tvState.nextChannel();
        }
        public void preChannel() {
            tvState.preChannel();
        }
    }
    do{
      ...
      if (somethingIsWrong) break;
      //more code
      ...  
      }while(false);
public class ThreadTest1 {

//产品
static class ProductObject{
    //线程操作变量可见
    public volatile static String value;
}

//生产者线程
static class Producer extends Thread{
    Object lock;
    
    public Producer(Object lock) {
        this.lock = lock;
    }
    
    @Override
    public void run() {
        //不断生产产品
        while(true){
            synchronized (lock) { //互斥锁
                //产品还没有被消费,等待
                if(ProductObject.value != null){
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //产品已经消费完成,生产新的产品
                ProductObject.value = "NO:"+System.currentTimeMillis();
                System.out.println("生产产品:"+ProductObject.value);
                lock.notify(); //生产完成,通知消费者消费
            }
        }
        
    }
}

//消费者线程
static class Consumer extends Thread{
    Object lock;
    public Consumer(Object lock) {
        this.lock = lock;
    }
    
    @Override
    public void run() {
        while(true){
            synchronized (lock) {
                //没有产品可以消费
                if(ProductObject.value == null){
                    //等待,阻塞
                    try {
                        lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println("消费产品:"+ProductObject.value);
                ProductObject.value = null;
                lock.notify(); //消费完成,通知生产者,继续生产
            }
        }
    }
}


public static void main(String[] args) {
    Object lock = new Object();
    
    new Producer(lock).start();
    
    new Consumer(lock).start();
}
}
上一篇 下一篇

猜你喜欢

热点阅读