Java-数据类型和运算符

数据类型和分类

前面谈到变量的时候,说变量是有类型的,那么Java数据有多少和哪些类型呢?总得来说,分成两种:

① 基本数据类型,又称为原生数据类型;

② 引用数据类型,又称为对象数据类型;

-------------------------------------------------

8大基本数据类型:

数值类型:

整数: byte,short,int,long

小数: float,double

字符类型:符号char

布尔类型:对/错boolean

基本数据类型

算数运算符

Arithmetic operators

用来处理四则运算的符号:

----------------------------------------------------------------

加号:在操作数值、字符、字符串时其结果是不同的,当两个字符相加得到的是ASCII码表值,当两个字符串相加时表示将两个字符串连接在一起,从而组成新的字符串。

除号:整数在使用除号操作时,得到的结果仍为整数(小数部分忽略),当整数除以0的时候,会引发算术异常。

正无穷大(Infinity):当一个正浮点类型数除以0时,或者正整数除以0.0时;

负无穷大(-Infinity):当一个负浮点类型数除以0时,或者负整数除以0.0时;

NaN(Not a Number):当0.0除以0.0时;

取模:模数的符号忽略不计,结果的正负取决于被模数.

注意:无穷大和NaN都属于double浮点类型,但是所有正无穷大都是相等的,所有负无穷大也是相等的,NaN永远不相等,也不等于自己.

自增: ++, 递增操作符,使变量值增加1,有前置和后置之分, 只能操作变量。

自减: -- ,递减操作符,使变量值减去1,有前置和后置之分, 只能操作变量。

自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++:

代码 result ++和 ++result,都将使result变量的值加1。

唯一的区别是:

前置(++result): 表示对result加1之后的结果进行运算,

后置(result++): 表示对变量加1之前的值(原始值)进行运算。

如果仅仅执行简单的递增操作(只写result++或++result),那么选用任意一个都可以。

赋值运算符

比较运算符

三元运算符

需求:

现在给一个小数,需要求出其四舍五入之后的结果,怎么完成该功能?

double num = 4.56;

四舍五入:5

double num = 4.44;

四舍五入:4

思路:判断num的小数部分,和0.5的大写关系:

小数部分>=0.5: 5

小数部分 <0.5: 4

解决该问题:三元运算符.

boolean类型表达式 ? 值1 : 值2;

如果:boolean表达式结果为true,则结果为值1,否则结果为值2;

逻辑运算符

语法格式为:boolean result = 表达式A 逻辑运算符 表达式B;

------------------------------------------------------------------

&:表示并且,当操作数A和B都为true结果才为true,否则结果result 是false。

&&:和&结果相同,具有短路效果,如果左边操作数A是false,result 一定为false,且不运行B的运算。

|:表示或者,A和B都为false结果result为false,只要有A或B是true,结果就是true。

||:和|结果相同,具有短路效果,如果左边操作数A是true,result一定为true,且不运行B的运算。

^:判断A和B是否不同,不同则为true,相同则为false。

!:取反,!true结果是false,!fasle结果是true。

位运算符

遵循规则:0看做是false,1看做是true.

&:参与运算的两个数,若相应位数的值都为1,则该位结果值是1,否则是0。

|:参与运算的两个数相应位中只要有一个1,结果就是1。

^:参与运算的两个数相应位相同则结果为0,否则为1。

~ :表示把每个二进制位的“1”换成“0”,把“0”换成“1”。

-----------------------------------------------

移位操作:

<<:将操作数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。 >>:将操作数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充:

若是正数使用“0”补充;

若是负数使用“1”补充;(操作负数:取反,求补,操作,取反,求补)

>>:将操作数的二进制码整体右移指定位数,右移之后的空位使用“0”来补充。

运算符的操作优先级