java第二篇

目标:明确一下java中的运算符有哪些,并将它们分类,让人们大致了解运算符有什么,知道他们的优先级,告诉人们在书写运算符的时候需要注意的事项
我打算将运算符分类写:


运算符讲解:


基础知识:
1.在程序中所有的运算符都需要是英文类型的,否则程序就会报错。
2.Java 的表达式就是用运算符连接起来的符合Java 规则的式子.
3.在所有运算符中中括号[]的优先级是最高的,无论和什么运算符的优先级进行比较,小括号()是除了中括号之外的优先级最高的。


要想了解运算符,我们首先需要搞清楚什么叫做N目运算符(又叫做N元运算符),这个将来会帮助我们用来区分运算符的优先级(在没有括号的情况下),是一个很重要的概念。运算符分为三类,其中包括单目运算符,双目运算符,三目运算符。一目运算符是只有一个操作数的情况,举个例子:“-”这个符号代表负号的时候,那么他就是一元运算符。它只用一个数据就可以表示他的功能,-5、-6.这就是表示一个负数。同样的二元运算符就是在表示它的功能时,至少需要两个数才能完整的表示。例如“+”,这个符号在这里表示相加运算符,就是两个数相加。这个就不用说了。大家在日常生活中的算数就是了。三元运算符的概念也是类似,需要有三个操作数才能完整的使用这个运算符。





运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符:
一、算术运算符:
单目:+(取正)-(取负) ++(自增) - -(自减),其中取正和取负运算符是需要放在操作数的前面。
自增与自减运算符却分为了两种:一是放在操作变量的后面,二是放在操作变量的前面。记住是操作变量,不是操作数。
取正和和取负运算符我在练习中遇见的次数较少,但是我并不是说他不重要。现在我重点说一下自增与自减运算符。
当自增与自减运算符放在操作变量的后面的时候,表示先传值后运算(加一或者是减一,操作的是一个int类型的数值)。
例子:int a = 1;
        for(int i = 1;i<10;i++){
        System.out.println(a++);
        }
        这样的他的第一次输出的数值为1(这是最关键的地方),之后依次加一,即1、2、3、4、5、6、7、8、9。到9结束。(特别声明,真正的!!输出形式!!不是这个样子的)
当自增与自减运算符放在操作变量的前面的时候,表示先运算后传值(即先加一或者是减一,操作的是一个int类型的数值)。
例子:int a = 1;
        for(int i = 1;i<10;i++){
        System.out.println(++a);
        }
        这样的他的第一次输出的数值为2(这是最关键的地方),之后依次加一,即2、3、4、5、6、7、8、9、10。到10结束。(特别声明,真正的!!输出形式!!不是这个样子的)


双目:+   -   *   /   %(取余)   这些运算符与大家日常生活中的使用方式相同,但是还是特别的需要说明一下取余运算符%,它的含义是两个数相除,将运算的中的余数赋值给变量,
例子:int a = 5%13;这个变量a所被赋的值为5。因为5除以13得0余5。这个就是取余运算符的使用方法。并且操作数可以是浮点型也可以是整数型。


三目:a>b?true:false   语法为:条件表达式(这个表达式中包含一个关系运算符,可以是“>”"<""!="等等)?表达式1:表达式2。 
根本性质:三元操作符是if-else的简化写法。(之后会讲)   
三目运算符是相比之下很重要的一种运算符,这种运算符可以帮助我们解决很多的问题。
他的比较官方的说明是:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果为真执行第一个,否则执行第二个。
我自己简单的阐述就是,三元运算符会首先对于最左侧的条件(一个表达式)进行判断,当a确实大于b的时候,将true所在位置的值或者对象赋值给变量,如果a不大于b的时候就将false位置的值或者对象赋值给变量。
三目运算符的应用:1.可以用来判断两个数的大小值,这样我们就不需要苦恼输入的两个数的大小顺序了,利用三目运算符就可以自动的判别出来。他可以帮我们找出两个数字中的较大值,也可以找出较小值,只需要我们在条件的表达式的位置进行相应的修改。
例子:找出最大值:int max = 5>4?5:4;      找出最小值:int min = 5>4?4:5;   这样就行了
2.用来做一些判断所用,一般会放在if语句的条件处,决定进入if语句的条件。
3.要知道三元运算符可以嵌套使用。这一点关系到我们能否灵活的使用三元运算符。


