7.Java运算符

7.Java运算符
转载请保留原文链接: http://dashidan.com/article/java/basic/7.html

① Java算数运算符

Java算数运算符: 加, 减, 乘, 除(取模, 取余), 算数运算符从右往左赋值.即将等号右边的值,赋给等号左边的变量.

  • +
int a = 1;
int b = 2;
int c = a + b;
System.out.println(c);
  • -
int a = 1;
int b = 2;
int c = a - b;
System.out.println(c);
  • *
int a = 1;
int b = 2;
int c = a * b;
System.out.println(c);
  • 除-取模/

对整数取模运算,相当于取结果的整数,去掉余数.

int a = 1;
int b = 2;
int c = a / b;
System.out.println(c);
  • 除-取余%

对整数取余运算,相当于取得不够整除部分的数值.

int a = 1;
int b = 2;
int c = a % b;
System.out.println(c);

② Java自动类型转换

当两个类型不同的数据类型运算时,结果自动转化为取值范围大的数据.

byte->short->int->long->float->double

具体规则:

  • 布尔型和其它基本数据类型之间不能相互转换.
  • byte型可以转换为short、int、、long、float和double.
  • short可转换为int、long、float和double.
  • char可转换为int、long、float和double.
  • int可转换为long、float和double.
  • long可转换为float和double.
  • float可转换为double.

示例代码:

package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java算数运算符
 */
public class Demo1 {
    public static void main(String[] args) {
        /** 加`+`*/
        int a = 1;
        int b = 2;
        int c = a + b;
        System.out.println(c);
        /** 减`-`*/
        a = 1;
        b = 2;
        c = a - b;
        System.out.println(c);
        /** 乘`*` */
        a = 1;
        b = 2;
        c = a * b;
        System.out.println(c);
        /** 除-取模`/`对整数取模运算,相当于取结果的整数,去掉余数.*/
        a = 1;
        b = 2;
        c = a / b;
        System.out.println(c);
        /** 除-取余`%`对整数取余运算,相当于取结果的余数.*/
        a = 1;
        b = 2;
        c = a % b;
        System.out.println(c);
    }
}
输出: 3 -1 2 0 1

③ Java复合运算符

复合运算符是一种简写. 以+=为例,表示加一个值再赋值给本身.常用的复合运算符:

  • +=加法赋值
a += 1;
// 等同于以下
a = a + 1;
  • -=减法赋值
b -= 1;
// 等同于以下
b = b - 1;
  • *=乘法赋值
c *= 1;
// 等同于以下
c = c * 1;
  • /=除法赋值
d /= 1;
// 等同于以下
d = d / 1;
  • %=模运算赋值
e %= 1;
// 等同于以下
e = e % 1;
示例代码:
package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java复合运算符
 */
public class Demo2 {
    public static void main(String[] args) {
        int a = 0;
        /** += 运算*/
        a += 1;
        System.out.println(a);
        /** -= 运算*/
        int b = 0;
        b -= 1;
        System.out.println(b);
        /** *= 运算*/
        int c = 2;
        c *= 3;
        System.out.println(c);
        /** /= 运算*/
        int d = 5;
        d /= 3;
        System.out.println(d);
        /** %= 运算*/
        int e = 5;
        e %= 3;
        System.out.println(e);
    }
}
输出:
    1
    -1
    6
    1
    2

④ Java自增,自减运算符

自增运算符++, 自建运算符--.原理一样,以自增运算符为例介绍.

分前缀式(如++i)和后缀式(如i++). 以自增运算符(++)为例: 前缀式是先加1再使用,后缀式是先使用再加1.

单独执行自增自减时前缀式,后缀式单独执行结果一样.道理同自增运算符,只是加1,变成了减1.

int i = 0;
i++;
System.out.println(i);
int j = 0;
++j;
System.out.println(j);
放在运算过程中执行. 前缀,后缀放在运算过程中结果不同.
/** 后缀式*/
/** 初始化a和i*/
a = 0;
i = 0;
a = i++;
/** i使用前是0,此时i为0不加1,a为0. */
System.out.println(a);
/** 使用后i加1,i为1*/
System.out.println(i);
示例代码:
package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java自增,自减运算符
 */
public class Demo3 {
    public static void main(String[] args) {
        /** 前缀,后缀单独执行结果一样*/
        int i = 0;
        i++;
        System.out.println(i);
        int j = 0;
        ++j;
        System.out.println(j);
        /** 前缀,后缀放在运算过程中结果不同*/
        /** 前缀式*/
        int a = 0;
        i = 0;
        a = ++i;
        /** i使用前是0,此时i为0不加1,a为0. */
        System.out.println(a);
        /** 使用后i加1,i为1*/
        System.out.println(i);

        /** 后缀式*/
        /** 初始化a和i*/
        a = 0;
        i = 0;
        a = i++;
        /** i使用前是0,此时i为0不加1,a为0. */
        System.out.println(a);
        /** 使用后i加1,i为1*/
        System.out.println(i);
    }
}

输出:

    1
    1
    1
    1
    0
    1

倒数第二个输出是0,这个就是后缀式的使用后计算导致的结果.

⑤ Java关系运算符

