在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符、关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符).

我们一起来学习下吧!

一、赋值运算符

赋值运算符主要有五个、分别是 = (赋值)、+=(加上一个在赋值)、-=(减去一个在赋值)、*=(乘以一个在赋值)、/=(注意斜杠别打反了,这是除以一个在赋值)和%=(取摸在赋值)

“=” 叫赋值运算符,就是把一个值付给一个变量,赋值时候使用的。这个就不详细说明了,前面有篇文章叫做java入门之八大基本类型、已经讲解过了,下面我看两行代码“+=”的使用

  1. public class Hello {
  2.  
  3. public static void main(String[] args ) {
  4. int a=1;
  5. a+=10;
  6. int b;
  7. b+=10;
  8.  
  9. }
  10.  
  11. }

赋值运算符+=

b+=10;这行代码等价于 b=b+10,我们上一节的曾经提到过,在java中变量如果要使用必须先赋值。

同理

b+=10<=等价于=>b=b+10; //变量加字面值10

b-=10<=等价于=>b=b-10;//变量减去字面值10

b*=10<=等价于=>b=b*10;//变量乘以字面值10

b/=10<=等价于=>b=b/10;//变量除以字面值10

b%=10<=等价于=>b=b%10;//变量取摸字面值10

取摸:就是取余数,就是变量除以一个数的余数(后边算术运算符会讲解)。

下面我们在来看下代码:

  1. public class Hello {
  2.  
  3. public static void main(String[] args ) {
  4. short s=1000;
  5. short sum=s+100;
  6. }
  7. }

赋值运算符02

上述代码竟然报错啦!!!!???@¥#@**一脸懵逼啊。

其实 我们的s 变量是short 类型的,而我们的100是int 类型的。所以两个类型不一致,而我们的int类型的范围大,所以需要强制类型转换,这里在说下强制类型转换和自动类型转换的定义。

强制类型转换是我们的大类型转换到小类型的转换。我们小类型到大类型的转换,叫自动转换。所以如下代码就不会报错.

  1. public class Hello {
  2.  
  3. public static void main(String[] args ) {
  4. short s=1000;
  5. short sum=(short) (s+100);//圆括号"()"代表一个整体,方括号“[]”代表所引器、花括号“{}”代表体,如方法体,循环体等后续会讲到,这个必须要整体转换
  6. int count=s+100;
  7. }
  8. }

赋值运算符,自动转换

现在代码我们不这样写了,我换一种写法,先看代码

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. short s=1000;
  4. //short sum=s+100;
  5. //int count=s+100;//
  6. s+=100;//s+=100 <===>s=s+100;
  7. short sum=s;
  8. }
  9. }

当这个代码拷贝到分析器的时候,你会发现,是可以编译的,这个是为什么呢??!@#¥%……,

有一脸懵逼。

这是因为,在java 中,内部给我们做了强制类型转换,所以这个地方容易出面试题。到这里,赋值运算符我们就学完了。

二、算术运算符

算术运算符主要有 ++(自加运算符) 、--(自检运算符)、*(乘法运算符)、/(触发运算符)、+(加法运算符)、-(减法运算符)和%(取摸运算符),

其中 +,-,*,/,% 叫做单目运算符,也叫单元(一元)运算符。

++,-- 叫双目运算符,也叫双元运算符

下面来看下非了双目运算符的代码

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=1024;
  4. int b=128;
  5. System.out.println(a+b);//加法运算
  6. System.out.println(a-b);//减法运算
  7. System.out.println(a*b);//取积
  8. System.out.println(a/b);//取商
  9. System.out.println(a%b);//取余
  10. }
  11. }

在看下输出结果

有些人会认为很简单

可是在看下边的代码:

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=11;
  4. int b=5;
  5. System.out.println(a/b);//取商
  6. System.out.println(a%b);//取余
  7. }
  8. }

可是结果不一样了

这是为什么呢?11 除以5应当等于2.2啊可是结果为什么会是2呢,因为我们的变量是整数,要取整的。那第二个为什么删除的1 。我们先来你看下小学数据计算公式,

我们除号运算符求的是商,我们取摸运算符是取余。

