03-java运算符-函数

1,比较运算符


运行的结果必须是true 或者false


2,逻辑运算符
 "&" 和"&&" 的区别;

   单个"&",左边无论真假,右边都进行计算。

   双个"&",左边为假,右边不进行计算。

  "|"和"||" 的区别;

   单个"|",左边无论真假,右边都进行计算。

   双个"|",左边为真,右边不进行计算。

   异或^

  true^true =false

  两边一样是false 不一样true

  其他 和   |  或一样


 "|"和"&" 做位运算

    二进制进行|位运算,只有0|0时候为0 ,其他为1,比如6|5 先把6和5换成二进制。6的二进制为110,5的二进制为101 那么用位运算0|0得0 只要有1得1,算出为111,111换成十进制为7,所有6|5等于7

    二进制进行&位运算,只有1&1得1,其他得0,同理可得6&5算出二进制得100,100换成十进制为4

"^"异或运算和"~"反码

   任何相同二进制异或运算都得0,1^1=0,0^0=0,不相同的异或运算都得1,1^0=1,0^1=1。同理6^5的011

那么011的十进制是3。、

提示一个数异或两次变回本身。比如6^5^5的 110,101,101。先得011,再得110所有又变回原来的数值,此技巧可以用来转换数值,不需要第3个变量即可两个变量值互转。


3,位运算符


计算

&

6&3为2

    110

& 011

    010=2

|

6|3为7

        110

    & 011

        111=7

^

6^3为5

    110

  ^011

    101=5

 ^ 011

     110


6^3^3为6


一个数异或同房一个数两次 结果不变(实际引用加密)


~

反码


~6为-7



 "<<"左移"     >>"右移"      >>>"无符号右移

原理

    左移:空缺补0,被移除的高位丢弃,空缺位补0,比如32位二进制 0000....00011左移3位变成了0...00011xxx,则xxx补足000即可。规律左移是基数乘以2的移位幂次方,比如3<<2则是3*2*2也就是3乘以2的2次幂。

    右移:最高位是什么就补什么。高位是1补1,是0就补0.,规律左移是基数除以2的移位幂次方,比如3>>1则是3/2也就是3除以2的1次幂。

    无符号右移:无论高位是0还是1都补0

巧记

<<

3<<2  3*2的2次方=12

>>

8>>2为=2



2*8乘法原理

                0010

              *1000

                   0000

               0000   

             0000

          0010

               10000=16



面试题:

要求ab的值交换

(不用第三变量int c;c=a;a=b;b=c;)


1,整数过大时,容易强制转换,数据变化

a=a+b;

b=a-b;

a=a-b;

2,

a=a^b;

b=a^b;

a=a^b;

一个数异或同房一个数两次 结果不变(实际引用加密)


4,三元运算符

格式:

条件表达式)?表达式1表达式2

条件成立就是表达式1

条件不成立就是表达式2

c=(1>0)?66:77;

结果c=66;



5,程序流程结构


判断结构

循环结构

顺序结构


条件语句:

 

格式1

if(条件关系式)

{

       语句块1

}

 

 

 

 

格式2

if(条件关系式)

{

       语句块1

}

else

{

       语句块2

}

 

关系运算符:

 

等于              ==

不等于           !=

大于              >

大于等于       >=

小于              <

小于等于       <=

 

 

逻辑运算符:

 

           

           &&

           ||

 

 

 

for循环语句:

for(循环变量=初始值;循环变量<=终止值;循环变量=循环变量+步长值)

{

       循环体语句;

}

 

for(循环变量=初始值;循环变量>=终止值;循环变量=循环变量-步长值)

{

       循环体语句;

}

 

for(循环变量=初始值;循环变量<=终止值;循环变量=循环变量*步长值)

{

       循环体语句;

}

 

 

while循环语句:

当关系表达式成立时,执行循环体中的语句,然后返回重新检验关系表达式是否成立,若不成立则不执行循环体中语句,结束循环。

while(关系表达式)

{

       循环体语句块;

}

 

 

 

do...while循环语句:

首先执行循环体中语句块,然后检验关系表达式是否成立,若成立,则继续执行循环体中语句,否则,结束循环。

do

{

       循环体语句块;

}while(关系表达式)

 

数组的声明方法:

数据类型  数组名称[ ]=new 数据类型[元素个数];

数据类型  数组名称[ ]={数据集合};

例如:

double  s[]=new double[20];

double  t[]={12,34,56,78,98};

 

数组的输入模块:

int i;

for(i=0;i<20;i=i+1)

{

       a[i]=Math.floor(Math.random()*(N-M+1))+M;

}

for(i=0;i<5;i=i+1)

{

       s1=input1.readLine();

       a[i]=Double.parseDouble(s1);

}

数组的输出模块:

for(i=0;i<20;i=i+1)

{

       System.out.println(a[i]);

}

 

随机函数的使用:

随机函数:Math.random()

         返回[0,1.0) 之间的随机数。0<=Math.random()<1

 

生面某范围内随机整数:

1  产生0~1这间的随机小数x

 x=Math.random( );

 

2  产生[0n]这间的随机整数x

 x=(int)Math.floor(n+1)*Math.random( ));

 

3  产生[mn]范围内的随机整数x

 x=(int)Math.floor((n-m+1)*Math.random( )+m);



(注:部分资料引用于http://my.oschina.net/bozhi/blog/179585)




  















posted @ 2016-07-22 20:54  孙中明  阅读(110)  评论(0编辑  收藏  举报