Java题

1.
public class LastLaugh{
public static void main(String[] args)
{
System.out.print("H" + "a");
System.out.print('H' + 'a');
}
}

注释:开始以为是+号当string处理的考点,就答了HaHa。失策啊。忘记了 + 是String 类重载的方法。当一个String类的对象和另外一个非String类的对象 + 时。非String类的对象会装换成String类对象来处理。所以本题的答案是Ha169。a的ASK码为97,97-32+7+97 = 169!

2.
public class Confusing{
private confusing(Object o)
{
System.out.print("Object");
}

private confusing(double[] array)
{
System.out.print("double array");
}
public static void main(String args[])
{
new Confusing(null);
}
}

注释:本题考的是java中重载的参数匹配原则。第一次填的答案是Objcet以为null是Object类。所以就做了个错误的选择。null也是double[] 的对象。所以根据java中参数最小匹配的原则,即confusing(Objece o)方法对于任何参数都可以进行匹配,但是confusing(double[] array)只能匹配double[]数组,所以new Confusing(null)时是选择匹配double[]数组作为参数的构造函数。
结果为 double array

3.请用java实现任意10个数字的排序程序。

注释:第一次的时候用的是Arrays.sort()方法来做。结果上是对的。但是后来了解到本题的考点是继承Comparable方法。所以需要改正。


一个实现了Comparable接口的类在一个Collection(集合)里是可以排序的,而排序的规则是按照你实现的Comparable里的抽象方法compareTo(Object o) 方法来决定的。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package exam;

import java.util.Arrays;

/**
*
* @author Administrator
*/
public class NumSort implements Comparable<Object> {
   
    private int data;

    public NumSort(int data) {
        this.data = data;
    }

    @Override
    public int compareTo(Object o) {
       
        if ( o instanceof  NumSort)
        {
            if( this.data > ((NumSort) o).data )
            {
                return 1;
            }
            else if (this.data < ((NumSort) o).data)
            {
                return -1;
            }
            else
            {
                return 0;
            }
        }

        throw new UnsupportedOperationException("Not supported yet.");               
}
   
    public static void main(String[] args)
    {
        NumSort[] numArr = {new NumSort(555), new NumSort(9), new NumSort(55)};
        Arrays.sort(numArr);
        for(NumSort n: numArr)
        {
            System.out.print(n.data + " ");
        }
    }   
}

4.HaspMap 和 ConcurrentHaspMap有什么不同,分别在什么情况下使用?

1.HashMap :基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。注意,此实现不是同步的。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。

2.ConcurrentHaspMap:支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与 Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有操作都是线程安全的,但获取操作不 必锁定,并且不 支持以某种防止所有访问的方式锁定整个表。此类可以通过程序完全与 Hashtable 进行互操作,这取决于其线程安全,而与其同步细节无关。

5.public class JoyOfHex{
public static void main(String[] args)
{
System.out.println(Long.toHexString(0x100000000L + 0xcafebave));
}
}

注释:本题的考点在于长整型占多少位的问题。本题的答案是0xcafebabe

6.int i = 1; i = i / 10; ==> i = 0;
  int i = 1; i = i * 0.1; //会报错。需要类型转换

你可能感兴趣的:(java)