【面试那些事】--基础部分--1

来源:互联网 发布:淘宝休闲零食数据 编辑:程序博客网 时间:2024/06/06 03:26

个人学习整理,如有不足之处,请不吝指教。转载请注明:@CSU-Max

1、下面的程序执行的结果是什么?

public   class  Demo1 {     public   static   void  main(String[] args) {        System. out .println( "W"  +  "E" );        System. out .println( 'W'  +  'E' );    } }


打印的结果不是 WE 和 WE ,而是 WE 和 156。为什么会出现这种情况呢?
对于第一种情况,打印方法的参数是表达式 "W" + "E",由于使用的双引号,可见是两个字符串,所以这个执行的是两个字符串的拼接;对于第二种情况,就不一样了,'W' + 'E'表示的是两个字符型常量,是基本数据类型,由于这两个操作数都不是字符串类型,所以执行的是加法而不是字符串的拼接。编译器在计算表达式'W' + 'E' 时,是先将 char 类型转换为 int 类型,'W' 对应87,'E'对应69,所以结果可想而知。
那么我们怎么样将两个字符连在一起呢?
我们可以在表达式前面加一个空字符串(“”),这种方法我们在编写代码的时候经常使用;或者我们可以使用StringBuffer类来处理,在处理IO的时候很常见;还有一些其他的方法,比如强制类型转换等。

//方法1        StringBuffer sb =  new  StringBuffer();        sb.append( 'W' );        sb.append( 'E' );        System. out .println(sb);        //方法2              System. out .println( ""  +  'W'  +  'E' );

最后,给出一个拓展,具体的解释就不多说了。

      System. out .println( "1+1= "  + 1 + 1);               //the result is-->  1+1= 11

2、分析一下的程序。

private   static   int   x ;     public   static   void  main(String[] args) {         name ( x );        System. out .println( x );    }     public   static   void  name( int  x){        x++;     }//the result is --> 0

在类中定义了一个静态变量 x 和静态方法 name(int x),注意其中的参数名和静态变量名是相同的,在进行 x++运算
时,改变的是参数 x 的值而不是静态变量 x 的值。
若是改成以下代码,结果又是什么呢?

 private   static   int   x ;     public   static   void  main(String[] args) {        name ( x );        System. out .println( x );    }     public   static   void  name( int   y ){         x ++;     }// the result is --> 1

修改之后, x++ 就是针对静态变量 x 操作的,因此 x 的值就加一了。











0 0
原创粉丝点击