【JAVASE_学习笔记】运算符
来源:互联网 发布:汇智通兼职数据录入 编辑:程序博客网 时间:2024/06/01 09:03
【JAVASE_学习笔记】运算符
算数运算符
+(正数,加号,连接符)
连接符:数据与字符使用+,此时+作为一个连接符,拼接字符串。任何数据与字符串使用连接符,结果类型为字符串类型。
注意:计算机每次只能运算一个+
System.out.println(1+2+3+"hello"+1+2+3);//输出6hello123
-(减号)
*(乘号)
/(除号)默认取整
%(取模,取余数)取模运算结果正负取决于被除数的正负
System.out.println(10%3);//1System.out.println(10%(-3));//1System.out.println((-10)%3);//-1System.out.println((-10)%(-3));//-1
++(自增)- -(自减)
应用场景:
1)单独使用:不管是++或者–在数据前还是数据后都是自增1或者自减1
2)参与运算使用:
a:++,- -在数据的前面,先自增1或者自减1,然后在运算(赋值)
b:++,- -在数据的后面.先运算(先赋值),然后自增1或者自减1
练习:
/* * 1 : int a = 10; int b = 10; int c = 10; a = b++; c = --a; b = ++a; a = c--; 请分别计算出a,b,c的值2:int x = 4;int y = (x++)+(++x)+(x*10);分别求出x和y的值 * */public class OperatorTest { public static void main(String[] args) { int a = 10; int b = 10; int c = 10; a = b++;//a=10 ,b=11 c=10 c = --a;//a=9 ,b=11,c=9 b = ++a;//a=10,b=10, c=9 a = c--;// a=9, b=10,c=8 System.out.println("a:"+a); System.out.println("b:"+b); System.out.println("c:"+c); System.out.println("-----------------------"); int x = 4; int y = (x++)+(++x)+(x*10); //x = 4,5,6 //y = 4 + 6 + (6*10) System.out.println("x:"+x); System.out.println("y:"+y); }}
赋值运算符
=(赋值运算符)
拓展的赋值运算符:
+=
表达的意思:将当前符号右边的数据和左边的数据相加赋值给左边的数据
-=
*=
/=
%=
对于扩展的赋值运算符:隐藏了默认的强制类型转换
例如:
/* * 面试题: short s=1; s = s+1; short s=1; s+=1; 上面两个代码有没有问题,如果有,哪里有问题。 * */public class OperatorTest { public static void main(String[] args) { //定义变量// short s = 1 ;// s = (short) (s + 1) ; short s = 1 ; s += 1 ; System.out.println(s); }}
比较运算符
符号连接的表达式结果都是boolean类型
== 作用:
1.用于基本数据类型数据比较时,判断两个数据是否相等;
2.用于引用数据类型比较时,比较的是两个变量所指向的对象是否为同一个(比较的是内存地址)
!= (不等于)
< (小于)
< (大于)
<= (小于等于)
>= (大于等于)
逻辑运算符
主要作用是用于连接布尔表达式的
& (与) 两边都true,才true
| (或) 一边为true,就为true
! (非) true边false,false边true
^ (异或) 两边不同为true,相同为false
&&(短路与)
||(短路或)
逻辑双与&&和逻辑单与& 的区别 (逻辑双或||和逻辑单或|):
相同点:结果相同
不同点:
使用&&时,若左边为false,则不会运算右边布尔表达式,直接返回false;
使用||时,若左边为true,则不会运算右边布尔表达式,直接返回true
位运算符
使用位运算符时,将1看为true,将0看为false
&(位与)
|(位或)
^(位异或)
位异或的一个特点:一个数据被另一个数据位异或两次,结果是该数据本身
~(取反)
public class OperatorDemo { public static void main(String[] args) { //位运算符 System.out.println(3 & 4); System.out.println(3 | 4); System.out.println(3 ^ 4);//(位异或:重点) System.out.println(~3); }}/* * 计算出int类型3和4对应的二进制数据 * 00000000 00000000 00000000 00000011 * 00000000 00000000 00000000 00000100 *位与:& * 特点:有0则0 * 00000000 00000000 00000000 00000011 * 位与&:00000000 00000000 00000000 00000100 * ------------------------------------------------------- * 结果: 00000000 00000000 00000000 00000000 * 0 * 位或|: * 特点:有1,则1 * 00000000 00000000 00000000 00000011 * 位与|:00000000 00000000 00000000 00000100 * ------------------------------------------------------- * 00000000 00000000 00000000 00000111 * 结果:7 * * 位异或:^ * 特点:相同则为0,不同则为1 * 00000000 00000000 00000000 00000011 * 位与^:00000000 00000000 00000000 00000100 * ------------------------------------------------------ * 00000000 00000000 00000000 00000111 * 结果:7 * * 反码:~:特点:按位取反(底层对补码进行按位取反) * 00000000 00000000 00000000 00000011 原码,反,补 * ~ -------------------------------------------------- * * 最高符号位 数值位 * 1 1111111 11111111 11111111 11111100(补码)--->原码 * -1 * 1 1111111 11111111 11111111 11111011 --->反码 * 1 0000000 00000000 00000000 00000100 * - 4 * * 结果:-4 * */
<<(左移) 最左边的最高符号为丢弃,右边补齐0
规律:一个操作数进行左移运算时,等于该操作数乘以2的n次方,n是移动的位数
>>(右移) 最高符号位为0,左边补0,最高符号位为1,左边补齐1
规律:一个操作数右移时,等于该操作数除以2的n次方,n是移动的位数
>>>(无符号右移) 不管最高符号位是0还是1,左边补齐0
三元运算符(三目运算符)
格式:
(表达式)? true的结果 : false的结果;
执行流程:
如果表达式成立,执行true的结果;
如果表达式不成立,执行false的结果;
public class OperatorDemo { public static void main(String[] args) { //求两个数据是否相等 int a = 100; int b = 200 ; //用三元运算符实现// boolean flag = (a==b) ? true : false;//==表示两个数据进行比较// System.out.println("flag:"+flag); //优化改进 boolean flag = a==b ; System.out.println(flag); //求两个数据中的最大值 //先定义变量max int max = (a>b) ? a : b ; System.out.println("两个数据中的最大值是:"+max); System.out.println("-----------------------"); //求三个数据中的最大值 int m = 10 ; int n = 50 ; int z = 20 ; //可以使用中间第三方变量进行实现,实际开发中就使用第三方进行实现// int temp = (m>n) ? m : n ;// //定义max2// int max2 = (temp > z) ? temp : z ; //一步走: int max2 = (m>n) ? ((m>z)? m: z) : ((n>z)? n: z) ;//不建议使用 System.out.println("三个数据中的最大值是:"+max2); }}
键盘录入
步骤:
A:创建键盘录入对象:Scanner类: java.util包下的类
固定格式:
sc:对象名
Scanner sc = new Scanner(System.in); //实质还是通过IO流实现的(java高级特性)
B:导包:位置:class和package中间
import java.util.Scanner;
C:录入数据:使用对象名调用方法
int a = sc.nextInt();
D:输出
package _11.org.westos_键盘录入;import java.util.Scanner;//导包:import java.util.Scanner;快捷键:ctrl+shift+o/* * 键盘录入两个数据,并对这两个数据求和,输出其结果 * */public class ScannerTest { public static void main(String[] args) { //1)创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //2)录入数据 //提示 System.out.println("请输入第一个数据:"); int firstNumber = sc.nextInt() ; System.out.println("请输入第二个数据:"); int secondNumber = sc.nextInt() ; //定义个最终变量 int result = firstNumber + secondNumber ; System.out.println("result:"+result); }}
- 【JAVASE_学习笔记】运算符
- 【JAVASE_学习笔记】基础知识
- 【JAVASE_学习笔记】数据类型
- 【JAVASE_学习笔记】数组
- 【JAVASE_学习笔记】多态
- 【JavaSE_学习笔记】泛型
- 【JAVASE_学习笔记】内部类
- 【JavaSE_学习笔记】正则表达式
- 【JavaSE_学习笔记】List接口
- 【JavaSE_学习笔记】异常体系
- 【JavaSE_学习笔记】File类
- 【JavaSE_学习笔记】字节流
- 【JAVASE_学习笔记】标识符与注释
- 【JAVASE_学习笔记】流程控制语句
- 【JAVASE_学习笔记】函数与重载
- 【JAVASE_学习笔记】类与对象
- 【JAVASE_学习笔记】抽象类与接口
- 【JavaSE_学习笔记】Integer和Character
- 每日一道算法题(2)
- VMware和Linux的安装
- 欢迎使用CSDN-markdown编辑器
- 一题多解 —— linux 日志文件(log)reload 重新载入
- Python Requests库详解
- 【JAVASE_学习笔记】运算符
- Java9新特性——module模块系统
- Java 9 新特性来临——模块化--详解
- kafka的consumerConnector.createMessageStreams 方法源码分析
- ubuntu常用命令
- Android 源码设计模式解析与实战 第2版 读书笔记1.5 接口隔离原则
- ORB-SLAM(1) --- 让程序飞起来
- springboot+poi导出指定格式Excel模板详解+Demo
- 子类继承父类放法访问权限的问题