这是小小题目的系列之二
系列之一:http://community.csdn.net/Expert/TopicView3.asp?id=5731833做题规则:不允许进行上机操作,但可以查 API DOC,JDK 版本 1.5。1. 请问以下程序会输出什么? public class Test1 {
public static void main(String[] args) {
int num = 32;
System.out.println(num >>= 32);
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======2. 请问以下程序会输出什么? public class Test2 {
public static void main(String[] args) {
int j = 0;
for (int i = 0; i < 100; i++) {
j = j++;
}
System.out.println(j);
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======3. 请问以下程序会输出什么? public class Test3 {
public static void main(String[] args) {
boolean b = true?false:true == true?false:true;
System.out.println(b);
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======4. 请问以下程序会输出什么? import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class Test4 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Happy");
list.add("birthday");
list.add("to");
list.add("you.");
for(Iterator i = list.iterator(); i.hasNext(); ) {
String s = i.next();
System.out.println(s);
}
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======5. Queue(队列)接口是 JDK 1.5 中新增加的类库,为了让大家更好地了解它,请说出以下程序的运行结果。 import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue; public class Test5 {
public static void main(String[] args) {
Queue<Integer> queue = new PriorityQueue<Integer>(20,
new Comparator<Integer>() {
public int compare(Integer i, Integer j) {
int result = i % 2 - j % 2;
if (result == 0)
result = i - j;
return result;
}
}); for (int i = 0; i < 20; i++) {
queue.offer(i);
} for (int i = 0; i < 20; i++) {
System.out.println(queue.poll());
}
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======6. 请在以下程序段中的空白处补上最简洁的语句,在程序运行后会输出运行时的时间。 显示格式为:yyyy-MM-dd HH:mm:ss public class Test6 {
public static void main(String[] args) {
System.out.println(formatTime(System.currentTimeMillis()));
}
public static String formatTime(long time) {
return _____________________________;
}
}老规矩,需要粘帖代码运行的话,请将两个全身空格替换成一个 Tab 或者直接替换掉即可。
系列之一:http://community.csdn.net/Expert/TopicView3.asp?id=5731833做题规则:不允许进行上机操作,但可以查 API DOC,JDK 版本 1.5。1. 请问以下程序会输出什么? public class Test1 {
public static void main(String[] args) {
int num = 32;
System.out.println(num >>= 32);
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======2. 请问以下程序会输出什么? public class Test2 {
public static void main(String[] args) {
int j = 0;
for (int i = 0; i < 100; i++) {
j = j++;
}
System.out.println(j);
}
}
======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======3. 请问以下程序会输出什么? public class Test3 {
public static void main(String[] args) {
boolean b = true?false:true == true?false:true;
System.out.println(b);
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======4. 请问以下程序会输出什么? import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class Test4 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Happy");
list.add("birthday");
list.add("to");
list.add("you.");
for(Iterator i = list.iterator(); i.hasNext(); ) {
String s = i.next();
System.out.println(s);
}
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======5. Queue(队列)接口是 JDK 1.5 中新增加的类库,为了让大家更好地了解它,请说出以下程序的运行结果。 import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue; public class Test5 {
public static void main(String[] args) {
Queue<Integer> queue = new PriorityQueue<Integer>(20,
new Comparator<Integer>() {
public int compare(Integer i, Integer j) {
int result = i % 2 - j % 2;
if (result == 0)
result = i - j;
return result;
}
}); for (int i = 0; i < 20; i++) {
queue.offer(i);
} for (int i = 0; i < 20; i++) {
System.out.println(queue.poll());
}
}
}======= 我 == 是 == 题 == 目 == 间 == 的 == 小 == 分 == 隔 == 符 =======6. 请在以下程序段中的空白处补上最简洁的语句,在程序运行后会输出运行时的时间。 显示格式为:yyyy-MM-dd HH:mm:ss public class Test6 {
public static void main(String[] args) {
System.out.println(formatTime(System.currentTimeMillis()));
}
public static String formatTime(long time) {
return _____________________________;
}
}老规矩,需要粘帖代码运行的话,请将两个全身空格替换成一个 Tab 或者直接替换掉即可。
2.99
3.true
4.b h t y
其他的不会.
3题:false
本来我准备把这个答案贴上去的,发现2题和上面说的99不一样,我就运行了一下,傻眼了,居然是0.想了想,顿然醒悟,j=j++;每次j++是0,随后变为1,随后又把0赋值给j,j又成了0.真是妙啊
1 0 右移32位
2 0 java入栈和C有点不一样,入栈后值就不变了,相当于j=j,j++(右->左),j=j结果还是0
3 false
4 Happy
birthday
to
you. ArrayList顺序好像不会乱
5 19
17
...
1
20
18
...
0 优先级别6 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time));
解释下:移位操作是相对于内存的,而NUM是INT型,也就是32位,(前面27个0)10000
当移位少于32位(全长时),只需要将整个内存单元往左或往右移动指定数目
如:num >>2 ------8 num >> 3 ------4
当移位大于32位(全长时),这时存储该数的内存单元发生了变化,会将整个数字单元移到别的内存单元中,这时取到的值会是另外内存单元的值.
如:num >> 32 (恰好移到另一个单元)-----32
num >> 33 (和num>>1结果是一样的)----16
说的不对,有问题的地方还请高手们指教哈!!!!
2. 0
3. false
4. String s = i.next();要強轉
5. 先偶數排序,然后奇數排序
6. new Date(time).toLocaleString().replace("/", "-")
2. 看看这里
http://community.csdn.net/Expert/topic/5759/5759250.xml?temp=.3821833
6. 楼主太善良了~格式都写好了~
解释下:移位操作是相对于内存的,而NUM是INT型,也就是32位,(前面27个0)10000
当移位少于32位(全长时),只需要将整个内存单元往左或往右移动指定数目
如:num >>2 ------8 num >> 3 ------4
当移位大于32位(全长时),这时存储该数的内存单元发生了变化,会将整个数字单元移到别的内存单元中,这时取到的值会是另外内存单元的值.
如:num >> 32 (恰好移到另一个单元)-----32
num >> 33 (和num>>1结果是一样的)----16
说的不对,有问题的地方还请高手们指教哈!!!!----应该是
解释下:移位操作是相对于内存的,而NUM是INT型,也就是32位,(前面26个0)100000
return String.format("%tF %tT", new Date(time), new Date(time));
因为JAVA用了中间缓存变量的机制
j=j++;可换成如下写法。
temp=j;
j=j+1;
j=temp;
所以结果为0
我机器上没有JVM,试不了
false
true==fale 结果是 FALSE
--------------------------------------------------------------------------------Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
=====================================================
加入我的收藏夹时出现了这段话。
那个打印boolean值b的应该是false吧。我记得三目是右结合的。
==>boolean b = true?false:(true == true?false:true);
当时自己写程序的时候,也这样写过,但是理解成
boolean b = (true?false:true == true)?false:true;
这样了,晕了好一阵子.后来就加括号了,好理解.
2级 —— ++ -- ! instanceof
3级 —— new
4级 —— * / %
5级 —— + -
6级 —— >> << >>>
7级 —— > < >= <=
8级 —— == !=
9级 —— &
10级 —— ^
11级 —— !
12级 —— &&
13级 —— ||
14级 —— ?:
15级 —— = += -= *= /= %= ^=
16级 —— &= <<= >>= >>>=
对于移位操作是这样的
int num=32;
int wei=99;
num>>wei
num>>(wei%32)
在所有移位操作中都是对32(int类型的)取余这样就保证了位移后的正确性
第2题是0,
第三题是false bao110908(火龙果) 正确
第四题好像顺序发生变化
其余不会了
______________________________________________________这些题目按范围来划分的话,应该属于 Java 的基础知识,所以就贴在了“Java J2SE / 基础类”中的,哪些地方有陷阱希望今后值得注意一下。基础是大树的根,根不扎实何来的枝繁叶茂?我只是想通过这些题目让大家了解一些平常可能被忽视的地方。可能有人对这些题目不屑一顾,但是通过上一次的帖和这一次的帖至目前为止,参与者中没有一个人是全部答对的!
我也是遇到过这样的问题才这样说的,我遇到的是在C语言中int i = 10; i = i / i++;最后输出结果是2,我也是一直这样来理解的,但是突然有一天我无聊用java试了一下,在java中输出的是1,我一直不理解在java中为什么会是1,后来问别人才知道java和c的处理不一样,并且java的处理在语言规范中已经做了规定.而标准C对此并没有做规定,所以各个C编译器的实现就不同,还是上面的代码你拿到VC和GCC中结果又会不同.
public static void main(String[] args) {
boolean b = ((true?false:(true == true))?false:true);
System.out.println(b);
}
运行结果是true啊
第一道题很奇怪:
解释下:移位操作是相对于内存的,而NUM是INT型,也就是32位,(前面27个0)10000
当移位少于32位(全长时),只需要将整个内存单元往左或往右移动指定数目
如:num >>2 ------8 num >> 3 ------4
当移位大于32位(全长时),这时存储该数的内存单元发生了变化,会将整个数字单元移到别的内存单元中,这时取到的值会是另外内存单元的值.
如:num >> 32 (恰好移到另一个单元)-----32
num >> 33 (和num>>1结果是一样的)----16
说的不对,有问题的地方还请高手们指教哈!!!!----应该是
解释下:移位操作是相对于内存的,而NUM是INT型,也就是32位,(前面26个0)100000
------------------------------------------
好象是这样的吧
移位操作符右边的参数要先进行模的32运算.并且移位是对二进制的操作,而二进制中8位是一个循环.所以num>>32就等于原值.num>>33 == num>>25 ==num>>17==num>>9==num>>1;
就好象1<<35的值与1<<3的值是相等的都为8.
String s = i.next();
怎么编译通不过,我用的是jdk1.6
System.out.println(s);
}
应该是false,不应该是true.我运行了下.
并且按照楼主的意思boolean b = true?false:((true == true)?false:true);
也应该是fasle.
----------------------------------------
yingrihong 的这种分割违反了运算符的规定
boolean b = ((true?false:(true == true))?false:true);
虽然这样运算的是true
String s = i.next();能编译通过?
呵呵
但是答案应该是FALSE啊
我自己做了下
也在机器上运行看了下 应该是false的
我没看清楚
没有错他
是我看括号太多了
没看清楚
向yingrihong道歉
呵呵
不好意思
第二个就没有想明白拉。究竟是为什么呢?全局变量个区域变量我都试过拉,但是结果都是0,我真的没有办法理解。
我觉得这个说法不太对哦 尽管是先赋值再加 但是 那个 左边的j 还是不是 j 既然是那为什么没有自曾?27楼说的不错可以这样理解 j++ 返回的是一个临时变量 所以在赋值的时候 左边的 j 其实已经 +1 了
但是 又被右边的 返回了临时变量的 j 给覆盖掉了知道C++ 中操作符 重载的 应该明白我在说什么吧