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

个人学习整理,如有不足之处,请不吝指教。转载请注明:@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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值