3.5运算符

  • 当参与/运算的两个操作数都是整数时,表示为整数除法,否则表示为浮点数除法。
  • 整数取余操作称之为取模
  • 浮点数被0除灰得到无穷大或者NaN

数学函数与常量

  • 可以在源文件前加
import static java.Math.*;

平方根Math.sqrt(x)
幂运算 Math.pow(x,a)x的a次幂,其返回类型为double类型

数值类型之间的转换

image.png

image.png

<center class="half">

  • 其中一个是double,则转换为double
  • 否则其中一个是float,则转换为float
  • 否则其中一个是long,则转换为long
  • 否则两个转为int

强制类型转换(cast)

(想转换的类型)变量名

double x = 9.997;
int nx = (int) x;

截断小数部分将浮点值转换为整型
如果舍入运算,可以使用Math.round(x)方法

double x =999.7;
int nx = (int)Math.round(x);

结果为10
Math.round 返回的类型为long,所以使用(int)强转

结合赋值和运算符

x+=4;等价于x=x+4

  • 如果x为int进行x+=3.5;那么会将结果强制转换为int即(int)(x+3.5)运算符得到一个值,其类型与等号左侧类型不同,就会强制类型转换

自增自减运算符

  • n++将变量的值加一
  • n--将变量的值减一
    如果是++n则是先执行加一,而后者会使用原来的变量值
int m = 7;
int n = 7;
int a = 2 * ++m;// now a is 16,m is  8;
int b = 2 * n++;// now  b is 14, n is 8;

关系和boolean运算符

**要检测相等性,可以使用==。可以使用!= 检测不等

  • <(小于)、>(大于)、<=(小于等于)、>=(大于等于)
  • &&(与)||(或)
  • 三元操作符?:condition?expression1:expression2如果条件为true 则执行第一个表达式,如果为false则执行第二个表达式;
x<y?x:y//会返回xy中较小的一个

位运算符

直接对组成整型数值的各个位完成操作,通过掩码技术的得到整数中的各个位,位运算符用来对二进制位进行操作
&("and")|("or")^("xor")~("not")

  • 按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、按位左移(<<)、按位右移(>>)
  1. 按位与(&)

    对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时才为1,如下图:

    (A & B) 结果为 12, 二进制为 0000 1100

0b46f21fbe096b63074721c907338744eaf8acc9.jpg
  1. 按位或(|)

    比较两个数,然后返回一个新的数,这个数的每一位设置1的条件是两个输入数的同一位都不为0(即任意一个为1,或都为1),如下图:

    (A | B) 结果为 61, 二进制为 0011 1101

1b0d4f0fd9f9d72abce06f84df2a2834359bbb60.jpg
  1. 按位异或(^)

    比较两个数,然后返回一个数,这个数的每个位设为1的条件是两个输入数的同一位不同,如果相同就设为0,如下图:

    (A ^ B) 结果为 49, 二进制为 0011 0001

3801213fb80e7bec7df67d78242eb9389b506b7e.jpg
  1. 按位取反(~)

    对一个操作数的每一位都取反,如下图:

    (~A ) 结果为 -61, 二进制为 1100 0011


    7e7f7909c93d70cf71c2d394f3dcd100baa12b2b.jpg
  1. 按位左移(<<)

    将操作数的所有位向左移动指定的位数。

    下图展示了11111111 << 1(11111111 左移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。

    (A << 2)结果为 240, 二进制为 1111 0000

3bb22487e950352a2c2b5c915843fbf2b3118ba6.jpg
  1. 6

    按位右移(<<)

    将操作数的所有位向又移动指定的位数。

    下图展示了11111111 >> 1(11111111 右移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。

    A >> 2 结果为 15, 二进制为 0000 1111


    c2bce2039245d688833ac93dafc27d1ed21b242b.jpg

括号与运算符级别

  • &&||优先级高,所以a &&b || c等价于(a &&b) || c
  • +=是又结合运算符,所以a+=b+c等价于a+=(b+=c)
    63d9f2d3572c11df57c9a205612762d0f703c2f8.jpg

枚举类型

枚举类型包括有限个命名的值

enum Size={SMALL,MEDIUM,LARGE,EXTRA_LARGE);

可以声明变量:

Size s = Size.MEDIUM;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。