有人会问,如果我想要小数怎么办??

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=11;
  4. double b=5;
  5. System.out.println(a/b);//取商
  6. System.out.println(a%b);//取余
  7. }
  8. }

就是我们计算的表达式,至少有一个是小数,计算的结果就是小数.

下面我们在来看下++和--,

++是什么意思呢,就相当于自身加1,下面我们来看下代码

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int i=0;
  4. i++;
  5. System.out.println(i);
  6. }
  7. }

这个输出的结果是1,“--”同理,就是自身减去1.i++ 等价于 i=i+1 同时还等价于 i+=1;

那么 i++和++i的结果是不是一样的.在java 中 ++和--是可以出现在变量前后的,只是位置不同.

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int i=0;
  4. int num=i++;
  5. System.out.println(i);
  6. System.out.println(num);
  7. int n=0;
  8. int number=++n;
  9. System.out.println(n);
  10. System.out.println(number);
  11. }
  12. }

看到结果,我们回答县,i++输出的是0,而++n输出的是1,这就终结了一句话。

变量++是先赋值使用后自加,++变量是先自加后使用赋值.“--”同理。

三、关系比较运算符

在java中比较运算符常用的有这6个   >、  <、  ==、  !=、  >=、  <=, 他们的到的值有且只能是布尔值 boolean 类型的.下边我们来看下这个表格,你就明白了,这个就是小学一年级的比较运算。比较结果成立我们得到的是true,不成立得到的是false.

比较运算符成立表达式
序号 运算符 说明 b变量a =11 ,值b=10 (a 不等式b) a=10,b=11(a不等式b) 案列
1 > 大于  true  false
2 < 小于  false true
3 == 恒等于  false false
4 != 不等于 true true
5 >= 大于等于   true false
6 <= 小于等于 false true

这个没什么好演示的,就此揭过,后续会经常用到这些不等式的.

四、字符串连接符

在java 中字符串拼接有且只有“+”一个拼接符号。但是在NET中会推出很多,后续会讲解NET 中的字符串拼接符, 字符串连接符就是“+”号, 字符串拼接分在算术运算符中就是相加的意思,但是在字符串中是拼接的意思,我们在java中字符串用双引号表示。

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=10;
  4. int b=5;
  5. System.out.println(a+b);
  6. double c=3.14;
  7. System.out.println(c+a);
  8.  
  9. System.out.println("wbcsky"+a);
  10.  
  11. System.out.println(a+"wbcsky");
      System.out.println( "a+b="+a+b);
  12. }
  13. }

根据上面胡代码,我们可以总结一句话:“当加号的两边是数字(含小数)就进行加法运算,如果加号的任意一边是字符串,就进行字符串拼接”; 注意,拼接不是做强制类型转换,做的是自动转换。

在上述代码中

  1. System.out.println( "a+b="+a+b);这句话的结果没有截图,这句话的结果是 a+b=105;
    解释下,a+b= 这部分是一个字符串,当加上a的时候 "a+b="+a 也是一个字符串,所以在加b的时候是拼接字符串.
    这里留下个问题?当我想输出 10+5=15 a+b=15,这个要怎么写.

五、逻辑运算符

在java 中逻辑运算符分为两种,一种 叫做 逻辑运算符   && (并且) ||(或者)

另一种  叫做 位运算符  “!” (非)   “^” (异或)“|”(或)  “&”(与)

位运算

我们先学习位运算符,位运算符是针对二进制进行计算的,也就是说,把我们任何类型转换成为二进制,通过二进制去比较,位运算两边的类型相同返回的类型相同,两边类型不同,返回得不一定是哪个,这个没有深入研究,太底层了

。看代码

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=1;
  4. int b=2;
  5. int c=a&b; //a与b
  6. System.out.println(c);
  7. int d=a|b;//a或b
  8. System.out.println(d);
  9. int e=a^b;//a 异或 b
  10. System.out.println(e);
  11. // boolean f=a!b;// a 非 b 是会报错的,在JDK 1.5以前的版本,是可以写的
  12. // System.out.println(d);
  13. }
  14. }输出结果位033.
  1. 来看下a b 是怎么来比较的。 因为a=1 a 是四个字节 也就是说是32 。二进制换算在上一篇文章有介绍 ,我们这里只描述后面8位,因为前面都是0.
    变量a 的二进制表示为 0000 0001 ,变量b的二进制表示为 0000 0010 。看下图

    总结:运算时均把运算数转换为二进制再做比较。
    规则(&):当相同的位上均为1时结果为1,否则结果为0 ,术语叫做“有0则为0”,下图的案列就有均为1

 

