赋值运算符

(一)JAVA种的赋值运算符 = ,代表代表的等于,一般的形式是  左边变量名称   =     右边的需要赋的指或者表达式,如果左侧的变量类型级别比较高,就把右侧的数据转换成左侧相同的高级数据,然后再复制给左边的变量。否则需要用强制类型转换。

int  a,b,c;
        a = 13 ;
        b = 12 ;
        c = 12 ;

int   i = 10 ;//强制类型转换

byte b = (byte)i;
        /*
         a  = b +c ;
        */
       (二)复合赋值运算符

为了简化程序,提高的编译的效率,运算符前面可以加上不通的运算符,构成了复合赋值运算符。包括+=,-=,*=,/=,%=,>>=.<<=.^=,丨=,>>>=。具体的例子如下

int  a = 3 ;
              a+=3 ;//a = a + 3;

上例中a+=3就相当于 a = a+3 ; 结果就是6 ,其余的复合运算符是一样的。其中>>=,<<=,>>>=代表的是位运算符,在下面会在介绍

逻辑运算符

逻辑运算是针对布尔类型进行的逻辑判断,结果仍然是布尔类型。逻辑运算符主要包括三个分别是 !(非)、&(与)。这三种类型的逻辑运算关系如下:

	/*                    逻辑关系
* 逻辑运算 含义
* A and B AB均为真,结果为真
* A OR B A,B中有一个为真,结果为真
* NOT A A为真,结果为假,取其相反的值
*
* 逻辑运算符
* 运算符 用法 何时为true 附加特点
* && A&&B A和B都为TRUE 当A为false是,不用检查B ,结果为false
* || A||B A 或B 有一个为true 当A = true ,则结果为true ,不用检查B 的真假
* ! !A A为false , 取A的相反值
*
* 在逻辑运算符中有几个特点,在&&中,A为false时,则结果为false,不用在检查B的值。这是因为&&中只有当两个
* 数值都为真时,才为true,所以不用检查B 了。|或运算符时,当A为true时,则结果为true。
*
*/

关系运算符

关系运算符也称为比较运算符,主要用来比较两个数据之间的大小关系的运算符。关系运算符比较的结果是一个Boolean类型的的值,True 和false。有六种关系运算符,分别是>,<,==,>=,<=,!=,六种关系运算符和高中的数学的学的差不多,主要的不同是这里只有true和false,下面来仔细看一下这几个关系运算符。

运算符                                               功能                                                             用法
== 用于判断两个数值是否相等 i==j
!= 数值不等于 A!=B
>= 大于等于 A>=B
<= 小于等于 A<=B
> 大于 A>B
< 小于 A<B
例子如下
int a = 2 , b = 3;
a == b; //a==b中 a和b不等,结果为false,相等时为true
a !=b ; // a不等于b结果为true,否则为false
a > b ; // 2<3,所以结果为false,反之为true
a < b ; // 2<3 ,所以 结果为true
a >= b ;// 2<3 ,所以结果为false
a <= b ;//2< 3 ,所以结果为true,当a==b时结果也为true

位运算符

位运算符主要针对的是二进制进行运算,也可以对整数和字符型进行运算。位运算符主要包括按位与(&),按位或(丨),按位异或(^),按位非(~).下面来了解一下这个几个运算符的运算法则。

在位运算中,对于十进制的数据,需要先把数据转换成二进制,之后按照位运算符的法则进行运算,之后把就算结果在转换成十进制数据。

按位与(&)

对于数据的按位与的运算法则是 ,当两个数据对应位置的值都是1时,则结果为1,否则为0.下面我们以6和5的来进行计算一下。

       6 的二进制是 00000110 ,5 的二进制是00000101
00000110
& 00000101
00000100
把计算结果为4
6 的二进制是00000110 ,9的二进制是00001001
00000110
& 00001001
00000000
6和9的按位与运算结果为0 ,从一方面也可以看出按位与可以进行清0,但是
两个数据必须像6和9那样,两个数据对应的位是不同的。

按位或(丨)

在按位或的运算法则是,当两个数据对应的位都是0 ,则对应的结果为0,反之为1以 5丨6为例

 6 的二进制是 00000110 ,5 的二进制是00000101
00000110
丨 00000101
00000111
把结果转换成十进制是7

按位非(~)

对于按位非,对于数据的位置是1,则对应为0,位置0时,则对应位是1.下面以6(只取低八位)为例

        00000110
~ 11111001
按位非 得到的结果11111001

将结果的二进制的结果是-7,因为byte类型的做高位为1,表示负数,0表示正数,所以这个数的结果是负数,又因为11111001的是-7的补码。

按位异或(^)

按位异或的运算法则是:如果两个数据对应的数据相同时,那么该对应的位数据位0,两个数据对应的值相反,那么对应的值为1.下面以6和9 为例

6 的二进制是  00000110

9的二进制是   00001001

00000110

^        00001001

00001111

6和9 的异或是为00001111,转换为十进制为15,下面在进行下面的运算15^9

00001111

^       00001001

00000101

把二进制的转换成十进制的结果为6,

从上面可以结果可以看出异或可以进行数据的基本加密和解密。

移位运算符

