Java趣味问答题^_^

Java趣味问答题^_^

1.计算下面代码的结果

public class  smallT
{
	public static void  main(String args[])
	{
		SmallT t = new SmallT();
		int b = t.get();
		System.out.println(b);
	}
	
	public int  get()
	{
		try
		{
			return 1 ;
		}
		finally
		{
			return 2 ;
		}
	}
}
// 返回的结果是2。

2.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

public class ThreadTest1 {

    private int j;

    public static void main(String args[]){
        ThreadTest1 tt=new ThreadTest1();
        Inc inc=tt.new Inc();
        Dec dec=tt.new Dec();
        for(int i=0;i<2;i++){
            Thread t=new Thread(inc);
            t.start();
            t=new Thread(dec);
            t.start();
        }
    }

    private synchronized void inc(){
        j++;
        System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    }

    private synchronized void dec(){
        j--;
        System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    }

    class Inc implements Runnable{
        public void run(){
            for(int i=0;i<100;i++){
                inc();
            }
        }
    }

    class Dec implements Runnable{
        public void run(){
            for(int i=0;i<100;i++){
                dec();
            }
        }
    }
}

3.自动拆装箱的实验

public class Test {  
    public static void main(String[] args) {      
        test();  
    }  

    public static void test() {  
        int i = 40;  
        int i0 = 40;  
        Integer i1 = 40;  
        Integer i2 = 40;  
        Integer i3 = 0;  
        Integer i4 = new Integer(40);  
        Integer i5 = new Integer(40);  
        Integer i6 = new Integer(0);  
        Double d1=1.0;  
        Double d2=1.0;  
          
	    //1、这个没解释的就是true
	    System.out.println("i=i0\t" + (i == i0));  //true
	    //2、int值只要在-128和127之间的自动装箱对象都从缓存中获取的,所以为true
	    System.out.println("i1=i2\t" + (i1 == i2));  //true
	    //3、涉及到数字的计算,就必须先拆箱成int再做加法运算,所以不管他们的值是否在-128和127之间,只要数字一样就为true
	    System.out.println("i1=i2+i3\t" + (i1 == i2 + i3));//true  
	    //比较的是对象内存地址,所以为false
	    System.out.println("i4=i5\t" + (i4 == i5));  //false
	    //5、同第3条解释,拆箱做加法运算,对比的是数字,所以为true
	    System.out.println("i4=i5+i6\t" + (i4 == i5 + i6));//true      
	    //double的装箱操作没有使用缓存,每次都是new Double,所以false
	    System.out.println("d1=d2\t" + (d1==d2));//false 
          
        System.out.println();          
    }  
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值