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用于定义数据 ...
随机推荐
- Spring中application*的使用
ApplicationAware 加载Spring配置文件时,如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时, ...
- 第6章Zabbix分布式监控
Zabbix是一个分布式的监控系统.分布式监控适合跨机房.跨地域的网络监控.从多个Proxy收集数据,而每个Proxy可以采集多个设备的数据,从而轻松地构建分布式监控系统. ZabbixProxy可以 ...
- 10.Redis 性能测试
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 性能测试是通过同时执行多个命令实现的. 语法 redis 性能测试的基本命令如下: r ...
- Qt(自适应窗口)
关于窗口布局: 默认控件的大小为最小尺寸: 如果此时右键设置布局时,窗口大小会自动缩放对应大小,不利于调整. 建议窗口控件设置好最小尺寸,便于窗口布局时,控件不会变形,例如: 改变minimumsiz ...
- Java 循环遍历删除set list中的元素
删除List和Set中的某些元素 错误代码的写法: Set<String> set = new HashSet<String>(); set.add("aaaaaa& ...
- jquery 报错 Uncaught TypeError: Illegal invocation
遇到这个错误 请检查你的ajax提交方法的参数 1 参数是否都有定义 2 参数个数是否一致 3参数是否都有值(******)
- C#中打开设计视图时报"未将对象引用设置到对象的实例"
通常情况下,若是你将用户控件写好了放入窗体中,若是有不合理的代码,则会弹出错误提示框,不让你放.若是你之前只是随便加了一个用户控件,并且没有什么问题,但后来你又把控件改坏掉了,那么你打开就会报错(在窗 ...
- 前端开发之CSS篇四
一.相对定位 二.绝对定位 三.固定定位 四.z-index 前言 定位有三种:1.相对定位 2.绝对定位 3.固定定位 这三种定位,每种都暗藏玄机,所以要每个单独剖析. 1️⃣ 相对定位 1.三 ...
- EMC校招笔试题目
------------------------------------------------- 1,7×(1/7) = 1是什么率? 乘法运算满足结合律,交换律和分配率.这个题目用的应该是交换律. ...
- 从顶端插入,滚动展示(Demo):
新闻滚动,从顶端插入: <!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11 ...