首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从0开始学大数据-Java基础-运算符(3)

3

第3篇:Java基础-运算符

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop、Spark、Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习。

上一节了解Java基础语法,本节我们开始学习Java基础-运算符,将会围绕以下几个知识点进行展开学习:

算术运算符

赋值运算符

比较运算符

逻辑运算符

位运算符

三目运算符

PS:开始之前我们先针对上节数据类型中补充的几个小问题

一、数据类型中补充的几个小问题

1、byte值的问题

byte b1=127;

byte b2=(byte)128; //-128

byte b3=(byte)129//-127

byte b3=(byte)130; //-126

byte的范围:-128 ~ 127

2、数据类型转化之默认转换(遵循从小到大转换)

byte,short,char ---int ---long---float---double

long:8个字节

float:4个字节

虽然是默认转换,但因为以下原因,long默认转换为float

a、它们底层的存储结构是不同的。

b、float表示的数据范围比long的范围大

long: 2^63-1

float: 3.4*10^38 > 2*10^38 >2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

3、Java语言中的字符char可以存储一个中文汉字吗,为什么呢?

可以,因为Java语言中的字符占用两个字节。

Java语言采用的是Unicode编码,所有的字符都是依照Unicode进行编码的

二、运算符

运算符总览表

在我们数学中也会经常用到运算(加减乘除等),那在Java程序中也是经常要做一些运算操作都有哪些呢,那么先看一下以下针对运算和运算符的定义:

运算:是对常量和变量进行操作的过程成为运算

运算符:是对常量和变量进行操作的符号称为运算符

分类(6种):算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符

那么,我们现在对各类运算符逐一的进行了解

1、算术运算符

符号:

+,-,*,/,%,++,--

注意事项:

a、整数相除只能得到整数,如果想得到小数,必须把数据变换为浮点数类型

b、/ 获取的是除法操作的商,% 获取的是除法操作的余数

下面我们先编写程序代码执行看下效果

程序执行结果:

(1)++,--运算符的使用

A:单独使用:

放在操作数的前面和后面效果一样,(这种情况是比较常见的)

B:参与运算使用:

放在操作数的前面,先自增1或者自减1,然后再参与运算。

放在操作数的后面,先参与运算,再自增1或者自减1。

C:作用:就是对变量进行自增或者自减。

程序举例:

放后面,程序打印出来的结果:

放前面,程序打印出来的结果

可见,我们前面总结的是对的。

放在操作数的前面,先自增1或者自减1,然后再参与运算。

放在操作数的后面,先参与运算,再自增1或者自减1。

接下来,我们进一步看一下+的用法(主要有三种):

A:加法

B:正号

C:字符串的连接符

程序举例:

程序执行结果:

可见:

*运算规则是从左到右做运算的,"hello"+'a'+1 ,系统会先识别到hello是一个字符串,则后面的加号就是作为字符串连接符使用,与字符a连接后,形成一个新的字符串,再拼接1。

*同样的,在'a'+1+"hello"则是先运算'a'+1(这里的加号是作加法使用),再连接字符串hello.

2、赋值运算符

符号:

=,+=,-=,*=,/=,%=等

可以划分为以下两种:

基本的赋值运算符:=

把右边的数据赋值给左边。

扩展的赋值运算符:+=,-=,*=,/=,%=

+=把左边和右边做加法,然后赋值给左边

同理,-=,*=,/=,%=的用法参照上述说明

程序举例:

程序执行结果:

思考题:

接下来,来思考两个问题,

short s=1,s=s+1;

short s=1,s+=1;

判断上面两个代码有没有问题,如果有,哪里有问题?

编写程序代码验证下:

第一种:

程序执行结果:

注意:还记得,前面我们学的 short类型做运算的时候,默认是先转换成int类型,int类型占用4个字节数,short类型占用2个字节数,遵从从小到大的转换原则,所以本程序中s=s+1做运算会损失进度。

第二种:

程序执行结果:

