A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、/*
面试题:下面的语句有没有问题,如果有,请解释。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
有问题,在byte b3 = b1 + b2;报错。
解释:
       b1 + b2在参与运算的时候,首先会自动转换成int类型。
       在这个时候,b1b2其实都被提升了类型。所以,他们的计算结果也应该是int类型。
       最终,就相当于直接把int类型赋值给byte类型,所以,会有精度的损失。
       如果参与运算的是常量,编译器会先计算值,在看该值是否是左边能够表示的范围。如果是,就不报错。
*/
classVariableDemo4
{
       public static void main(String[] args)
       {
              byte b1 = 3;
              byte b2 = 4;
              byte b3 = (byte)(b1 + b2);
              byte b4 = 3 + 4;
              System.out.println(b3);
              System.out.println(b4);
       }
}
二、
public class Test {
    public staticvoid main(String[] args) {
        int i = 1;
        i = i++;//1
        i=++i;//2
       System.out.println(i);
    }
}
①把变量i的值取出来,放在一个临时变量里(我们先记作temp);
②把变量i的值进行自加操作;
③把临时变量temp的值作为自增运算前i的值使用,
在本题中就是给变量i赋值。因此,经过以上三步操作以后,
虽然变量i在第②步操作中进行了自增运算,
但第三步操作以后又把原来的值赋给了它,故最后输出结果为1
三、
short s = 5;
              //s = s + 2; //报错
              s += 2;   
              System.out.println(s);
注意:
              虽然a+=20a=a+20效果等价,但是还是有些区别。
              +=这种赋值运算符,其实隐含了强制类型转换功能。
              也就是说:
                     short s = 5;
                     s+=2;
                     等价于
                     s = (short)(s+2);
四、
/*
       面试题:
              请自己实现两个整数变量的交换
              注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。
*/
class OperatorTest{
       public static void main(String[] args) {
              int a = 10;
              int b = 20;
              
              System.out.println("a:"+a+",b:"+b);
              
              //方式1:使用第三方变量(开发中用的)
              /*
              int c = a;
              a = b;
              b = c;
              System.out.println("a:"+a+",b:"+b);
              System.out.println("------------");
              */
              
              //方式2:用位异或实现(面试用)
              //左边:a,b,a
              //右边:a ^ b
              /*
              a = a ^ b;
              b = a ^ b; //a ^ b ^ b = a
              a = a ^ b; //a ^ b ^ a = b
              System.out.println("a:"+a+",b:"+b);
              */
              
              //方式3:用变量相加的做法
              /*
              a = a + b; //a=30
              b = a - b; //b=10
              a = a - b; //a=20
              System.out.println("a:"+a+",b:"+b);
              */
              
              //方式4:一句话搞定
              b = (a+b) - (a=b);//b=30-20=10,a=20
              System.out.println("a:"+a+",b:"+b);
       }
}

Java练习题(试卷).pdf

286.53 KB, 下载次数: 61

评分

参与人数 1技术分 +2 黑马币 +15 收起 理由
杨佳名 + 2 + 15

查看全部评分

2 个回复

倒序浏览
大神就是牛!  带我装X带我飞,  少林功夫就是好!!!
回复 使用道具 举报
超凡凡凡凡 发表于 2015-3-17 22:52
大神就是牛!  带我装X带我飞,  少林功夫就是好!!!

应该在开个尼姑庵来:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马