您的位置:首页 > 编程语言 > Java开发

Java基础知识精华总结2

2008-08-20 11:56 681 查看
19 我怎么从键盘输入一个int/double/字符串?
答:
java的I/O操作比C++要复杂一点。如果要从键盘输入,样例代码如下:
BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) ) ;
String s = cin.readLine();
这样你就获得了一个字符串,如果你需要数字的话再加上:
int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s );

31 throw和throws有什么不同?
答:
throws用于声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。
如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。
注意Error和RuntimeException的子类是例外,无需特别声明。

36 abstract是什么?
答:被声明为abstract的方法无需给出方法体,留给子类来实现。
而如果一个类中有abstract方法,那么这个类也必须声明为abstract。
被声明为abstract的类无法实例化,尽管它可以定义构造方法供子类使用。

38 Override和Overload有什么不同?
答:
Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。
Overload是指同一个类中不同方法(可以在子类也可以在父类中定义)间的关系,这些方法有着相同的名称和不同的参数类型。

41 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。
答:在构造方法第一行调用this(...)。

42 我没有定义构造方法会怎么样?
答:自动获得一个无参数的构造方法。

43 我调用无参数的构造方法失败了。
答:如果你至少定义了一个构造方法,就不再有自动提供的无参数的构造方法了。
你需要显式定义一个无参数的构造方法。
48 java能动态分配数组吗?
答:可以。例如int n = 3; Language[] myLanguages = new Language
;

49 我怎么知道数组的长度?
答:用length属性。如上例中的 myLanguages.length 就为 3。

50 我还想让数组的长度能自动改变,能够增加/删除元素。
答:用顺序表--java.util.List接口。
你可以选择用ArrayList或是LinkedList,前者是数组实现,后者是链表实现。
例如: List list = new ArrayList(); 或是 List list = new LinkedList(); 。

52 我想用队列/栈。
答:用java.util.LinkedList。

53 我希望不要有重复的元素。
答:用集合--java.util.Set接口。例如:Set set = new HashSet()。

54 我想遍历集合/Map。
答:用java.util.Iterator。参见API。

55 我还要能够排序。
答:用java.util.TreeSet。例如:Set set = new TreeSet()。放进去的元素会自动排序。
你需要为元素实现Comparable接口,还可能需要提供equals()方法,compareTo()方法,hashCode()方法。

56 但是我想给数组排序。
答:java.util.Arrays类包含了sort等实用方法。

57 我想按不同方法排序。
答:为每种方法定义一个实现了接口Comparator的类并和Arrays综合运用。

58 Map有什么用?
答:存储key-value的关键字-值对,你可以通过关键字来快速存取相应的值。

59 set方法没问题,但是get方法返回的是Object。
答:强制类型转换成你需要的类型。参见45。

Iterator con=m.listClasses();
这样是可以的,
能不能将listClasses()直接转换成一个集合
象这样:Set concept=(Set)m.listClasses();
编译可以过,但是Exception in thread "main" java.lang.ClassCastException
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: