03-java运算符-函数

举报
孙中明 发表于 2022/01/23 00:03:20 2022/01/23
【摘要】 1,比较运算符 运行的结果必须是true 或者false 2,逻辑运算符  "&" 和"&&" 的区别;    单个"&",左边无论真假,右边都进行计算。   &nbsp...
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)




  















文章来源: hiszm.blog.csdn.net,作者:孙中明,版权归原作者所有,如需转载,请联系作者。

原文链接:hiszm.blog.csdn.net/article/details/51998839

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。