1 表达式((3+4)*6)+3*(5+6)    将括号配对,且输出配对括号的下标位置 
2 写出4个addFoo函数实现的效果有什么不同
class Foo{
  protected Map<Integer,String>map=new HashMap<Integer,String>();
  public void addFoo(int key,String value){
       synchronized(this){
       map.put(key,value);}}
  public synchronized void addFoo(int key,String value){
       map.put(key,value);}
  public void addFoo(int key,String value){
       synchronized(Foo.class){
       map.put(key,value);}}
  public void addFoo(int key,String value){
       synchronized(map){
       map.put(key,value);}}}
3 有一个int数组,存放一张图片的颜色数据,假定有函数point(int color,int x,int y)在屏幕上画一个点已知图片的原始宽高,请完成下面的函数,将图片缩小一倍画在屏幕上。 int [] pic=new int[]{0xff00ff,0x000000,0xffffff,.......};
public void drawsmall(int []pic,int picX,int picY,int picWidth,int picHeight){.....}4 请比较一下List ,Map,Set和Vector
5 int a=0;   int x=~(a^(a-1))-1;  X的值是什么?
6 请说明Comparable接口的用途

解决方案 »

  1.   

    1.import java.util.Stack;public class Main {    public static void main(String[] args) {
            String str = "((3+4)*6)+3*(5+6)";
            System.out.println(check(str));
        }    public static boolean check(String expression){
            Stack<Integer> stack = new Stack<Integer>();
            for (int i = 0; i < expression.length(); i++) {
                switch (expression.charAt(i)) {
                    case '(':
                        stack.push(i);
                        break;
                    case ')':
                        try
                        {
                        System.out.print("配对括号下标: (" + stack.pop() + ",");
                        System.out.println(i + ")");
                        }
                        catch(Exception ex){
                            System.out.println("右括号没有与之匹配的左括号");
                            return false;
                        }
                        break;
                    default:
                        break;
                }
            }
            if (stack.size() > 0) {
                System.out.println("左括号没有与之匹配的右括号");
                return false;
            }
            return true;
        }
    }
      

  2.   

    5 int a=0; int x=~(a^(a-1))-1; X的值是什么?-1a = 0
    a-1 = -1
    -1 = 11111111 11111111 11111111 11111111 (bitwise 32-bits)
    0 = 00000000 00000000 00000000 00000000 (bitwise 32-bits)
    a^(a-1) = 0 xor -1 = -1 (bitwise xor)
            = 00000000 00000000 00000000 00000000 xor 11111111 11111111 11111111 11111111
            = 11111111 11111111 11111111 11111111
    ~(a^(a-1)) = ~(-1) = 0 (unary bitwise complement)
               =~(11111111 11111111 11111111 11111111) = 00000000 00000000 00000000 00000000~(a^(a-1))-1 = 0 - 1 = -1
      

  3.   


    2 写出4个addFoo函数实现的效果有什么不同
    class Foo{
      protected Map<Integer,String>map=new HashMap<Integer,String>();
      public void addFoo(int key,String value){
      synchronized(this){
      map.put(key,value);}}
      public synchronized void addFoo(int key,String value){
      map.put(key,value);}
      public void addFoo(int key,String value){
      synchronized(Foo.class){
      map.put(key,value);}}
      public void addFoo(int key,String value){
      synchronized(map){
      map.put(key,value);}}}
    看得有点头晕,错了勿怪1,2 lock on method 一样的效果
    3, lock on class
    4, lock on map
      

  4.   

    6 请说明Comparable接口的用途Comparable接口规定了每个实现它的类的对象总顺序(自然排序),它包括一个compareTo()方法
    假设有Object a,b;
    我们可以认为a等于b,如果且仅如果 a.compareTo(b)==0
      

  5.   

    请比较一下List ,Map,Set和Vector
    List:元素有序,可重复
    Set:元素无序,不可重复
    MAP:KEY-VALUE,KEY唯一不可为NULL,值可重复可为NULL
    Vector:与新collection不同,是线程安全的