在计算机中参与运算的数有两大类:有符号数和无符号数。在计算机中的数一般都存在寄存器中,通常称寄存器的位数为机器字长。而无符号数就是没有符号的数即是在寄存器中每一位都可以都可以用来存储数据,它的范围是0 ~65535 。例如17为无符号数,在计算机中用二进制表示为20001。有符号数是最高位为符号位,它的范围是-32768 ~32767 。例如-17 是有符号数,在计算机中用最高位表示符号位,二进制的表示为10020001。现在来介绍以下JAVA中的移位运算符。移位运算符分为左移位运算符,右移位运算符和无符号的右移位运算符。

左移位运算符 (<<)

左移位运算符的运算法则是:高位左移后,右侧补0。例如6的左移1位的计算过程。6的二进制位00001000.左移移位之后00010000,转换成十进制为12.从这里可以看出左移移位移位之后相当于该数乘以2。左移N 为就为该数乘以N个2想乘。

右移位运算符(>>)

右移位运算符的运算法则是:低位右移后,右侧的高位补充符号位。如果是正数,则补充0。是负数则补充1.例如-6,-6的二进制表示为10001000,右移之后结果为11111100.因为右侧是为符号位所以补充1.转换十进制为-3.

无符号数的右移位运算符(>>>)

无符号数的移位法则:  右移后,左侧补0.也就是说一个数经过无符号右移后,得到的数一定是大于等于0 的数。例如-6的右移。-6的二进制表示为11111111 11111111  11111111  11111010 将它右移1位后变为01111111

11111111  11111111   11111101(右移1位之后,最高位补0),得到的这个二进制数转换为十进制之后结果为 2147483645

在移位运算符中需要注意下面这几个问题:

1 对于byte,short,char 类型的数据系统会默认把类型转换成int类型之后再进行移位。

2 对于整型数据A>>N系统会自动把N%32得到的余数进行右移几位。也就是说,对于一个int类型的数据A>>33和A>>1的值是一样的

3 对于long类型的数据a>>n,系统会自动把n%64得到的余数进行右移。

4 整数不断的右移最后的结果将得到0,而负数不断的右移运算最后的结果是-1.

条件运算符

三元运算符 ?,它包括三个数,格式为 表达式1?表达式2:表达式3;在java中表达式1如果为true,则返回表达式2反之返回表达式3 。例如下面的例子

int   a  = 2 ;

int  b = 3 ;

int  c  = a>b?a:b;

这个计算的最好结果则是3.因为a>b为false,所以返回b的值。在这里需要注意的是当表达式2 和表达式3 的值的类型不一样时,返回精度比较准确的类型。

运算符的优先级

关于运算符可以分为一目运算符,二目运算符和三目运算符。具体的关系如下图

Java菜鸟之java基础语法,运算符(三)的更多相关文章

  1. 学习java之基础语法(三)

    学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ...

  2. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  3. Python基础语法(三)

    Python基础语法(三) 1. 数值型数据结构 1.1 要点 在之前的博客也有提到,数值型数据结构在这里就不过多介绍了.在这里提及一些需要知道的知识点. int.float.complex.bool ...

  4. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  5. Java基础语法-运算符

    1算术运算符 1.1运算符和表达式 运算符:对常量和变量进行操作的符号. 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式. 不同运算符链接的表达式体现的是不同类型的表达式 ...

  6. java基础语法运算符

    1.1                算数运算符++.--的使用 在一般情况下,算数运算符不会改变参与计算的变量值.而是在原有变量值不变的情况下,计算出新的值.但是有些操作符会改变参与计算的变量的值, ...

  7. Java基础语法(三)

    七.方法 定义: 方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; ...

  8. JAVA企业级开发-xml基础语法&约束&解析(04)

    一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...

  9. java学习笔记之基础语法(一)

    1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...

随机推荐

  1. <转>Python3.x和Python2.x的区别

    这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和 ...

  2. sql server 2008 链接到数据库引擎

  3. Setup FTP server on Ubuntu 14.04

    Setup FTP server on Ubuntu 14.04 Step 1 » Update repositories .krizna@leela:~$ sudo apt-get updateSt ...

  4. 跟我一起学kafka(一)

    从昨天下午接到新任务,要采集一个法院网站得所有公告,大概是需要采集这个网站得所有公告列表里得所有txt内容,txt文件里边是一件件赤裸裸得案件,记录这案由,原告被告等相关属性(不知道该叫什么就称之为属 ...

  5. C# 如何将窗体写到Dll中

    步骤: 1.解决方案资源管理器窗口->右击项目属性 2.属性窗口->应用程序->输出类型(U)->类库

  6. 「小程序JAVA实战」springboot的后台搭建(31)

    转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...

  7. 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)

    博主为从区域规划转行地图学的小学渣一枚,最近处理数据希望对结果进行三维可视化,意外发现从小用到大的EXCEL可以绘制地图且功能非常强大,在这里做一下简单介绍,希望可以给看官提供些许帮助.那下面就开始吧 ...

  8. Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.classloader.ReloadingClassLoader

    今天学习到strusts2与spring的整合,把原来可以交给spring产生的东西都扔给了它,终于拜托了繁琐的代码,只专心于逻辑开发就OK了,现在连strusts的action都可以交给spring ...

  9. 【297】IDL 过程、函数&关键字参数

    目录: 一.Procedure 1.1 基本说明&定义 1.2 关键字参数 二.Function 2.1 基本说明&定义 2.2 关键字参数 参考:IDL中函数中的带有关键字的参数的使 ...

  10. Hash表算法详解

    Hash表定义 散列表(Hash table,也叫哈希表),是根据关键字值(Key value)直接进行访问的数据结构.也就是说,它通过把关键字(关键字通过Hash算法生成)映射到表中一个位置来访问记 ...