从屌丝到架构师的飞越(入门篇)-运算符

一、介绍

在java中我们要进行大量的运算,java中也为我们提供了大量的运算符,我们常用的运算符有那些呢,下面我们来一一的介绍一下。

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。运算符大致可以分为5种类型:算术运算符、条件运算符、关系运算符、赋值运算符和逻辑运算符。

二、内容

1、运算符概念

运算符是用来计算数据的指令。数据可以是常量,也可以是变量。被运算符操作的数成为操作数。

int x = 3;

int y = 4;

int z = x + y;

2、算数运算符

将操作数参与数学计算(通常为数学计算)

运算符 运算规则 范例 结果

+ 正号 +3 3

+ 加 2+3 5

+ 连接字符串 “中”+“国” “中国”

- 负号 int a=3;-a -3

- 减 3-1 2

* 乘 2*3 6

/ 除 5/2 2

% 取模(余数) 5%2 1

++ 自增 int a=1;a++/++a 2

-- 自减 int b=3;a--/--a 2

注意:

加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。

“%”为整除取余符号,小数取余没有意义。取余结果的符号与被取余数的符号相同。

得到的是两个相除数据的余数。

用处: 判断两个数据是否整除。

整数做被除数,0不能做除数,否则报错。

小数做被除数,整除0结果为Infinity,对0取模结果为NaN

自增与自减

单独使用:

前置与后置效果相同,均为直接+1或-1

混合使用:

自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。

自增与自减运算符还遵循以下规律:

    1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。

    2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。

    3. 它们的运算结果的类型与被运算的变量的类型相同。

/*

算数运算符:

+,-,*:相当于数学+,-*

+:做为字符串连接符

/:两个整数相除,结果是整数

%:两个整数取模(余数),结果是整数

++:自增(自身加1)

--:自减(自身减1)

注意事项:

1.加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

2.除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。

3.“%”为整除取余符号,小数取余没有意义。取余结果的符号与被取余数的符号相同。

4.整数做被除数,0不能做除数,否则报错。

5.小数做被除数,整除0结果为Infinity,对0取模结果为NaN

自增与自减

单独使用:

前置与后置效果相同,均为直接+1或-1

与其他运算符混合使用:

++或- -为前置时,先+1或-1,再使用值。

++或- -为后置时,先使用值再+1或-1。

*/

public class Demo05Operator{

public static void main(String[] args){

//两个常量相加

System.out.println(3 + 5);//8

//变量加减乘除模

int a = 20;

int b = 7;

System.out.println(a + b);//27

System.out.println(a - b);//13

System.out.println(a * b);//140

System.out.println(a / b);//2

System.out.println(a % b);//6

//+:做为字符串连接符

System.out.println("中"+"国");//中国

/*

单独使用:

前置与后置效果相同,均为直接+1或-1

*/

//++:自增(自身加1)

//--:自减(自身减1)

int c = 10;

int d = 20;

//c++;

//d--;

++c;

--d;

System.out.println("c = " + c);//c = 11

System.out.println("d = " + d);//d = 19

System.out.println("===================================");

//1.加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

int e = 15;

int f = 20;

System.out.println("e + f = " + e + f);//e + f = 1520

System.out.println("e + f = " + (e + f));//e + f = 35

System.out.println(e + f + " = e + f");//35 = e + f

//2.除法“/”当两边为整数时,取整数部分,舍余数。当两边有浮点型时,按正常规则相除。

System.out.println(5.0 / 2);//2.5

//3.“%”为整除取余符号,小数取余没有意义。取余结果的符号与被取余数(符号左边的数)的符号相同。

System.out.println(5.1 % 2);//1.0999999999999996

System.out.println(5 % 2);//1

System.out.println(-5 % 2);//-1

System.out.println(5 % -2);//1

System.out.println(-5 % -2);//-1

//4.整数做被除数,0不能做除数,否则报错。

//System.out.println(5 / 0);//ArithmeticException: / by zero

//5.小数做被除数,整除0结果为Infinity(无穷),对0取模结果为NaN(not number 无效数字)

System.out.println(5.0 / 0);//Infinity

System.out.println(5.0 % 0);//NaN

System.out.println("===================================");

/*

与其他运算混合使用:

++或- -为前置时,先+1或-1,再使用值。

++或- -为后置时,先使用值再+1或-1。

*/

System.out.println(e);//15

System.out.println(f);//20

System.out.println(e++);//15

System.out.println(f--);//20

System.out.println(e);//16

System.out.println(f);//19

int i1 = 100;

int i2 = i1++ + 200;

System.out.println(i1);//101

System.out.println(i2);//300

int i3 = 100;

int i4 = ++i3 + 200;

System.out.println(i3);//101

System.out.println(i4);//301

}

}