二、赋值运算符:
=   +=    -=    *=     /=    %=    &=    ^=    |=    <<=    >>=
赋值运算符是一个等于号“=”,它的意思是将等号右边的数赋值给左边,这点在新手中常会犯错,或者不能够理解,经常和生活中的数学符号弄混,是一个基础的易错点。
之后的运算符的使用都是一个套路,我现在讲解一个例子,我们就拿“+=”这个运算符进行讲解一下:这个运算符的使用方式是:
首先我们顶一个变量,但是注意了,这个时候!!!必须要有初始值!!!。如果没有初始值系统就会报错。
我们给一个例子:
int a = 0; a+ = 1;    这个式子相当于a = a+1;  简单吧,其实吧没有什么难度,只是要大家明白这个运算符的用法。
其它的运算符用法一致,就是这个套路,这个意思。 




三、关系运算符:
等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。
“==”这个才是我们在数学中的等于符号,这是一个很重要的地方,并且它的根本含义是比较存储地址,也就是说当两个变量或者数字再或者是字符(串)等的储存地址相同的话他就会返回一个true,相反如果他们的地址值不相等的话,那么就会返回一个false的。这里有一点就是等于运算符的优先级大于赋值运算符的优先级,即“==”的优先级大于“=”
其他的比较运算符的返回值也是true或者false,有一点值得注意的是,就是等于号一定在右侧,如果等于号放在了左侧也是会报错的,那是因为规定好的形式不能改变。




四、位与逻辑:


1.位运算符 与(&)、非(~)、或(|)、异或(^)
&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,
转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110


2.逻辑运算符
与(&&)、非(!)、或(||)
&&是连个条件的返回值都是true才会是true。
!是将true与false进行转换,例子!true就是false,!false就是true。
||是两个条件中只要有一个的返回值是true那么这个表达式就是true,只有两个条件的返回值都是false的时候才是false。


3.我们来讲解一下&和&&的区别:它们都是逻辑运算符号,&&又叫短路运算符。
& 不管前面的条件是否正确,后面都执行
&& 前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。




五、instanceof(这个单词就是一个运算符,不要以为是关键字):
该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。




六、位移运算符:
移位运算符是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
<<      :     左移运算符,value  << num(不一定为1),相当于num乘以(2*num)
>>      :     右移运算符, value >> num(不一定为1),当num为偶数时右移一位相当于除以(2*num),当num为奇数时相当于num除以(2*num),
取运算结果值(int类型的),舍去余数值。
当num为1的时候:就是5>>1,那么这个返回值结果为2,即在数学中5/2=2……1。
>>>    :     无符号右移,忽略符号位,空位都以0补齐


1)它的通用格式如下所示:


  value <<(>>或者>>>) num


  num 指定要移位值value 移动的位数。


  左移的规则只记住一点:丢弃最高位,0补最低位
       (右移的规则只记住一点:符号位不变,左边补上符号位.     无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位)
       无符号右移规则和右移运算是一样的,只是填充时不管左边的数字是正是负都用0来填充,无符号右移运算只针对负数计算,因为对于正数来说这种运算没有意义


参考网址:https://www.cnblogs.com/blog-cq/p/5793529.html   我当时学习的时候就是看了看这个网站上的资料,我觉得写得非常好,
我觉得这个作者很有见解。




运算符优先级(这里了解一下最好):
按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。
op=表示一系列的赋值运算符。


运算符综述
运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符 的结合性是右到左, x 相当于!(!x).
熟练地运用小括号是能够将我们的程序更加的简明易读的关键,大家要掌握这一点。让我们在今后的工作中有一个良好的阅读条件。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值