第三次学JAVA再学不好就吃翔(part8)--基础语法之运算符
学习笔记,仅供参考
文章目录
- JAVA基础语法
- 运算符
- 逻辑运算符
- 逻辑运算符&&和&的区别
- 逻辑运算符||与|的区别
- 位运算符
- &, |, ^, ~ 的用法
- 位异或运算符的特点
- >>, >>>, <<的用法
- 三元运算符
JAVA基础语法
运算符
逻辑运算符
&, |, ^, !
&&, ||
- 举个例子
class OperatorTest7 {public static void main(String[] args) {int x = 10;int y = 20;int z = 30;System.out.println(x < y & y < z);System.out.println(x < y & y > z);System.out.println(x > y & y < z);System.out.println(x > y & y > z);System.out.println("--------------");System.out.println(x < y | y < z);System.out.println(x < y | y > z);System.out.println(x > y | y < z);System.out.println(x > y | y > z);System.out.println("--------------");System.out.println(x < y ^ y < z);System.out.println(x < y ^ y > z);System.out.println(x > y ^ y < z);System.out.println(x > y ^ y > z);System.out.println("--------------");System.out.println(!true);System.out.println(!!true);}
}
输出:
true
false
false
false
--------------
true
true
true
false
--------------
false
true
true
false
--------------
false
true
逻辑运算符&&和&的区别
- 举个例子1
class OperatorTest7 {public static void main(String[] args) {int x = 10;int y = 20;int z = 30;System.out.println(x < y & y < z);System.out.println(x < y & y > z);System.out.println(x > y & y < z);System.out.println(x > y & y > z);System.out.println("--------------");System.out.println(x < y && y < z);System.out.println(x < y && y > z);System.out.println(x > y && y < z);System.out.println(x > y && y > z);}
}
输出:
true
false
false
false
--------------
true
false
false
false
我们看到&&和&输出的结果都是一样的,那它俩究竟有啥区别呢?
&&具有短路效果,若左边是false,则右边不执行;而&是无论左边是false还是true,右边都会执行。
- 举个例子2
class OperatorTest8 {public static void main(String[] args) {int x = 3;int y = 4;int a = 10;int b = 20;System.out.println((++x == 3) & (++y == 4));System.out.println((++a == 10) && (++b == 20));System.out.println("x = " + x + ", y = " + y);System.out.println("a = " + a + ", b = " + b);}
}
输出:
false
false
x = 4, y = 5
a = 11, b = 20
逻辑运算符||与|的区别
同样,||与|最终得到的结果也是一样的,但||也具有短路效果,若左边为true,则右边不执行;而|是无论左边是true还false,右边都会执行。
- 举个例子
class OperatorTest8 {public static void main(String[] args) {int x = 3;int y = 4;int a = 10;int b = 20;System.out.println((++x == 4) | (++y == 5));System.out.println((++a == 11) || (++b == 21));System.out.println("x = " + x + ", y = " + y);System.out.println("a = " + a + ", b = " + b);}
}
输出:
true
true
x = 4, y = 5
a = 11, b = 20
位运算符
&, |, ^, ~ , >>, >>>, <<, <<<
&, |, ^, ~ 的用法
&: 有0则0
|: 有1则1
^: 相同则0,不同则1
~: 按位取反
- 举个例子
class OperatorTest9 {public static void main(String[] args) {System.out.println(6 & 3);System.out.println(6 | 3);System.out.println(6 ^ 3);System.out.println(~6);}
}
输出:
2
7
5
-7
结果解释:
6 & 3可表示为:
00000110
00000011
---------&--
00000010
位运算结果为26 | 3可表示为:
00000110
00000011
---------|--
00000111
位运算结果为76 ^ 3可表示为:
00000110
00000011
---------^--
00000101
位运算结果为5~6可表示为:
00000000 00000000 00000000 00000110
---------~--
11111111 11111111 11111111 11111001
//这是补码,正数的补码是自己本身,而负数则不是
则它的反码为:
11111111 11111111 11111111 11111000
原码:
00000000 00000000 00000000 10000111
位运算结果为-7
位异或运算符的特点
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
- 举个例子
class OperatorTest9 {public static void main(String[] args) {System.out.println(5 ^ 10 ^ 10);System.out.println(5 ^ 10 ^ 5);}
}
输出:
5
10
>>, >>>, <<的用法
<<
:左移,左边最高位丢弃,右边补齐0
>>
:右移,最高位是0,左边补齐0; 最高为是1,左边补齐1
>>>
:无符号右移,无论最高位是0还是1,左边补齐0
- 举个例子
class OperatorTest9 {public static void main(String[] args) {System.out.println(12 << 1);System.out.println(12 << 2);System.out.println(12 >> 1);System.out.println(12 >> 2);}
}
输出:
24
48
6
3
三元运算符
- 三元运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
关系表达式返回的不是True就是False,若关系表达式返回的是True就返回表达式1的值,若关系表达式返回的是False就返回表达式2的值.
- 举个例子1
class OperatorTest10 {public static void main(String[] args) {int x = 10;int y = 5;int z;z = (x > y) ? x : y;System.out.println("z = " + z);}
}
输出:
z = 10
- 举个例子2
比较3个整数,得到其中的最大值
class OperatorTest10 {public static void main(String[] args) {int x = 10;int y = 5;int z = 15;int temp = (x > y) ? x : y;int max = (temp > z) ? temp : z; System.out.println("max = " + max);}
}
输出:
max = 15
第三次学JAVA再学不好就吃翔(part8)--基础语法之运算符相关推荐
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part14)--基础语法之循环语句注意事项
学习笔记,仅供参考 文章目录 JAVA基础语法 for, while, do...while的区别 死循环 循环嵌套 JAVA基础语法 for, while, do-while的区别 do-while ...
- 第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换
学习笔记,仅供参考 文章目录 JAVA基础语法 数据类型转换之隐式转换 数据类型转换之强制转换 JAVA基础语法 数据类型转换之隐式转换 byte类型转换为int类型 class TypeConver ...
- 第三次学JAVA再学不好就吃翔(part19)--二维数组
学习笔记,仅供参考 文章目录 JAVA基础语法 二维数组 二维数组的格式 二维数组的遍历 二维数组的求和 基本数据类型和引用数据类型的参数传递问题 JAVA基础语法 二维数组 二维数组的格式 格式1 ...
- 第三次学JAVA再学不好就吃翔(part18)--数组操作
学习笔记,仅供参考 文章目录 JAVA基础语法 数组操作 索引越界 空指针异常 遍历 获取数组中最大值 反转 根据元素找索引 JAVA基础语法 数组操作 索引越界 我们先看下面这段代码: class ...
- 第三次学JAVA再学不好就吃翔(part17)--数组
学习笔记,仅供参考 文章目录 JAVA基础语法 数组概述 数组的初始化 内存分配 绘制内存图 JAVA基础语法 数组概述 数组概念 数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器.数组既 ...
- 第三次学JAVA再学不好就吃翔(part16)--方法及方法重载
学习笔记,仅供参考 文章目录 JAVA基础语法 方法概述 方法重载 JAVA基础语法 方法概述 为什么要有方法 为了提高代码的复用性 什么是方法 完成特定功能的代码块. 方法的格式 修饰符 返回值类型 ...
- 第三次学JAVA再学不好就吃翔(part15)--基础语法之控制跳转语句
学习笔记,仅供参考 文章目录 JAVA基础语法 break语句 continue语句 标号 return语句 JAVA基础语法 break语句 应用场景 只能在switch和循环中使用 举个例子 cl ...
最新文章
- Core禁用BIP70或只为制造闪电网络硬需求
- 马哥运维架构 第一周作业
- 大页(Huge Page)简单介绍
- 中缀表达式生成二叉树
- Spring简洁总结
- bootstrap 居中 表格中_使用Twitter Bootstrap在表格单元格中垂直居中
- (计算机组成原理)第一章计算机系统概述-第三节:计算机层次结构
- 多目标跟踪新范式:CenterTrack
- 用ifconfig命令,只有lo,没有eth0的解决方案
- 全球最大同性交友网站 GitHub 10 岁了!
- 信息资源管理——基础
- Promise及其应用
- C语言的转义字符,八进制
- xilinx Edition arm M3 使用笔记
- Nette框架:第一印象
- 详细的介绍sigmoid函数
- CAD版本转换,手机该如何转换操作呢?
- 练习题(困难) 百慕大三角 POJ1069
- springboot 图片映射404问题
- 应我校园0.8.3上线
热门文章
- Ext 入门 (05) 打印+gridpanel()方法
- MySql 的一些使用小技巧
- Windows下的bat原来可以为我们做很多
- Beginning SDL 2.0(4) YUV加载及渲染
- PON的技术优势及前景应用
- 从零写一个编译器(一):输入系统和词法分析
- 【转】python装饰器
- 有关 MyEclipse-export runnable jar file选项 launch configuration里面没有可以选择的东西的解决方法...
- 第十七篇 计算机组成原理
- 【剑指offer】二叉树的深度_solution2