可见,扩展的赋值运算符其实隐含了一个强制类型转换。

s +=1;并不等价于s = s + 1;而是等价于s = (s的数据类型)(s+1);

所以通过s +=1;的执行结果是没有报错。

3、比较运算符

符号:

== 表示等于

!= 表示不等于

>表示大于号

>=表示大于等于

特点:

无论你的操作是简单还是复杂的,结果都是Boolean类型的 (false和true)

注意事项:

"=="不能写成"=";否则会变成赋值运算。

程序举例:

程序执行结果:

可见,比较运算符对应的结果是Boolean类型的

4、逻辑运算符

符号:

&,|,^,!

基本用法:

&与运算,(注意,但&两边为布尔值为逻辑与运算,当&两边为数字为位运算符)

|或运算

^异或运算

!非运算

特殊用法:

&& 双与运算

|| 双或运算

特点:

逻辑运算符一般用于连接boolean类型的表达式或者值。

表达式:

就是用运算符把常量或者变量连接起来的符合java语法的式子

算术表达式:a + b

比较表达式:a == b

结论:

(1)& 逻辑与:有false则false

(2)| 逻辑或:有true则true

(3)^ 逻辑异或:相同为false,不同为true

^异或举例:

情侣关系:男男,男女,女男,女女,

可见:正常的情侣关系中,异性是之间才是true的

特别声明:这里绝对没有歧视同性之间的关系,纯属为了学习交流的^-^

(4)!逻辑非:非false则true,非true则false

特点:偶数个!不改变本身的运算结果

编写以下程序对上述几种逻辑运算进行验证:

程序举例:

程序执行结果:

可见,我们的结论是正确的,逻辑运算符的基本用法也都讲完了,下面我们看看特殊用法。

程序举例(双与&& 用法):

程序执行结果:

可见,&&与&的区别?||与|的区别?

两种运算符的运算结果是一样的

&&具有短路效果,如果左边是false,则右边不执行

||与|就不再多做代码演示,可以自行尝试验证:

两种运算符的运算结果是一样的

||具有短路效果,如果左边是true,则右边就不执行,结果就为true

注意:开发中常用的逻辑运算符:

&&

||

!

5、位运算符

符号:

&与位运算

|或位运算

^异或运算

~翻转运算

>>右移运算

>>>无符号右移运算

注意:

要做位运算,首先要把数据转换为二进制

案例:

通过下述案例,了解下位运算符的特点:

我们先分析下几条位运算符打印出来的结果:

分析: 因为是位运算,所以我们必须要把数据换算成二进制

通过分析执行程序代码,可见我们的分析是正确的:

*另外,针对^还有以下特点:

一个数据对另一个数据位异或两次,该数据本身不变。

程序举例:

执行结果如下:

可见,^异或运算可以用于两个数值对调的运算,建议自行编写如下代码做验证:

a = a ^ b;

b = a ^ b;

a = a ^ b;

这个留给大家自己动手操作。

接下来,我们进一步看一下以下几种运算:

>>:右移,正数最高位是0,左边补齐0;负数最高位是1,左边补齐1

>>>:无符号右移,无论最高位是0还是1,左边补齐0

举例:

在执行运算之前,我们先做以下分析:

可见,

同理,>>是把>>左边的数据除以2的移动次幂,即24/2^2 = 24/4 = 6

>>的移动:

然后再通过以下方式求出原码,就是我们需要的结果。

>>>的移动:

程序的执行结果为:

可见,我们最终可以总结如下几点:

>>是把>>左边的数据除以2的移动次幂

>>:有符号右移。正数右移高位补0,负数右移高位补1

>>>:无符号右移。无论是正数还是负数,高位通通补0。

对于正数而言,>>和>>>没区别。

最后,还有一个三目运算符没讲,我们将放到下一节做专题说明。

本人能力有限,如有不足,还望指正

感谢大家一如既往的支持

希望一起分享给更多的人

让大家一起学习大数据技术

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G0EEH900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券