第三天学习Java:运算符
一、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
算法运算符
正号、负号、加减乘除、取模(取余)
++自增(前),先运算后取值。
++自增(后),先取值后运算。
--自减(前),先运算后取值。
--自减(后),先取值后运算。
- ,字符串连接。
%取模(取余),余数符号跟被除数相同。
小程序:
class Test{
public static void main(String[] args){
int i1 = 12;
int i2 = 5;
double d1;
double d2;
d1=i1 / i2;
d2=i1 / (i2+0.0);
System.out.println(d1);
System.out.println(d2);
System.out.println("i1 % i2=" + i1 % i2);
int i3 = 10;
int t1 = ++i3;
System.out.println("i3 = " + i3 + ",t1 = " +t1);
int i4 = 10;
int t2 = i4 ++;
System.out.println("i4 = " + i4 + ",t2 = " + t2);
int i5 = 187;
System.out.println("百位数是" + i5 / 100);
System.out.println("十位数是" + i5 % 100 / 10);
System.out.println("个位数是" + i5 % 10);
}
}
$ javac Test.java
$ java Test
2.0
2.4
i1 % i2=2
i3 = 11,t1 = 11
i4 = 11,t2 = 10
百位数是1
十位数是8
个位数是7
赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
支持连续赋值
扩展赋值运算符:+=,-+,*=,/=,%=
通常写法:
i2=j2=10;
i3=10,j3=20;
int num1=10;
num1+=2; //12
int num2 = 12;
num2 % =5;//2
short s1=10;
s1 + = 2;//不会改变变量本身数据类型
s1 = s1 + 2;//报错
比较运算符(关系运算符)
运算符 运算 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
Ø 大于 4>3 true
<= 小于等于 4<=3 false
= 大于等于 4>=3 true
instanceof 检查是否是类的对象 “Hello” instaceof String true
比较运算符的结果都是boolean型,要么是true,要么是false
比较运算符“==”不能误写成“=”
逻辑运算符
& 逻辑与 | 逻辑或 ! 逻辑非
&& 短路与 || 短路或 ^ 逻辑异或
123
a b a&b a&&b a|b a||b !a a^b
true ture true true true true false false
true false fasle fasle true true false true
fasle true false false true true true true
fasle false false false fasle false true false
&与&&区分
相同点:运算结果相同;当符号左边是true时,二者都会执行右边的运算。
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行右边的运算。
同理|与||,当符号左边为true时,|继续执行右边的运算,||不再执行右边的运算。
开发中推荐使用||
例子
class Luoji{
public static void main(String[] args){
boolean b1 = false;
int i1 = 10;
if(b1 & (i1++ > 0)){
System.out.println("我现在在南京");
} else{
System.out.println("我现在在北京");
}
System.out.println(i1);
boolean b2 = false;
int i2 = 10;
if(b2 && (i2++ >0)){
System.out.println("我现在在南京");
} else{
System.out.println("我现在在北京");
}
System.out.println(i2);
}
}
$ javac Luoji.java
$ java Luoji
我现在在北京
11
我现在在北京
10
位运算符(用的很少,二进制)
操作的都是整型变量,在一定范围内每左移一位相当于*2,右移相当于/2
面试题:最高效方式计算2*8? 2<<3或8<<1
运算符 运算 范例
<< 左移(2) 3<<2=12 32*2=12
右移(/2) 3>>1=1 3/2=1
无符号右移 3>>>1=1 3/2=1
& 与运算符 6&3=2,转换2进制,01计算
| 或运算符 6|3=7,同上
^ 异或运算 6^3=5,同上
~ 取反运算 ~6=-7,包括符号位全部取反
三元运算符
格式:条件表达式?表达式1:表达式2
条件表达式为true,运算结果是表达式1;false为表达式2
表达式1和2为同种类型。
三元运算符可以嵌套使用
三元运算符与if-else的联系和区别
1、三元运算符可以简化if-else语句
2、三元运算符要求必须返回一个结果
3、if后的代码块可以有多个语句。
条件表达式为boolean类型,根据条件表达式决定执行1或者2.
例子,3个数取最大值:
$ vim SanYuan.java
class SanYuan{
public static void main(String[] args){
int n1=12;
int n2=30;
int n3=-43;
int max=((n1>n2?n1:n2)>n3)?(n1>n2?n1:n2):n3;
System.out.println("The max of n1 n2 n3 is " + max);
}
}
$ javac SanYuan.java
$ java SanYuan
The max of n1 n2 n3 is 30
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript JSON 与 AJAX
JavaScript JSON 与 AJAX JSON 是一种轻量的数据交互格式,与 AJAX 配合完成前端与服务端的信息传递,本文介绍 JSON 的使用、原生 AJAX 写法、JSONP 跨域解决方法以及 AJAX 和 JSONP 工具函数的封装 JSON 的概念所有编程语言都离不开的三大数据结构scalar 标量:数字和字符串 sequence 序列:数组和列表 mapping 映射:键值对 JSON:JavaScript Object Notation,轻量级的数据交互格式JSON 数据是没有方法的普通对象,或者是包含这种对象的数组var person = { "name": "jett", "age": "22", "sex": "男" }var persons = [ { "name": "jett", "age": "22", "sex": "男" }, { "name": "lily", "age": "20", "sex": "女" } ]JSON 的基本格式键值对以冒号隔开键名强制使用双引号并列数据用逗号隔开并列数据集合用[]包围JSON 与对象的转换JSON 转换成...
- 下一篇
Java学习第4天:分支结构
二、程序流程控制 流程控制语句是用来控制程序中各语言执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。三种基本流程结构: 顺序结构 程序从上到下逐行执行,中间没有任何判断和跳转。 分支结构 根据条件,选择性地执行某段代码。有if-else和switch-case两种分支语句。 循环结构 根据循环条件,重复性的执行某段代码。有while、do……while,for三种循环语句注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。 if-else 所有三元运算符都可以用if-else结构替代,if-else不一定能改成三元运算符。如果既可以使用三元运算符又可以使用if-else,优先选用三元运算符。原因:简洁、执行效率高。例如,3个数取最大值class SanYuan{public static void main(String[] args){int n1=12;int n2=30;int n3=-43;int max=((n1>n2?n1:n2)>n3)?(n1>n2?n1:n2):n3;//不建议这么写,可读性差System.out.prin...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库