学习java第二天,经典题交流分享

请说出下面的运算结果及解释为什么

1、System.out.println(1+1+“1”);//?

此代码输入的结果为:21,代码中的1+1是对两个整数1进行了相加,之后的+”1”,会被程序认为是一个字符串与前面两个整数相加的结果相连接,所以结果为21

2、System.out.println(“1”+1+1);//?

此代码输入的结果为:111,代码中前面的”1”+会被程序认为是一个字符串,这里需要注意,如果””+是放在执行程序的前面,那么整段程序都将为看成是字符串的连接,所以结果为111

结果验证:

验证:System.out.println(1+1+“1”);和 System.out.println(“1”+1+1);

代码如下:

/**

*作用:验证System.out.println(1+1+“1”);//?和System.out.println(“1”+1+1);//?

*作者:李林雄

*/

public class Test2{

     public static void main(String[] args){

         //输出代码的结果,进行验证

         System.out.println(1+1+"1");

         System.out.println("1"+1+1);

     }

}

代码结果:

 21

111

 

实现两个整数变量的交换

代码如下:

/**

*作用:两个整数变量的交换

*作者:李林雄

*/

public class Test3{

         public static void main(String[] args){

                   //定义三个变量,并赋值给其中两个变量

                   int a=9,b=10,c;

                   //将变量a先赋值给变量c;

                   c = a;

                   //将变量b赋值给变量a;

                   a = b;

                   //将以前已经得到a的值的变量c在赋值给变量b

                   b = c;

                   //打印两个变量,验证查看值是否发生变换

                   System.out.println("a = "+a);

                   System.out.println("b = "+b);

         }

}

执行结果如下:

 a = 9

b = 10 

求三个整数中的最大数

代码如下:

/**

*作用:求三个数中的最大数

*作者:李林雄

*/

public class Test4{

         public static void main(String[] args){

                   //定义四个变量,其中不给max赋值,max用于来接收三个数中的最大值

                   int a = 10,b = 20,c = 30,max;

                   //使用三目运算符判断a和b中的最大值,并将最大值赋给变量max

                   max = (a>b)?a:b;

                   //在使用a和b中的最大值max与b比较大小,在将最大值赋给max

                   max = (max>c)?max:c;

                   //打印三个数中的最大值

                   System.out.println("三个数中的最大值为:"+max);

         }

}

运行结果如下:

 三个数中的最大值为:30

 

某查询结果的记录数为66条,每页显示10条,请计算总页数有几页?

代码如下:

/**

*作用:某查询结果的记录数为66条,每页显示10条,请计算总页数有几页?

*作者:李林雄

*/

public class Test5{

         public static void main(String[] args){

                   //定义两个浮点型变量a,b

                   int a = 66,b=10;

                   //用计算总记录除以每页数显示的记录条数,得到总页数

                   int c = (int)(a/b+1/3.0*3);

                   //输出页数的数量

                   System.out.print("显示的总页数为:"+c);

         }

}

输出结果如下:

 显示的总页数为:7

注意:由于页数不能为小数,只能为一整页,所以页数应该为7

 

 

设计一个实验证明&和&&的区别

代码如下:

/**

*作用:设计一个实验证明&和&&的区别

*作者:李林雄

*/

public class Test6{

         public static void main(String[] args){

                   //定义两个boolean类型的变量

                   boolean b,c;

                   c = false&&b;

                   System.out.println(c);

         }

}

以上代码输出的结果为:

 false

 

这里我们并有给变量b赋予boolean值,使用&&能正常将结果执行出来,同样的我们将&&(短路或)改成&(逻辑或)

代码如下:

/**

*作用:设计一个实验证明&和&&的区别

*作者:李林雄

*/

public class Test6{

         public static void main(String[] args){

                   //定义两个boolean类型的变量

                   boolean b,c;

                   c = false&b;

                   System.out.println(c);

         }

}

代码执行结果如下:

 报错

我们在使用javac对代码进行编译就已经发生报错,这里是因为在代码“c = false&b;”使用的是&(逻辑或)即使在第一个参数“false”已经可以判断代码执行的结果,但是它还是要往后面执行,由于b并没有初始化,所以发生已上错误,而如果使用的&&(短路或)在执行代码“c = false&b;”的时候从第一个参数就已经可以判断代码的执行结果了,所以就不在往后执行,即使b变量没有初始化,但是代码没有执行,于是就没有发生错误。

 

第二种验证方法:

/**

*作用:短路与逻辑与的验证

*作者:李林雄

*/

public class Test7{

         public static void main(String[] args){

                   int n=10;

                   boolean b = false&(n=1)>1;

                   System.out.println(n);

         }

}

输出结果:

 0

 

讲以上代码改为:

 

/**

*作用:短路与逻辑与的验证

*作者:李林雄

*/

public class Test7{

         public static void main(String[] args){

                   int n=10;

                   boolean b = false&&(n=1)>1;

                   System.out.println(n);

         }

}

输出结果为:

 10

同理,&&得出结果为false之后不再运算后面的算法,而&还要运算,导致n的值不一致

posted @ 2017-03-28 20:15  java李  阅读(201)  评论(0编辑  收藏  举报