规则(|):当上下两边操作数的位有一边为1时,结果为1,否则为0,0000 0011 二进制转10进制结果为3 ,术语叫做有1则为1

怕大家看不懂,后边在列个例子

a^b(a异或b)规则 两边的位不同时,结果为1,否则为0.如0000 0001^0000 0010=0000 0110 转换成为十进制则为3.,术语叫做 1,0不等则为1,这里就不过多解释了。

"非"的位运算往往返回的是boolean 类型,主要是和“=”等号一起使用,用于表示等于和不等于,!的术语叫做 “0变1,1变0” ,就是说 0代表的是false,1 代表的是true(这句话不懂没关系,往下学),true 取反的时候就是false,反之亦然。

在开发过程中,位运算符往往用在逻辑上,主要用在同类型的数据对比上,但是非和异或用的很少,大家主要记住或和与。

逻辑运算

刚学习了位运算,下边我们看下  怎么在逻辑运算里面使用位运算。

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a=9;
  4. int b=1;
  5. System.out.println(a>0&b<10); // true |true = True 有假则为假 有0则为0
  6. System.out.println(a>10&b<0); // false|false =false 有假则为假 有0则为0
  7. System.out.println(a>0&b<0);// True|false=false 有假则为假 有0则为0
  8. System.out.println(a>0|b<10); // true |true = True 有真则为真 有1则为1
  9. System.out.println(a>10|b<0); // false|false =false 有真则为真,没有就是false 有1则为1
  10. System.out.println(a>0|b<0); // True|false=true 有真则为真 有1则为1
  11.  
  12. }
  13. }

可以把上面的代码输出结果整理下,就出现如下:

再来学习下 &&和 & ,|| 和| 的区别,我们管&& 叫”短了与“,||叫”短路或”。

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. boolean b1=true;
  4. boolean b2=false;
  5. System.out.println(b1&&b2);
  6. System.out.println(b1&b2);
  7.  
  8. }
  9. }

这个代码执行的结果都是false,也就是说,他们在使用的结果是一样的。那他们有没有什么不通点呢,看下边的代码:

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. boolean isBool=false;
  4. boolean b=true;
  5. boolean ool=true;
  6. int num=;
  7. b=isBool&num++>;
  8. System.out.println(b);//false
  9. System.out.println(num);//
  10. int number=;
  11. ool=isBool&&number++>;
  12. System.out.println(ool);//false
  13. System.out.println(number);//
  14. }
  15. }

根据上面的输出结果我们可以看出, isBool 变量是false,后边的num++>0 是一个true的表达式,一个false 与上任何一个布尔表达式返回的都是false(其实第一个不等式就已经可以分别出结果了),而一个运算符“&”执行了i++,而两个的没有执行,说明两个运算符合起来使用效率更高.

总结:一个“与”的逻辑运算符效率低,两个“与”的逻辑运算符效率会高跟多,不会再次计算。

六、三目运算符

三目运算符也叫做三元运算符,,之前我们学习了一目运算是一个运算符,二目运算是两个运算符组合,现在三目运算就是三个运算符组合使用。

语法格式为 布尔表达式?表达式1:表达式2; 以问好开始,以冒号分割,以分号结尾。当布尔表达式为真,执行表达式1,如果布尔表达式为假,执行表达式2.表达式1和表达式2可以是一个值。

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. System.out.println(>?"为真进入":"为假进入");
  4. String result=>? "true": "false";//String 代表字符串,后续会讲解字符串
  5. System.out.println(result);
  6. }
  7. }

上诉代码输出了“为假进入”和“false”.。三目运算符是可以嵌套的,下边我们在来看下列子

  1. public class Hello {
  2. public static void main(String[] args ) {
  3. int a,b=;
  4. a=;
  5. int num=a>b?a<b?::a<?a:b;
  6. System.out.println(num);
  7. System.out.println(a>b?(a<b?:):(a<?a:b));
  8. }
  9. }

