菜鸡的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 ...
随机推荐
- CRM是什么,你有认真了解过CRM吗?
这是CRM的一个简单定义 客户关系管理 (CRM)是一种用于管理公司与客户和潜在客户的所有关系和互动的技术.目标很简单:改善业务关系.CRM 系统可帮助公司与客户保持联系.简化流程并提高盈利能力. 当 ...
- Docker部署Mysql,如何开启binlog
0.拉取镜像 sudo docker pull mysql:5.7 1.创建存放映射文件夹 mkdir -p mydata/mysql/log mkdir -p mydata/mysql/data m ...
- eclipse下载安装
1.下载 网址:https://www.eclipse.org/downloads/ 找到:eclipse-inst-jre-win64.exe 下载... 2.安装 找到-->Eclipse ...
- Dapr逐渐被点燃
Dapr被点燃 Dapr的热度个人认为才刚刚热起来,9月份我写了Dapr + .NET Core实战一共10篇,从基础概念到简单的实战,但是有很多人感兴趣,具体表现在我个人维护的QQ群,人数从80人左 ...
- 三种方法求解最大子区间和:DP、前缀和、分治
题目 洛谷:P1115 最大子段和 LeetCode:最大子序和 给出一个长度为 \(n\) 的序列 \(a\),选出其中连续且非空的一段使得这段和最大. 挺经典的一道题目,下面分别介绍 \(O(n) ...
- Vulnhub实战-Dockhole_2靶机👻
Vulnhub实战-Dockhole_2靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ 1.描述 hint:让我们不要浪费时间在蛮力上面! ...
- Java中的函数式编程(三)lambda表达式
写在前面 lambda表达式是一个匿名函数.在Java 8中,它和函数式接口一起,共同构建了函数式编程的框架. lambda表达式乍看像是匿名内部类的一种语法糖,但实际上,它们是两种本质不同的事物 ...
- leetcode347 —— n中topK && PriorityQueue(Heap) && Map遍历
题目要求:求前K个最频繁出现的数字. 1.很容易想到,使用HashMap<Integer,Integer>来存储<number,frequency>键值对 1 int n = ...
- 【Java虚拟机3】类加载器
前言 Java虚拟机设计团队有意把类加载阶段中的"通过一个类的全限定名来获取描述该类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类. ...
- [敏捷软工团队博客]Beta阶段测试报告
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...