Java程序员面试题之五

 

26Math.round(11.5)等於多少? Math.round(-11.5)等於多少 

 

Math.round(11.5)==12

Math.round(-11.5)==-11

round方法返回与参数最接近的长整数,参数加0.5后求其floor。

 

 

27String s = new String("xyz");创建了几个String Object?

 

两个

 

一个是编译时决定的,最后放在常量池中。一个是运行时放在里面的。两个都是"xyz"。

 

常量池中只可能只有一个“xyz”,但是堆中可能有多个,

因为这里用了new String来强制在堆中再创建了一个对象,所以是两个;

如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz ”。

 

 

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

 

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

 

 

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(); 
            } 
        }  
    } 
}

 

 

 

29Java有没有goto? 

 

java中的保留关键字,现在没有在java中使用。

 

 

 

30、启动一个线程是用run(),还是start()?

 

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,

这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。

 

通过start()方法可以调用到run() 。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值