两种写法输出结果都是20,第一种方法,可读性比较差。到这里,我们基本学习了java 中常用的运算符了。后续想起什么,在更新。

  1.  

java SE 入门之运算符(第三篇)的更多相关文章

  1. java SE 入门之输入输出(第四篇)

    在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ...

  2. SaltStack 入门到精通第三篇:Salt-Minion配置文件详解

    SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ  发布日期:2014-06-09 17:52:16   ##### 主要配置设置 ##### 配置 默认值 ...

  3. Java并发编程之CAS第三篇-CAS的缺点及解决办法

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  4. java SE 入门之语言与环境(第一篇)

    Javase的语言与开发环境Keke2016年03月08日 Java属于-Oracle公司(甲骨文)创始人:Gosling1995年诞生1998年12月发布jdk1.22002年2月发布:jdk1.4 ...

  5. Java菜鸟之java基础语法,运算符(三)

    赋值运算符 (一)JAVA种的赋值运算符 = ,代表代表的等于,一般的形式是  左边变量名称   =     右边的需要赋的指或者表达式,如果左侧的变量类型级别比较高,就把右侧的数据转换成左侧相同的高 ...

  6. Egret入门学习日记 --- 第三篇 (书中 3.4 内容)

    第三篇 (书中 3.4 内容) 今天还是要把昨天项目运行后,EXML文件里的界面没有出现的问题解决了才行. 去了群里,没人回.去了官网看文档,看不懂. 不过倒是看到了一个好东西: 还挺便宜啊,一个月要 ...

  7. java面试必备知识点-上中下三篇写的很详细

    参考博客:写的还是相当的经典 http://www.cnblogs.com/absfree/p/5568849.html 上中下三篇写的很详细 http://blog.csdn.net/riverfl ...

  8. java SE 入门之八大内置基本类型(第二篇)

    本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...

  9. java SE 入门之控制语句&方法&递归算法(第五篇)

    一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...

随机推荐

  1. 创建/读取/删除Session对象

    //创建Session对象 Session["userName"] = "顾德博";//保存,这里可以存储任意类型的数据,包括对象.集合等 Session.Ti ...

  2. day 57 Bootstrap 第一天

    一 .bootstrap是什么  http://v3.bootcss.com/css/#grid-options(参考博客) 是一个前端开发的框架. HTML CSS JS 下载地址:https:// ...

  3. arya-sites模块的主要类

      Site类,生成路由,    - 方法:url,get_urls, register, login,logout   - 字段:_registry = {}    Config,基础配置类,主要用 ...

  4. You can also run `php --ini` inside terminal to see which files are used by PH P in CLI mode

    在php.ini中打开extension=php_fileinfo.dll 就可以了

  5. 通过IntelliJ IDEA创建maven+springmvc+mybatis项目

    第一个springmvc+mybatis项目,通过学习极客学院视频(视频案例通过eclipse搭建,网址为http://www.jikexueyuan.com/course/1430.html),发现 ...

  6. 对一致性hash原理的理解

    一致性hash算法解决的核心问题是,当solt数发生变化的时候能够尽量少的移动数据.该算法最早在<Consistent Hashing and Random Trees:Distributed ...

  7. 【BZOJ3625】【codeforces438E】小朋友和二叉树 生成函数+多项式求逆+多项式开根

    首先,我们构造一个函数$G(x)$,若存在$k∈C$,则$[x^k]G(x)=1$. 不妨设$F(x)$为最终答案的生成函数,则$[x^n]F(x)$即为权值为$n$的神犇二叉树个数. 不难推导出,$ ...

  8. 远程连接MySQL提示 Host is not allowed to connect to this MySQL server

    进入连接的主机修改系统数据库MySQL 下面的user表,把User= root(这里可能是其他你所需要连接的用户名)的这行数据的Host从localhost改为% 如下图: 修改完之后一定要重启My ...

  9. linux初始

    运维 IT运维,指IT公司中,运行和维护服务器的工作 核心工作: ​ 数据不能丢失 ​ 7*24小时运行 ​ 提高用户访问效率 一句换 管服务器的 服务器 要管服务器那就得先了解服务器 服务器也称为伺 ...

  10. (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)

    原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...