黑马程序员之java编程基础2

来源:互联网 发布:09外设淘宝店地址 编辑:程序博客网 时间:2024/05/01 12:50

     ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

一:运算符
1 )算数运算符:
  示例:
class OperateDemo
{
   public static void main(String[] args)
   {
    int x=4270;
   
    x=x/1000*1000;          
    

System.out.println(x);//结果是4000
   }
}
     

     取模(&):其实就是取余数。规律:左边如果如果小于右边,结果是左边。左边如果等于右边,结果是0。右边是1结果是0.如果出现负数只看左边,左边是多少
                          就是多少,其他的不用管。 例如1%-5=1
     自增(++): int a=3,b;  
                          b=a++;     结果是a=4 b=3  b=a++是什么意思? a++的意思是++叫做给a这个变量中的值进行一次加1操作,并把加1操作后的值重新赋给a。
                                            理解b=a++  这里边有一个先后顺序的问题,a先运算赋给b,所以b=3;
                          int a=3,b;  
                          b=++a;    结果是a=4 b=4   
      +:字符串相连接              记住一句话:字符串数据和任何数据使用+,最终结果都会变成变成字符串。  把固定的放到双引号里边去,不固定的和双引号的哥们相连接就可以                                                                           了。
                                                       
2 )转义字符:通过反斜线\来转变后边字母或者符号的含义。 转义字符要写在被转义字符的前边。
                         \n代表换行, \b代表退格 ,\t代表制表符, \r代表按下回车键。|
                          在linus系统里边换行是由一个字符来表示的,就是\n。而在windows里边是有2个组成的,一个是\n,一个\r, 在DOS里边直接识别\n。
                         

3 )赋值运算符 = += -=  *= /=  %=

  short s=4;
  s=s+5;
  s+=5;  有什么区别?  s=s+5编译失败,因为s会被提升为int类型的,运算后结果还是int类型,无法赋值给short类型的。
      s+=5编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。


4 )比较运算符        ==相当于  !=不等于   <   >  <=  >= 
                                注意:比较运算符的结果都是boolean类型的,也就是要么是trus,要么是false。
                                比较运算符==不能误写成=。
  

5) 逻辑运算符    用于连接boolean类型的表达式。  符号有& | ^  !  &&  ||
                   与符号的特点:只要两边的布尔型表达式结果有一个为false,那么结果就是就是false,只要两边都为true,那么就为true。
                   或符号的特点:只要两边有一个为true,结果为true,只要两边都为false,结果为false。
                 异或符号的特点:两边相同结果是假,两边不同结果是真。
                    &&:当左边为假是右边不运算,短路了。当左边为真时,右边运算。
            ||:当左边为真时,右边不运算。


6) 位运算符  指的是二进制位运算 做运算的时候用位运算是最快的  包括<<左移  >>右移  >>>无符号右移          多出来的去除,空位拿0补
  <<:其实就是乘以2的移动位数次幂.
                                >>:其实就是除以2的移动位数次幂。 右移最高位补什么由原来数据的最高位而定,如果最高位是0,右移后用0补空位。如果最高位是1,右移后用1补空位。
     无符号右移: 无论最高位是什么,右移都用0补。


二 练习运算
1):与运算:6&3=2; 是怎么算的呢?首先把数都换成二进制的形式。 规律就是把1看成真,把0看成假。
                         110
                        &011 
        ————
010      
或和异或运算:和与运算是同理的。
反码:先把数换算成二进制的,然后取反减去1等于一个结果,然后再取反,换算成十进制就好了。
7^4^4=7  结论:一个数异或同一个数两次,结果还是那个数。

2)  最有效率的方式算出2*8等于几? 答案是2<<3

3)  对两个变量的值进行互换?

class OperateDemo2{public static  void  main(String[] args){         //对两个变量的值进行互换   //1通过第三方变量. int n=3,m=8; System.out.println("n="+n+",m="+m);  /* int temp=n;       n=m; m=temp;*/ //2不通过第三方变量/*n=n+m;m=n-m;n=n-m;*///3不通过第三方变量 n=n^m; m=n^m; n=n^m; System.out.println("n="+n+",m="+m);      }}    



4  )三元运算符:格式(条件表达式)?表达式1:表达式2;如果是true,就执行表达式1,如果是false,就执行表达式2.

例如 int x=3,y;

                y=(x>1)?100:200;

          System.out.println("y="+y); 结果是y=100


5 )    如何用代码获取60的二进制表现形式呢?

   

class OperateDemo3{public static void main(String[] args){ //60的二进制的获取用代码怎么实现呢? int num=60;  //获取60的最低4位,通过&15     int n1=num&15;     System.out.println((n1>9)?(char)(n1-10+'A'):n1);                    //要获取下一组4位,将60右移4位。     int temp=60>>>4;                 //对temp值进行最低四位的获取。     int n2=temp&15; System.out.println((n1>9)?(char)(n2-10+'A'):n2);   }        }  
  ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------




0 0