几道小小的题目一起和大家更进一步的了解 Java :)
做题规则:不允许进行上机操作。
1. 请问以下程序会输出什么?
public class Test {
public static void main(String[] args) {
Parent parent = new Parent();
Parent child = new Child();
System.out.println(parent.getName());
System.out.println(child.getName());
}
}
class Parent {
public static String getName() {
return "Parent ";
}
}
class Child extends Parent {
public static String getName() {
return "Child ";
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======
2. 请问以下程序会输出什么?
public class Test {
public static void main(String[] args) {
for(int i = 0; i <= 10; i++)
Integer k = new Integer(i);
System.out.println( "Java Puzzlers ");
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======
3. 请补全 i 的声明(要求:i 不允许为 float、double、Float 和 Double 类型)让其能输出“Hello World”。
public class Test {
public static void main(String[] args) {
________________; // 补全 i 的声明
if( i != i + 0) {
System.out.println( "Hello World ");
}
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======
4. 请问以下程序的输出结果是什么?
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger one = new BigInteger( "1 ");
BigInteger two = new BigInteger( "2 ");
BigInteger three = new BigInteger( "3 ");
BigInteger sum = new BigInteger( "0 ");
sum.add(one);
sum.add(two);
sum.add(three);
System.out.println(sum.toString());
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======
5. 请将下面程序中的空格补全(要求见程序中)
// 忽略 import 语句
public class Test {
public static void main(String[] args) {
List <String> list = new ArrayList <String> ();
list.add( "d ");
list.add( "c ");
list.add( "c ");
list.add( "a ");
list.add( "a ");
list.add( "b ");
list.add( "b ");
list = removeDuplicate(list);
// 输出的结果应是“d c a b ”
for(String str : list) {
System.out.print(str + " ");
}
}
/**
* 方法功能:移除 List 中重复的元素,并保持原有的顺序
*/
public static <T> List <T> removeDuplicate(List <T> list) {
// 把空格处完善
return ____________________________________;
}
}
以上的题目,你能答对多少呢?不管你能做对多,能从中学习到些什么,就是对我贴这些题目最大的安慰了。帖子是有分的哦(请不要出现 JF、接分之类的回复,谢谢)
= = = 以 = 下 = 的 = 内 = 容 = 请 = 把 = 题 = 目 = 做 = 完 = 再 = 看 = 好 = 吗 = = =
其他说明:以上题目均改自《Java 解惑》一书,十分推荐各位看一下,CSDN 上有下载 http://download.csdn.net/source/172506 ,资源上传者要收取下载者 1 分,不过下完后回复一下评论就不会扣分了。
ps: 绝对不是做广告,我只是想给大家推荐一本好书,希望各位能理解我的用意。
[解决办法]
支持LZ
[解决办法]
1,ParentChild
2,Java Puzzlers
3,Integer i=new Integer();
4,6
[解决办法]
都是乍一看不难的题目,但都是容易被忽略的题目,
收下了。。。。。。。。
[解决办法]
难为楼主为了让大家看清代码,还用全角空格做了缩排,鼓励一下!
不过,用普通的空格应该也可以吧?试试……
缩两个空格
缩四个空格
……
[解决办法]
心里没底。。去下书看先。。。
[解决办法]
有意思
[解决办法]
有几题还真得上机试试
[解决办法]
留名
[解决办法]
去下
[解决办法]
小頂一下
[解决办法]
学习一下
[解决办法]
1,Parent Parent
2,Java Puzzlers
3,String i= " ";
4,0
5,new ArrayList <T> (new HashSet <T> (list))
应该正确吧!!!!
[解决办法]
haha
[解决办法]
thanks
[解决办法]
貌似第二个有错
[解决办法]
哎 看来我基础知识还是不行啊。
谁说说第一个题为什么是两个parent啊
[解决办法]
1.程序重载有错,编译不通过。
2。Java Puzzlers
3。String i = " "或者任何字符串;
4. 6
5。new ArrayList <T> (new HashSet <T> (list))
靠这几个答案接点分了,谢谢。
[解决办法]
1,Parent Parent
2,Java Puzzlers
3,不懂
4,6?不懂
5,不懂
觉得自己好菜。。。。。。。。
[解决办法]
不错的题目,学习一下
[解决办法]
第二题编译不能通过。。
第一题可以的 Parent Parent
第四题 0
[解决办法]
这个不顶不是人啊,下载下来了马上去看
[解决办法]
关于第一题,我有话要说:
之前,我的答案说是编译不能通过,是基于这样的考虑,一方面是静态方法在Java中不能重写(override),这样就引发了一个问题:Java中,同名的子类方法和父类方法,除了重写(override)和重载(overload),题目中的父子同名的getName既不是重写也不是重载,那他们是什么关系?
而,子类明显的继承了父类的getName方法,在子类中有两个同名的方法,难道不会引起命名冲突?
[解决办法]
呵,刚上级验证了一下,才对了2题。
SIGH~
基础十分不过关,呵!
支持楼主。
[解决办法]
以前在图书馆也经常看到这本《java解惑》,但都没把它放在心上。
呵,马上要找工作了,看来要好好加把劲才行了!
[解决办法]
好玩!去看看
[解决办法]
to bao
当然不会出错了,因为都是静态方法。所以子类方法的 getName() 就不是方法的重写,其貌似重写的作用根本没有产生,根据对象的声明,第二句只会输出的是 Parent.getName() 方法。
不是方法的重写,但是又继承了父类的同原型的方法,难道在子类中不引起冲突?不要绕过本质的问题看程序的结果,就是子类中现在有一个父类的getName方法,又有一个子类的getName方法,这样不会引起冲突吗?
[解决办法]
bu cuo..
[解决办法]
1.parent parent 因为是静态方法,而且两个引用都是parent的,所以只会调用parent的方法。
2.编译不过,把循环体加个大括号就能通过,不过我不知道这是为啥(lz能不能解释下)
3.String都可以,+0操作变成字符串拼接了。
4.0.sum返回一个biginteger的值并不改变原来的变量,所以sum = sum.add(1)这样就是6了。
5.return new ArrayList <T> (new LinkedHashSet <T> (list)); treeset是排序和hashset散列顺序(这个我不确定,好像是),LinkedHashSet维持插入次序。
[解决办法]
第二题,这样比较好理解些.
for(int i=0;i <=10;i++);
int i=0;
Integer k = new Integer(i);
原来的循环没有循环体.变量声明跟执行体不一样吧,就象类的外边写执行语句的时候要加大括号括起来一样.不知道说的对不对.说错了请指正.
[解决办法]
就对一个,郁闷。。。
[解决办法]
学习一下
[解决办法]
第四题不太明白。
[解决办法]
支持一下
我下了那本书了,真的不错...
[解决办法]
与这道题目相识:
public class TestPuzzle {
/**
* @param args
*/
public static void main(String[] args) {
Parent parent = new Parent();
Parent child = new Child();
System.out.println(parent.name);
System.out.println(child.name);
}
}
class Parent {
public static String name= "Parent ";
}
class Child extends Parent {
public static String name= "Child ";
}
原来朋友问过我,我也没有解释清楚。
[解决办法]
1,Parent Parent
2,Java Puzzlers
3,String i= " ";
4,0
5,new ArrayList <T> (new HashSet <T> (list))
这是我的答案,不知道对不对
[解决办法]
呵呵 确实不容易注意
------解决方案--------------------
1. Parent Parent
因为多态不支持静态方法,所以声明的是Parent,不管赋的是不是自类,都调用Parent的静态方法。
2. 编译不通过
因为循环体要加大括号,或者把k的声明放到循环外。
3. String i= " ";
没什么好解释的。。
4. 0
BigInteger的add方法返回值为两个数的和(BigInteger类型),而本身值不变,查看API
5. 最后一题想不出来,没法保证顺序不变。。郁闷!
[解决办法]
1、Parent Parent
2、Java Puzzlers 我没试能不能编译通过,不过我认为这样写没有问题,循环体里声明变量没问题呀,每次进循环都应该把原变量弹栈再压栈吧?
3、String i= " ";
4、0
5、不会
[解决办法]
1 Parent Parent
3 任何的String
因为是初学者所以只能回答这样的结果~
谢谢LZ支持
[解决办法]
我的答案,编译前,除2题没解出来之外其它都做出来了:
1,Parent Parent
3,String i= " ";
4,0
2题没想到居然编译错误,后来想了一下,大概是因为没有{}包起来的时候,循环N次就成了在一个区域内重复申明N次k对象,所以会出错
5题没想到一句话的解法,到是想到了一个比较麻烦的解法,就是匿名类:
return new Object() {
public List <T> remove(List <T> list) {
Set <T> set = new HashSet <T> ();
List <T> l = new ArrayList <T> ();
for (int i = 0; i < list.size(); i++) {
T t = list.get(i);
if (!set.contains(t)) {
l.add(t);
set.add(t);
}
}
return l;
}
}.remove(list);
如果不考虑缩进的话,这些代码完全可以写在一行,return之后,不知道算不算正解呢。
[解决办法]
好象二个有错,编译不能通过
[解决办法]
1 Parent Parent
2 编译错
3 String i= "wrong "
4 0
5 hashset?
感觉是这样
[解决办法]
学习了
[解决办法]
除了第三个作对了,都不对,郁闷,而且第四题的貌似在哪见过
[解决办法]
强
[解决办法]
搂住,你的小题讨论到这里应该结贴了吧?出来混,都听不容易的,给点分吧。