1、在Java中,下列赋值语句正确的是(ACD).(选择二项)
A) char c='a';
B) char c="a";
C) char c=97;
D) char c=new Character('a');这道题目说选择两项,但是我运行以后,发现ACD都是正确的,是题目的问题,还是其中另有蹊跷呢?
---------------------------------------2、给定某java程序片断,如下:
int i=1;
int j=i++;
if((i>++j)&&(i++==j))
i+=j;
System.out.println(i);
给程序运行后,i的输出结果是()。(选择一项)
A) 1 B) 2 C) 3 D) 4这道题,我运行以后的结果是2,应该选B。
但是其中的if语句的i>++j是不成立的啊~
这是为啥呢?
---------------------------------------3、给定一个java程序的代码片段如下,编译运行后的输出结果是()。(选择一项)
Char c=’a’;
Int i=c;
Float f=i++;
Byte b=(byte)(f+1);
System.out.println(c+”,”+i+”,”+”+f+”,”+b);
a)a,97,97.0,98
b)a,97,97,98
c)a,98,97.0,98
d)a,98,97,98
这道题,运行结果是C
但是,首先a的ASCII是97,i就应该是97,跟着,f就应该是98.0,b就应该是99
可是为什么结果会是C呢?
---------------------------------------4.在JAVA中,以下几种声明内容类A的方式错误是()。(选择一项)
A)public class Test{
  private class A{}}
B)public class Test{
  public class A extends Test{}}
C)public class Test{
  package db;
  public class A{}}
D)class Test{
  protected class A{}}
这道题有点蒙,为啥有那么多的public呢?

---------------------------------------5.输出结果是
1.Public class test { 
2. Public static void main (String args[]) { 
3. System.out.printIn (6 ^ 3); 
4. }
5.}
我运行了程序,结果是5
^这个运算符应该是幂运算吧~为啥会是5呢?
---------------------------------------6.输出结果是
1. public class Foo { 
2. public static void main (String [] args) { 
3. StringBuffer a = new StringBuffer (“A”); 
4. StringBuffer b = new StringBuffer (“B”); 
5. operate (a,b); 
6. system.out.printIn{a + “,” +b}; 
7. }
8. static void operate (StringBuffer x, StringBuffer y) { 
9. x.append {y}; 
10. y = x; 
11. }
12. } 
A. The code compiles and prints “A,B”. 
B. The code compiles and prints “A,A”. 
C. The code compiles and prints “B,B”. 
D. The code compiles and prints “AB,B”.            
E. The code compiles and prints “AB,AB”. 
运行结果是D,也就是说在operate函数中,y的值没有变化,可是第10行x已经赋值给了y,为什么y的值不变呢?
---------------------------------------7.求第五行j的十进制值是多少
1. public class test { 
2.   public static void main (String args[]) { 
3.     int i = 0xFFFFFFF1; 
4.     int j = ~i; 
5. 
6.   } 
7. }
A. 0 
B. 1     
C. 14 
D. -15 
E. An error at line 3 causes compilation to fail. 
F. An error at line 4 causes compilation to fail. 
这道题我完全没明白啥意思,我运行了的是14(估计是16进制的),答案给的是1.我想,就算是十进制的1,转化成16进制的话,也应该是1啊~

