Java菜鸟之java基础语法,运算符(三)
赋值运算符
(一)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基础语法,运算符(三)的更多相关文章
- 学习java之基础语法(三)
学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- Python基础语法(三)
Python基础语法(三) 1. 数值型数据结构 1.1 要点 在之前的博客也有提到,数值型数据结构在这里就不过多介绍了.在这里提及一些需要知道的知识点. int.float.complex.bool ...
- Golang 基础之基础语法梳理 (三)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...
- Java基础语法-运算符
1算术运算符 1.1运算符和表达式 运算符:对常量和变量进行操作的符号. 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式. 不同运算符链接的表达式体现的是不同类型的表达式 ...
- java基础语法运算符
1.1 算数运算符++.--的使用 在一般情况下,算数运算符不会改变参与计算的变量值.而是在原有变量值不变的情况下,计算出新的值.但是有些操作符会改变参与计算的变量的值, ...
- Java基础语法(三)
七.方法 定义: 方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; ...
- JAVA企业级开发-xml基础语法&约束&解析(04)
一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
随机推荐
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget(第二部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- java后台面试题整理
java基础 Arrays.sort实现原理和Collection实现原理foreach和while的区别(编译之后)线程池的种类,区别和使用场景分析线程池的实现原理和线程的调度过程线程池如何调优线程 ...
- php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
一.场景介绍 最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知.经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低 ...
- centos7.3安装python3.6.5
最近在玩django,想部署个网站试试,结果发现线上默认的centos用得居然是python2.7.5,那么先升级下吧,到python3.6.5 yum安装时python2.7.5 那么编译安装吧 那 ...
- IOS Background 之 Background Fetch
http://www.ithao123.cn/content-1363653.html 定期更新数据的app,比如及时通信类,微博等app. 定期后台获取,等打开后获取的快一些. 30分钟后打开手,获 ...
- centos 和KVM安装
- MPEG-2码流结构分析
MPEG2视频编码定义在 ISO/IEC13818-2中,MPEG2 video sequence如下图所示 我们可以借助Elecard Stream Analyer工具来分析MPEG2视频码流 MP ...
- UVALIVE 4556 The Next Permutation
4556 The Next PermutationFor this problem, you will write a program that takes a (possibly long) str ...
- web前端整套面试题(二)--今日头条面试题
12道单选,7道不定项选择,2道编程题 一.单选(12题) 1.[单选题]在HTML中,( )可以在网页上通过链接直接打开邮件客户端发送邮件. A.<a href=”telnet:ming.zh ...
- Codeforces 1154G 枚举
题意:给你一堆数,问其中lcm最小的一对数是什么? 思路:因为lcm(a, b) = a * b / gcd(a, b), 所以我们可以考虑暴力枚举gcd, 然后只找最小的a和b,去更新答案即可. 数 ...