java se入门_java SE 入门之运算符(第三篇)

d1587f1bbd0cd5a0d8737084dae806c5.png

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

我们一起来学习下吧!

一、赋值运算符

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classHello {public static voidmain(String[] args ) {int a=1;

a+=10;intb;

b+=10;

}

}

赋值运算符+=

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

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

下面我们在来看下代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classHello {public static voidmain(String[] args ) {short s=1000;short sum=s+100;

}

}

赋值运算符02

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

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classHello {public static voidmain(String[] args ) {short s=1000;short sum=(short) (s+100);//圆括号"()"代表一个整体,方括号“[]”代表所引器、花括号“{}”代表体,如方法体,循环体等后续会讲到,这个必须要整体转换

int count=s+100;

}

}

赋值运算符,自动转换

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

public classHello {public static voidmain(String[] args ) {short s=1000;//short sum=s+100;//int count=s+100;// s+=100;//s+=100 <===>s=s+100;

short sum=s;

}

}

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

有一脸懵逼。

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

二、算术运算符

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

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

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

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

public classHello {public static voidmain(String[] args ) {int a=1024;int b=128;

System.out.println(a+b);//加法运算

System.out.println(a-b);//减法运算

System.out.println(a*b);//取积

System.out.println(a/b);//取商

System.out.println(a%b);//取余

}

}

在看下输出结果

2a94e1408c91e996affdb3f0929eb47e.png

有些人会认为很简单

可是在看下边的代码:

public classHello {public static voidmain(String[] args ) {int a=11;int b=5;

System.out.println(a/b);//取商

System.out.println(a%b);//取余

}

}

可是结果不一样了

ce619168d59f1c9ed859c42a470947e4.png

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

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

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

public classHello {public static voidmain(String[] args ) {int a=11;double b=5;

System.out.println(a/b);//取商

System.out.println(a%b);//取余

}

}

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

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

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

public classHello {public static voidmain(String[] args ) {int i=0;

i++;

System.out.println(i);

}

}

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

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

public classHello {public static voidmain(String[] args ) {int i=0;int num=i++;

System.out.println(i);

System.out.println(num);int n=0;int number=++n;

System.out.println(n);

System.out.println(number);

}

}

58afd877a9f5fd5b8f9aeead53db3fac.png

看到结果,我们回答县,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中字符串用双引号表示。

public classHello {public static voidmain(String[] args ) {int a=10;int b=5;

System.out.println(a+b);double c=3.14;

System.out.println(c+a);

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

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

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

}

}

6c09d6ba92a330a6619e63dfc1e2b916.png

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

在上述代码中

System.out.println( "a+b="+a+b);这句话的结果没有截图,这句话的结果是 a+b=105;

解释下,a+b= 这部分是一个字符串,当加上a的时候"a+b="+a 也是一个字符串,所以在加b的时候是拼接字符串.

这里留下个问题?当我想输出 10+5=15 和 a+b=15,这个要怎么写.

五、逻辑运算符

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

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

位运算

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

。看代码

public classHello {public static voidmain(String[] args ) {int a=1;int b=2;int c=a&b; //a与b

System.out.println(c);int d=a|b;//a或b

System.out.println(d);int e=a^b;//a 异或 b

System.out.println(e);//boolean f=a!b;//a 非 b 是会报错的,在JDK 1.5以前的版本,是可以写的//System.out.println(d);

}

}输出结果位0、3、3.

来看下a 与 b 是怎么来比较的。 因为a=1 a 是四个字节 也就是说是32 位 。二进制换算在上一篇文章有介绍 ,我们这里只描述后面8位,因为前面都是0.

变量a 的二进制表示为 0000 0001 ,变量b的二进制表示为 0000 0010 。看下图

12debf9034abb67d1d62bfe34153efa8.png总结:运算时均把运算数转换为二进制再做比较。

规则(&):当相同的位上均为1时结果为1,否则结果为0 ,术语叫做“有0则为0”,下图的案列就有均为1。

d4ca65fee2c07bb80b3a05de396e68a4.png

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

9dfda0debd7f635fe76e9009dd525425.png怕大家看不懂,后边在列个例子

e25f213e14d7e7247ab67713dd268045.png

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,反之亦然。

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

逻辑运算

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