3、赋值运算符

为变量赋值的运算符

运算符 运算规则 范例 结果

= 赋值 int a=2 2

+= 加后赋值 int a=2,a+=2 4

-= 减后赋值 int a=2,a-=2 0

*= 乘后赋值 int a=2,a*=2 4

/= 整除后赋值 int a=2,a/=2 1

%= 取模后赋值 int a=2,a%=2 0

注意:

诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。

/*

赋值运算符:

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

+=,-=,*=,/=,%=运算符的运算规则:

先将运算符两边进行+,-,*,/,%运算,在把结果赋值给左边的变量

+=,-=,*=,/=,%=注意事项:运算符左边必须是一个变量

+=,-=,*=,/=,%=特点:隐含一个强制类型转换

*/

public class Demo06Operator{

public static void main(String[] args){

int a = 10;

a += 20;//相当于 a = a + 20;

System.out.println("a = " + a);

//5 += 6;//错误: 意外的类型,这里5的位置需要一个变量

byte b = 10;

//b = b + 100;// 错误: 可能损失精度

//b = (byte)(b + 100);

b += 100;//+=隐含了一个强制类型转换 相当于b = (byte)(b + 100);

System.out.println("b = " + b);

}

}

4、比较运算符

又叫关系运算符,即判断两个操作数的大小关系及是否相等关系,比较运算符的返回一定为布尔值。

运算符 运算规则 范例 结果

== 相等于 4==3 false

!= 不等于 4!=3 true

< 小于 4<3 false

> 大于 4>3 true

<= 小于等于 4<=3 false

>= 大于等于 4>=3 true

==,!=,>,<,>=,<=

关系运算符的结果都是boolean型,也就是要么是true,要么是false。

注意事项

n 关系运算符“==”不能误写成“=” 。

public class Demo06Operator {

public static void main(String[] args) {

int a = 10;

int b = 20;

int c = 10;

System.out.println(a == b);

System.out.println(a == c);

System.out.println("-----------------");

System.out.println(a != b);

System.out.println(a != c);

System.out.println("-----------------");

System.out.println(a > b);

System.out.println(a > c);

System.out.println("-----------------");

System.out.println(a >= b);

System.out.println(a >= c);

System.out.println("-----------------");

int x = 3;

int y = 4;

// System.out.println(x == y);

// System.out.println(x = y);// 把y赋值给x,把x的值输出

boolean bb = (x == y);

// 报错

// boolean cc = (x = y);

int cc = (x = y);

}

}

5、逻辑运算符

用于计算两个布尔值经过指定逻辑后的运算结果,结果同样是一个布尔值

运算符 运算规则 范例 结果

& 与(并且) false&true False

| 或 false|true True

^ 异或 true^flase True

! 非(取反) !true Flase

&& 短路与 false&&true False

|| 短路或 true ||true True

作用:逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6 。

基本使用: &(与),|(或),^(异或),!(非)

与:& 有false则false

或:| 有true则true

异或:^ 相同则false,不同则true

非:! true则false,false则true