关系运算符用于比较两个数值之间的大小. 其运算结果为一个布尔值(boolean),只有true(真)和false(假)两个取值.
基本数据类型的关系运算符:
* >大于
* <小于
* >=大于或等于
* <=小于或等于
* ==等于
* !=不等于

示例代码:

package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java关系运算符
 */
public class Demo4 {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        boolean c = a > b;
        System.out.println(c);
        boolean d = a < b;
        System.out.println(d);
        boolean e = a == b;
        System.out.println(e);
        boolean f = a == b;
        System.out.println(f);
    }
}

输出:

false
false
true
true

⑥ Java逻辑运算符

逻辑运算符主要用于进行条件真(true)假(false)运算.包括&&(且), ||(或),!(异或) , ^(非), instanceof(判断对象实例类型).

  • &&

两目运算符,需要2个值参与运算.
符号两边的条件都为true,运算结果为true.如果任一条件为false,结果为false.

boolean a = true;
boolean b = false;
boolean c = a && b;
// a和b里不同时为true,故`&&`运算的结果为false
System.out.println(c);
  • ||

两目运算符,需要2个值参与运算.
符号两边的条如果任一条件为true,结果为true.如果都为false,结果为false.

boolean a = true;
boolean b = false;
boolean c = a || b;
// a和b里面,a为true,故`||`运算的结果为true
System.out.println(c);
  • !

单目运算符,需要1个值参与运算.得到与原布尔值相反的值.
原值为true,经过!运算,得false.
原值为false,经过!运算,得true.

boolean a = true;
boolean c = !a;
// c为 a的相反值,即为true
System.out.println(c);
  • ^异或

两目运算符,需要2个值参与运算.
符号两边的布尔结果不同时,结果为true.如果相同(同时为true,或者同时为false),结果为false.

boolean a = true;
boolean b = false;
boolean c = false;
boolean d = a ^ b;
boolean e = b ^ c;
// a和b里不同,故`^`运算的结果为false,d为false
System.out.println(d);
// c和d里同时为false,故`^`运算的结果为true,e为true
System.out.println(e);

示例代码:

package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java逻辑运算符
 */
public class Demo5 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        boolean c = a && b;
        /** a和b里不同时为true,故`&&`运算的结果为false*/
        System.out.println(c);
        a = true;
        b = false;
        c = a || b;
        /** a和b里面,a为true,故`||`运算的结果为true*/
        System.out.println(c);
        a = true;
        c = !a;
        /** c为 a的相反值,即为true*/
        System.out.println(c);
        a = true;
        b = false;
        c = false;
        boolean d = a ^ b;
        boolean e = b ^ c;
        /** a和b里不同,故`^`运算的结果为false,d为false*/
        System.out.println(d);
        /** c和d里同时为false,故`^`运算的结果为true,e为true*/
        System.out.println(e);
    }
}

输出:

false
true
false
true
false

⑦ Java条件运算符

由两个符号组成?:,要求有3个操作对象,所以也叫三目运算符.

a<b?a:b;

如果?前边的表达式(a

package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java三目运算符
 */
public class Demo6 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = a > b ? a : b;
        /** a > b 为false,所以取":"后边的值b赋值给c, 故c为2.*/
        System.out.println(c);
    }
}

输出:

2

⑧ Java运算符优先级

基本的原则是有括号先算括号里的,然后先乘除后加减. 乘除都有时,从左往右依次计算. 加减从左往右依次计算. 示例代码:

int a = 1;
int b = 2;
int c = 3;
int d = a + b * c;
/** 乘号的优先级比加号高, 先算b*c再加a,故d为7*/
System.out.println(d);

加减乘除混合, 示例代码:

package com.dashidan.lesson6;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 6. Java运算符
 * Java运算符优先级
 */
public class Demo7 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = 3;
        int d = a + b * c;
        /** 乘号的优先级比加号高, 先算b*c再加a,故d为7*/
        System.out.println(d);
        /** 加减乘除混合*/
        a = 1;
        b = 2;
        c = 3;
        d = 4;
        d = a + b * c / d - 5;
        /** 乘号和除号的优先级比加号高, 先算乘除, 从左往右, b*c得6,d(值为4),`6/4`得`1.5`.取模运算省去小数,`b*c/d`得1*/
        /** 加减法从左往右计算,a+1-5得-3,赋值给d.故d为-3.*/
        System.out.println(d);
    }
}

输出:

7
-3
Java运算符优先级表
优先级符号名称结合性
1.从左到右
( )圆括号从左到右
[ ]方括号从左到右
2+正号从右到左
-负号从右到左
++自增从右到左
- -自减从右到左
~按位非/取补运算从右到左
逻辑非从右到左
3*从左到右
/从左到右
%取余从左到右
4+从左到右
-从左到右
5<< 左移位运算符从左到右
>> 带符号右移位运算符从左到右
>>> 无符号右移从左到右
6小于从左到右
<=小于或等于从左到右
大于从左到右
>=大于或等于从左到右
instanceof对象是否属于指定的类从左到右
7==等于从左到右
!=不等于从左到右
8&按位与从左到右
9|按位或从左到右
10^按位异或从左到右
11&&短路与从左到右
12||短路或从左到右
13?:条件运算符从右到左
14=赋值运算符从右到左
+=混合赋值运算符
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=

⑨ 相关文章

Java入门到精通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值