解决方案 »

  1.   

    1.其实只有a,d正确,char赋值要加''才正确;c不是的那是int的赋值方式
    2.
    3.数据类型不一样!
    4.在子方法中导入父类方法吧6.结果没返回
      

  2.   

    1:AC正确,至于D为什么错,请用JDK1.4或以下版本的环境去试验
    2:if确实不成立,但是if前i就已经等于2了
    3:跟上题一样,只要有这个东西i++,不管在等号右边还是左边还是没等号,运算后i就已经自增1了
    4:请去搜索"内部类"
    5:^位异或...
    6:进方法后,x的引用地址是a的引用地址,y的引用地址是b的引用地址,x.append(y);实际上改变的是a(x和a都是同一个引用地址),而y=x;这句,实际上是把y的引用地址改变成了x的引用地址,而b没有改变任何东西
    7:0x开头表示是16进制,~是按位取反,先把i转成2进制,然后1变0,0变1,然后在转成10进制就是答案了我觉得LZ还是应该加强一下基础
      

  3.   

    1:int型是有符号的32位整数,而char是无符号的16位整数,说白了,一个char就是一个int,因此,AC表示都正确,D是在JDK
       5.0以上版本才正确,因此JDK以上版本增加了自动装箱拆箱。所以答案是ACD
    2:i++;是i先取值,后自加1,因此int j=i++;就是i取值1赋给j,而后i自加1变成了2,所以if(false),直接执行打印语句  所以i是2
    3:a的ASCII是97,但你的第三行,Float f=i++; 这儿有个i++了,所以i先取值97赋值给f(需要强制类型转换),而后i就自加1,所以你打印的i就是98,你可以在Float f=i++; 之前加个打印语句System.out.println(i);---->97
    4:这个是内部类,内部类你可以看成是外部类的一个方法,方法可以public,内部类也就可以public
    5::^位 异或  就是相同为假,不同为真,6的2进制是110   3的2进制是11,所以一^就成了101 == 5
    6:这个是Java值传递的问题,你这个例子在我博客里有,来我博客看下啊:
       http://blog.csdn.net/niuniu20008/archive/2008/09/19/2953785.aspx
    7:我也不大确定答案,按我理解应该是Apublic class Test { public static void main(String[] args) {

     int i = 0xFFFFFFF1; 
     int j = ~i; 
     
     System.out.println(Integer.toBinaryString(i));
     //i的补码是:11111111111111111111111111110001
     
     System.out.println(Integer.toBinaryString(j));
     //j的补码是:1110
     //110转变成原码就是0001了,就是十进制的1
    }
    }
      

  4.   

    2.是不成立啊,但程序还是要走到System.out.print(i)呀
      

  5.   

    2:i++,是先赋值再加1,++i,先加1再赋值。例如int i=1; int f=i++; int f=++i;第一个f=1,第二个f=2,但两个式子的i都是2
      

  6.   

    1、在Java中,下列赋值语句正确的是(ACD).(选择二项) 
    A) char c='a'; 
    B) char c="a"; 
    C) char c=97; 
    D) char c=new Character('a'); 这道题目说选择两项,但是我运行以后,发现ACD都是正确的,是题目的问题,还是其中另有蹊跷呢?a肯定正确了 b不对是因为b用了“既然用了”肯定就是字符串了。所以不对。c呢是可以这样用的啦。因为java会讲97当做字符的code代码所以得到的还是'a';
    d对的话。我没有试过。但是Character这个并不是拿来这样用的。它是用来做包装的。 new出来的话就生成了一个对象了。呵呵。2、给定某java程序片断,如下: 
    int i=1; 
    int j=i++; 
    if((i>++j)&&(i++==j)) 
    i+=j; 
    System.out.println(i); 
    给程序运行后,i的输出结果是()。(选择一项) 
    A) 1 B) 2 C) 3 D) 4 这道题,我运行以后的结果是2,应该选B。 
    但是其中的if语句的i>++j是不成立的啊~ 
    这是为啥呢? int i=1;   这时i是1
    int j=i++; 这时 j是1 然后i做了++是2
    if((i>++j)&&(i++==j)) 
    i+=j; 的却不成立;
    输出 i  结果 是 2;
    3、给定一个java程序的代码片段如下,编译运行后的输出结果是()。(选择一项) 
    Char c=’a’; 
    Int i=c; 
    Float f=i++; 
    Byte b=(byte)(f+1); 
    System.out.println(c+”,”+i+”,”+”+f+”,”+b); 
    a)a,97,97.0,98 
    b)a,97,97,98 
    c)a,98,97.0,98 
    d)a,98,97,98 
    这道题,运行结果是C 
    但是,首先a的ASCII是97,i就应该是97,跟着,f就应该是98.0,b就应该是99 
    可是为什么结果会是C呢? Char c=’a’;   97
    Int i=c;         97
    Float f=i++;     97.0  98 这里i要在运算完后自增1。
    Byte b=(byte)(f+1);   98  
    System.out.println(c+”,”+i+”,”+”+f+”,”+b); 结果是  a, 98, 97.0 , 98  
    5.输出结果是 
    1.Public class test { 
    2. Public static void main (String args[]) { 
    3. System.out.printIn (6 ^ 3); 
    4. } 
    5.} 
    我运行了程序,结果是5 
    ^这个运算符应该是幂运算吧~为啥会是5呢? 
      

  7.   

    2、给定某java程序片断,如下: 
    int i=1; 
    int j=i++; 
    if((i>++j)&&(i++==j)) 
    i+=j; 
    System.out.println(i); 
    给程序运…
    [/Quote]int j=i++;这句,i++自增了1,不进IF ,所以输入的I是23、给定一个java程序的代码片段如下,编译运行后的输出结果是()。(选择一项) 
    主要是句Float f=i++; I是先赋值再自增 
     
      

  8.   

    ZangXT解释下第7题,我也不会这题啊
      

  9.   

    答:第七题很简单啊
    int i = 0xFFFFFFF1; 
    此时i在内存中的二进制位是:11111111111111111111111111110001int j = ~i; 
    此时j在内存中的二进制位是:00000000000000000000000000001110
    一个数的补码是:00000000000000000000000000001110,问:这个数是多少?
    答:因为最高位是0,表示是正数,而正数的补码就是其自身的二进制数的表示(只有负数才要所有位求反再加上),故值是:14(十进制)