public class Demo08Operator {

public static void main(String[] args) {

int a = 10;

int b = 20;

int c = 30;

System.out.println((a > b) & (a > c));// false & false

System.out.println((a < b) & (a > c)); // true & false

System.out.println((a > b) & (a < c)); // false & true

System.out.println((a < b) & (a < c)); // true & true

System.out.println("---------------");

System.out.println((a > b) | (a > c));// false | false

System.out.println((a < b) | (a > c)); // true | false

System.out.println((a > b) | (a < c)); // false | true

System.out.println((a < b) | (a < c)); // true | true

System.out.println("---------------");

System.out.println((a > b) ^ (a > c));// false ^ false

System.out.println((a < b) ^ (a > c)); // true ^ false

System.out.println((a > b) ^ (a < c)); // false ^ true

System.out.println((a < b) ^ (a < c)); // true ^ true

System.out.println("---------------");

System.out.println((a > b)); // false

System.out.println(!(a > b)); // !false

System.out.println(!!(a > b)); // !!false

}

}

&&和&的区别

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

public class Demo09Operator {

public static void main(String[] args) {

int a = 10;

int b = 20;

int c = 30;

System.out.println((a > b) && (a > c));// false && false

System.out.println((a < b) && (a > c)); // true && false

System.out.println((a > b) && (a < c)); // false && true

System.out.println((a < b) && (a < c)); // true && true

System.out.println("---------------");

System.out.println((a > b) || (a > c));// false || false

System.out.println((a < b) || (a > c)); // true || false

System.out.println((a > b) || (a < c)); // false || true

System.out.println((a < b) || (a < c)); // true || true

System.out.println("---------------");

int x = 3;

int y = 4;

// System.out.println((x++ > 4) & (y++ > 5)); // false & false

System.out.println((x++ > 4) && (y++ > 5)); // false && false

System.out.println("x:" + x);

System.out.println("y:" + y);

}

}

6、 三元运算符

接下来我们要学习的三元运算符与之前的运算符不同。之前学习的均为一元或者二元运算符。元即参与运算的数据。

格式:(条件表达式)?表达式1:表达式2;

表达式:通俗的说,即通过使用运算符将操作数联系起来的式子,例如:

3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式。

3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式。

其他表达式,不再一一举例。

三元运算符运算规则:

先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。

注意:

三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。

要么被运算符使用,要么被打印

/*

三元运算符:求两个数的最大值,判断两个数是否相等

格式:

(条件表达式) ? 表达式1 : 表达式2;

执行流程:

首先判断条件表达式是否成立

true:表达式1作为3元运算符的结果

false:表达式2作为3元运算符的结果

注意:

三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。

要么被运算符使用,要么被打印

*/

public class Demo10Operator{

public static void main(String[] args){

int a = 10;

int b = 20;

int max = (a > b) ? 10 : 20;

System.out.println("max = " + max);

int c = 15;

int d = 10;

//System.out.println((c != d) ? "相等" : "不相等");

String s = (c != d) ? "相等" : "不相等";

System.out.println("s = " + s);

//(c != d) ? "相等" : "不相等";//错误: 不是语句

//3;//错误: 不是语句

}

}

7、运算符优先级

7.1、优先级概念

运算符运算的先后顺序,优先级越高(数字越小),计算顺序越靠前。

7.2、优先级规则

优先级相同的情况下,按照从左到右的顺序依次运算

优先级 描述 运算符

1 括号 ()、[]

2 正负号 +、-

3 自增自减,非 ++、--、!

4 乘除,取余 *、/、%

5 加减 +、-

6 移位运算 <<、>>、>>>

7 大小关系 >、>=、<、<=

8 相等关系 ==、!=

9 按位与 &

10 按位异或 ^

11 按位或 |

12 逻辑与 &&

13 逻辑或 ||

14 条件运算 ?:

15 赋值运算 =、+=、-=、*=、/=、%=

16 位赋值运算 &=、|=、<<=、>>=、>>>=

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,305评论 0 9
  • 一、介绍 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中...
    走着别浪阅读 460评论 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,689评论 0 3
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,841评论 0 2
  • 7. Java运算符 👯转载请保留原文链接:http://dashidan.com/article/java/ba...
    ef6a1aa99b35阅读 366评论 0 0