个人学习整理,如有不足之处,请不吝指教。转载请注明:@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 的值就加一了。