其他分享
首页 > 其他分享> > 每日练习8.19

每日练习8.19

作者:互联网

1.下面的程序 编译运行后,在屏幕上显示的结果是(A)

public class test {
	public static void main(String args[]) {
	int x,y;
	x=5>>2;
	y=x>>>2;
	System.out.println(y);
	}
}

A.0
B.2
C.5
D.80

5 >> 2 相当于 5除于2的平方,等于1 ,>>> 表示无符号 右移,高位用0 填充,0001 右移两位 0000,所以答案选 A


2.以下代码结果是什么?C

 public class foo { 
 	public static void main(String sgf[]) {
		 StringBuffer a=new StringBuffer(“A”); 
		 StringBuffer b=new StringBuffer(“B”); 
		 operate(a,b); 
		 System.out.println(a+”.”+b); 
  }
    static void operate(StringBuffer x,StringBuffer y) { 
	   x.append(y); 
	   y=x;
	  } 
   }

A 代码可以编译运行,输出“AB.AB”。
B 代码可以编译运行,输出“A.A”。
C 代码可以编译运行,输出“AB.B”。
D 代码可以编译运行,输出“A.B”

引用a指向对象A
引用b指向对象B
引用x指向对象A
引用y指向对象B
在operate方法中,引用x指向的对象A被连接了B,对象A也就被改变为AB
然后又把引用y指向了x所指向的对象地址,也就是此时引用a,x,y指向同一个对象AB
而引用b没有发生任何变化,依旧指向对象B。


3.下列哪个说法是正确的(D)
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collction接口
C Array.asList方法返回java.util.ArrayList对象
D SimpleDateFormat是线程不安全的

A.ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。
B.public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
C应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类。


4.下列代码执行结果为()

public static void main(String args[])throws InterruptedException{
            Thread t=new Thread(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.print("2");
                }
            });
            t.start();
             
            t.join();
            System.out.print("1");
        }

A 21
B 12
C 可能为12,也可能为21
D 以上答案都不对

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。本题在主线程中调用了子线程的join函数,因此主线程必须等待子线程执行完毕才结束因此输出结果只能是21。


编程题:两个栈实现队列的入队列和出队列

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        if(stack1.isEmpty()&&stack2.isEmpty()){
            throw new RuntimeException("queue is empty!"); 
        }
        if(stack2.isEmpty()){
            while(!stack1.isEmpty())
                stack2.push(stack1.pop());
        }
        return stack2.pop();
    }

标签:指向,StringBuffer,每日,练习,线程,void,new,8.19,public
来源: https://blog.csdn.net/perfectmatch_G/article/details/99756299