public classHello {public static voidmain(String[] args ) {int a=9;int b=1;

System.out.println(a>0&b<10); //true |true = True 有假则为假 有0则为0

System.out.println(a>10&b<0); //false|false =false 有假则为假 有0则为0

System.out.println(a>0&b<0);//True|false=false 有假则为假 有0则为0

System.out.println(a>0|b<10); //true |true = True 有真则为真 有1则为1

System.out.println(a>10|b<0); //false|false =false 有真则为真,没有就是false 有1则为1

System.out.println(a>0|b<0); //True|false=true 有真则为真 有1则为1

}

}

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

d6a952b460487f77548104249b22e51f.png

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

public classHello {public static voidmain(String[] args ) {

boolean b1=true;

boolean b2=false;

System.out.println(b1&&b2);

System.out.println(b1&b2);

}

}

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

public classHello {public static voidmain(String[] args ) {

boolean isBool=false;

boolean b=true;

boolean ool=true;int num=1;

b=isBool&num++>0;

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

System.out.println(num);//2

int number=1;

ool=isBool&&number++>0;

System.out.println(ool);//false

System.out.println(number);//1

}

}

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

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

六、三目运算符

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

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

public classHello {public static voidmain(String[] args ) {

System.out.println(1>2?"为真进入":"为假进入");

String result=2>1? "true": "false";//String 代表字符串,后续会讲解字符串

System.out.println(result);

}

}

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

