菜鸡的Java笔记 第四 - java 基础运算符
数学运算符,逻辑运算,三目运算,位运算
double d2 = 314e2; //采用科学计数法的写法,表示10的2次方。= 31400.0

简化运算符
代码:x=x+y 可以变成x+=y
求模(%)
++(自增)〈++变量:表示先进行变量的自增1,而后再利用变量进行操作〉〈变量++:表示先使用变量的内容进行计算,而后自增〉,--(自减)
int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
int c = ++a; //执行完后,c=5。先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c)
三目运算符
三目运算符是一个具备带逻辑验证条件的赋值操作,可以执行一些布尔判断,而后根据布尔的结果进行赋值,其使用语法如下:数据类型 变量名称 = 布尔表达式?满足表达式时内容;不满足表达式时的内容
public class TestDemo{
public static vold main(Srting [] args){
int x = 10;
int y = 3;
// 希望将x或y的最大值赋值给result变量
// 首先要判断 x与 y 大小关系,如果x大于 y ,则将x的内容赋予result,否则将y的值赋予给result
int result = x>y?x:y;
System.out.println(result);
}
}
关系与逻辑运算
如果说关系运算符肯定:>,<,>=,<=,==(等于),!=(不等于)
但是很多情况下对于关系判断可能有多个一起进行,那么这就需要使用到逻辑运算符:与(&&(短路与),&(普通与))所有的条件同时满足时,或(||(短路或),|(普通或))有一个条件满足即可,非(!)整体求反,true变false,false变true。
与有两种操作,单(&)和双(&&):与运算的特点:(单与(&)的特点)所有的判断条件都必须返回true才会返回true,只要有一个false,都是false。(双与(&&)的特点)只要判断前面的运算不出错就是对的。
或的两种操作:特点:若干个条件只要有一个是返回true,其结果就是true,如果说现在有若干个条件,其中前面有一个条件返回了true,那么最终的结果就是true。所以为了提高判断性能,可以使用 短路或 的方式处理。
通过分析可以发现,在进行 与 和 或 的操作过程中,一定要使用“&&”或者是“||”,而不要使用其他的 普通与,普通或 操作。
位操作
位主要指进行二进制的数据操作。对于位操作首先要解决的问题是如何将十进制数据转为二进制数据。数据的依据:数字除2取余或者叫取摸,而后倒序整理。
在JAVA中提供的位运算,主要有:&,|,^,~,>>,<<
<< 左 相当于乘2 后者 除2
在进行(&)运算时,只有两个数字都是 1 的情况下才会得出1 的结果,否则为0
或(|)其值要求中一个为1 时 结果就为1,两个0 时 才会是0
异或(^)只有两个位上比较的数不一样的时候结果才为1,只要一样就为0
/*
//测试位运算
int m = 8;
int n = 4;
System.out.println(m&n); // 0
System.out.println(m|n); //12
System.out.println(~m); //-9
System.out.println(m^n); // 12 int a = 3*2*2;
int b = 3<<3; //相当于:3*2*2;
int c = 12/2/2;
int d = 12>>2;
System.out.println(a); //12
System.out.println(b); //24
System.out.println(c); //3
System.out.println(d); //3 boolean b1 = true&false;
System.out.println(b1); //false
*/
面试题:请解释“&”和“&&”,“|”和“||”的关系。
在逻辑运算中,
与 操作表示判断的若干条件要同时返回true,结果才是true;分为两种:
“&”:所有的判断条件都要进行判断,不管前面的判断结果是什么
“&&”:在进行条件判断时,如果前面的条件返回了false,后面的判断不再进行,属于短路与;
或 操作表示判断的若干条件返回一个trur即可,结果就是true,全为false才是false;
“|”:所有的判断条件都要进行判断;
“||”:在进行若干个条件判断时,如果前面有条件返回了true,后面的判断将不再进行,直接返回true;
在位运算中:
“&”:表示进行位与操作,位与操作中只中有两个内容为1,结果才是1,有一个为0计算结果为0。
“|”:表示进行位与操作,位与操作中只中有两个内容有一个为1,结果才是1,全为0计算结果才为0。
总结
编写代码时一定要只写简单运算,不要写复杂的运算。
三目运算最容易被开发者所忽略,但是真的很有用。
多个条件判断时永远使用“&&”或者是“||”
int[] a={1,2,3};
if(a==2&a==4){System.out.println("true")}
int[] a={1,2,3};
if(a==2&&a==4){System.out.println("true")}
int a = 5+4; //a=9
int b = a*2; //b=18
int c = b/4; //c=4
int d = b-c; //d=14
int e = -d; //e=-14
int f = e%4; //f=-2
m=-7;
System.out.println("m的二 进 制码是:"+Integer.toBinaryString(m));
System.out.println("m>>2的二进制码是:"+Integer.toBinaryString(m>>2));
System.out.println("(m>>2)="+(m>>2));
System.out.println("m<<2的二进制码是:"+Integer.toBinaryString(m<<2));
System.out.println("(m<<2)=:"+(m<<2));
System.out.println("m>>>24的二进制码是:"+Integer.toBinaryString(m>>>24));
System.out.println(" m>>>24 :"+ (m>>>24));
菜鸡的Java笔记 第四 - java 基础运算符的更多相关文章
- Java笔记(四)
13. 集合框架: 集合中存储的都是对象的引用(地址) 迭代器:集合的取出元素的方式 import java.util.ArrayList; import java.util.Iterator; pu ...
- java笔记--反射机制之基础总结与详解
一.反射之实例化Class类的5种方式: java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型). 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象 ...
- 【Java笔记】配置文件java.util.Properties类的使用
配置文件的路径:项目名/src/main/resources/mmall.properties mmall.properties的内容是键值对.例如假设写了ftp服务器的一些信息. ftp.serve ...
- Java笔记12:Java对象排序
代码: import java.util.Arrays; import java.util.Comparator; class Person { private String name; privat ...
- 菜鸡的Java笔记 第二十三 - java 抽象类的概念
abstractClass 抽象类的概念 1.抽象类的基本定义 2.抽象类的使用原则 不会抽象类与接口,java = 没学 ...
- 菜鸡的Java笔记 第八 - java 面向对象
面向对象的特点以及开发过程. java中最大的特点是其支持面向对象编程设计思想.在面向对象之前广泛流传的是面向过程的编程思想,例如:C语言的开发就属于面向过程 如果要想更简单的去理解面向过 ...
- 菜鸡的Java笔记 第七 - java 数组
数组的基本概念 笔试中经常出现的试题或是问题 1.1 概念 数组指的是一组相关变量的集合 如果用最原始的方式定义100个变量的话没问题但是这些变量的关联实在 ...
- 菜鸡的Java笔记 第六 - java 方法
前提:现在所讲解的方法定义格式,只属于JAVA 方法定义的其中一种组成方式.而完整的组成方式将随着学习逐步渗透. 1.方法的基本定义 方法(Method)在一些书中也会有人将其说是 函数(Funct ...
- 菜鸡的Java笔记 第五 - java 程序逻辑控制
程序主要分为三种逻辑:顺序,分支,循环. if 分支语句 if分支语句是最为基础的分支操作,但是其有三种使用形式: if语句 if.....else 语句 if....else...if...el ...
随机推荐
- css 弹性盒子--“垂直居中”--兼容写法
使用弹性盒子兼容低端适配有时需要: display:flex 和 display:-webkit-box display: -webkit-box; -webkit-box-align: cent ...
- Win32窗口框架
Win32窗口框架 WindowClass 单例,负责窗口初始化注册和取消注册: 负责提供静态方法: 放在Window类内部,方便初始化时,wndProc(HandleMsgSetup)的赋值: cl ...
- 残差网络resnet理解与pytorch代码实现
写在前面 深度残差网络(Deep residual network, ResNet)自提出起,一次次刷新CNN模型在ImageNet中的成绩,解决了CNN模型难训练的问题.何凯明大神的工作令人佩服 ...
- 从零搭建基于webpack的Electron-Vue3项目(1)——基于webpack的Vue3项目搭建
从零搭建基于webpack的Electron-Vue3项目(1)--基于webpack的Vue3项目搭建 前言 本篇文章内容,主要是基于webpack的Vue3项目开发环境进行搭建,暂时还不涉及到El ...
- PGSLQ并发控制
并发控制简介 PostgreSQL提供了多种方式以控制对数据的并发访问.在数据库内部,数据的一致性使用多版本模式(多版本并发控制(Multiversion Concurrency Control),即 ...
- NOIP&CSP 考前 Dev-cpp 的选项问题和考试心态
(进入考场后您将获得一个崭新的 \(Dev-cpp\),没有中文,没有编译选项,没有缺省源:我还将获得一个崭新的脑子,没有心态,没有智商,没有调试能力--) 中文 \[Step1 \] \[Step2 ...
- 洛谷2151[SDOI2009]HH去散步(dp+矩阵乘法优化)
一道良好的矩阵乘法优化\(dp\)的题. 首先,一个比较\(naive\)的想法. 我们定义\(dp[i][j]\)表示已经走了\(i\)步,当前在点\(j\)的方案数. 由于题目中限制了不能立即走之 ...
- 2020.10.16--vj个人赛补题
D - Drinks Choosing Old timers of Summer Informatics School can remember previous camps in which eac ...
- F1英国大奖赛-银石赛道地图及弯道
背景 今天晚上(2020-08-02)是今年英国大奖赛的正赛.刚好了解了一下赛道地图.记录一下,明年就不用到处找了. 简介 银石赛道(Silverstone Circuit)由一个废弃的空军基地改建, ...
- 第二次Alpha Scrum Meeting
本次会议为Alpha阶段第二次Scrum Meeting会议 会议概要 会议时间:2021年4月24日 会议地点:线上会议 会议时长:30min 会议内容简介:本次会议主要由每个人展示自己目前完成的工 ...