public classHello {public static voidmain(String[] args ) {int a,b=20;

a=10;int num=a>b?a

System.out.println(num);

System.out.println(a>b?(a

}

}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java7最后战线_我的世界最后战线2.0整合包

我的世界1.7.2最后战线The end battle line正式V2修复版是我的世界最后战线2.0整合包。游戏信息地图名字: The End Battle Line「正式版」地图分类: 其他地图类型: 存档地图版本: 后期Anvil格式(1.3)游戏介绍>>前言<<经过了半学期加整整大半个暑假的努力&#xff0…

java敏感异常是什么_java中的异常是什么?

Throwable(所有error和exception的父类:超类)Java将错误变成对象交给异常处理机制Error(仅靠程序本身无法恢复的严重错误)一般是环境的问题&#xff0c;JVM的问题&#xff0c;并非程序的问题&#xff1b;最典型的就是虚拟机中运行的程序过多&#xff0c;造成的虚拟机内存溢出&a…

java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...

在 thinking in java中看到过说Stack类继承于Vector&#xff0c;而这两个类都不推荐使用了&#xff0c;但是在做一到OJ题时&#xff0c;我用LinkedList来模拟栈和直接用Stack&#xff0c;发现在进行入栈出栈操作时Stack的速度竟然还快一点然而需要多线程的时候有Collections.sy…

reducebykeyandwindow java_Spark Streaming笔记整理(三):DS的transformation与output操作

[TOC]DStream的各种transformationTransformation Meaningmap(func) 对DStream中的各个元素进行func函数操作&#xff0c;然后返回一个新的DStream.flatMap(func) 与map方法类似&#xff0c;只不过各个输入项可以被输出为零个或多个输出项filter(func) 过滤出所有函数func返回值…

php学好要多久,零基础php自学要多久

万事开头难&#xff0c;自学编程也是一样&#xff0c;只要能入门&#xff0c;在学起来就容易多了&#xff0c;那么零基础自学编程多久才可以入门呢&#xff0c;如何才能找到自学编程的门道呢&#xff1f; (推荐学习&#xff1a;PHP视频教程)零基础自学编程也可以&#xff0c;关…

php laravel 优点,Laravel 特点有哪些?

Laravel特点&#xff1a;1、“artisan”命令行工具&#xff0c;可以自动化完成手动的工作&#xff1b;2、“migration”管理数据库和版本控制&#xff1b;3、测试功能也很强大&#xff1b;4、适合应用各种开发模式TDD、DDD和BDD&#xff1b;5、支持Composer包管理工具。Laravel…

php+代码行数常量,php统计文件中的代码行数

函数介绍&#xff1a;file_get_contents()把整个文件读入一个字符串中。explode() 函数使用一个字符串分割另一个字符串&#xff0c;并返回由字符串组成的数组。count() 函数返回数组中元素的数目。在线视频教程分享&#xff1a;php视频教程示例如下&#xff1a;public functio…

PhP加载时显示动画,在ajax请求完之前的loading加载的动画效果实现

这篇文章给大家介绍的内容是关于在ajax请求完之前的loading加载的动画效果实现&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。很多时候我们需要引入框架来开发项目&#xff0c;这时我们可能会遇到页面还没加载完源码出来了的…

mybatis连接oracle12乱码,使用mybatis链接oracle数据库出现账号密码错误解决

使用mybatis链接oracle数据库步骤最近oracle老师布置下来了作业&#xff0c;要求使用传统的java代码链接oracle数据库做一个小程序&#xff0c;因为我已经很熟练的掌握了ssm框架的开发&#xff0c;以前用的是mysql&#xff0c;现在就尝试尝试oracle来练练手。问题一 oracle 的j…

linux关闭gvim命令,Linux 下 8 种退出 vim 编辑器的方法

Vim被称为一个非常强大的文本编辑器&#xff0c;但同样以其陡峭的学习曲线而闻名。 如果您经常使用命令行&#xff0c;那么至少应该学习一些基本功能。 如果你没有花时间去学习它&#xff0c;即使像退出Vim这样简单的事情也很困难。Vim是一套独立的软件&#xff0c;它有自己的一…

编译 linux 3,linux内核的编译(3)

linux内核的编译(3)2008-02-23 07:17:46来源&#xff1a;互联网 阅读 ()无论什麽档名)&#xff0c;然後将你做的 zImage 拷贝进去&#xff0c;(例如&#xff0c;如果你用” /vmlinuz ″的话&#xff0c;就像这样″ cp zImage /vmlinuz ”)。接著重新执行 lilo — 在较新的系统上…

linux 端口限速技术,linux下如何实现对每个IP进行限制带宽??

linux下如何实现对每个IP进行限制带宽&#xff1f;&#xff1f;(2011-09-01 01:03:54)标签&#xff1a;杂谈linux下如何实现对每个IP进行限制带宽&#xff1f;&#xff1f;redhatlinux服务器&#xff0c;最近发现单位的网内BT下载、迅雷下载太多&#xff0c;严重影响正常上网&a…

Linux做施压机的最大线程数,关于性能测试的几个要点

几个定义性能测试(Performance Test)通常收集所有和测试有关的所有性能&#xff0c;通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能&#xff0c;度量系统与预定义目标的差距。关注点&#xff1a;how much和how fast负载测试(Load Test)负载测试是一种性能测试&…

线性分组码c语言实验报告,C语言线性分组码(附注释).doc

C语言线性分组码(附注释).doc下载提示(请认真阅读)1.请仔细阅读文档&#xff0c;确保文档完整性&#xff0c;对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档&#xff0c;不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&a…

杭电2005题c语言答案,杭电2005

题不难&#xff0c;但细节较多&#xff0c;所以。。。不但二月闰年有影响&#xff0c;七八月都是31天&#xff0c;这个也得专门分开讨论&#xff0c;还有就是七八月份开讨论后&#xff0c;加的基数是三到七月的&#xff0c;不能完全复制上面的代码&#xff0c;基数得改~做题还是…

android自定义dialog 全屏,自定义dialog全屏显示

默认的Dialog是不能全屏的。也就是怎么设置Dialog的Layout都没用的。下面给出实现Dialog实现全屏的两种方式&#xff1a;1、代码实现。这中方法相对比较简单首先继承Dialig&#xff0c;然后再构造函数中添加super(context, android.R.style.Theme);setOwnerActivity((Activity)…

全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...

最近忙各类事情&#xff0c;blog写的不系统&#xff0c;见谅。这几天搞到了前不久被媒体宣传过的只有U盘大小的Android 4.0小PC。他的样子如下&#xff0c;使用HDMI接口连接显示器再外接一个usb键盘鼠标就能作为PC用了。托朋友买了台&#xff0c;试用了下果然还不错&#xff0c…

支付宝 android 2.3,app被拒记录-2.3-包含支付宝

2. 32020年8月21日 上午1:29发件人 Apple* 2. 3 Performance: Accurate Metadata### Guideline 2.3.1 - PerformanceWe discovered that your app contains hidden features. Attempting to hide features, functionality or content in your app is considered egregious beha…

html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码

动态网页设计需要用到什么工具&#xff1f;一般的用网页三剑客&#xff0c;dreamwear一般必用&#xff0c;比较好上手的&#xff0c;html是要懂的&#xff0c;cssdiv的标注设计也是要学习的。 如果是做前台页面设计会用到的工具&#xff1a;firework、flash、ps、 coreldraw 如…

html文件设置断点调试,断点调试

断点调试使用 ES2015 特性来开发 Node.js 项目可以带来巨大的便利&#xff0c;但同时由于有些特性现在还不支持&#xff0c;需要借助 Babel 编译&#xff0c;运行的代码实际上是编译后的代码&#xff0c;这样给调试带来很大的麻烦。ThinkJS 从 2.2.0 版本开始支持断点调试源代码…