Java基础知识(三)运算符

运算符

概述:

java中使用数据进行数学运算时使用的符号,大部分符号都有自己的算数功能 。

分类:

普通的算数运算:

+:1、表示正数 。2、表示加法运算。 3、遇到了字符串数据表示拼接字符串。

-:1、表示负数。 2、表示减法运算。

*:表示乘法运算。

/: 表示除法运算 。

%: 表示取余数运算【java叫模运算】。

代码示例:

public class ArithmeticOperator {
 
	 public static void main(String[] args) {
		 // 普通算数运算符
		 int i = 250;
		 double d = 2.5;
		 
		 System.out.println(+i);// 250
		 System.out.println(i + 23);// 273
		 System.out.println("大庆" + i );// 大庆250
		 
		 System.out.println(-i);// -250
		 System.out.println(i - 23);// 227
		 System.out.println(i * 3); // 750
		 System.out.println(i / 4.0); // 62.5
		 System.out.println(i % 4); // 2
		 // 注意:
		 // 1、两个相同的数据类型的数据运算的时候结果还是这个数据类型 【byte short char除外】
		 // 2、两个不同数据类型的数据进行运算的时候结果以大数据类型为 主
		 
		 System.out.println(d + i);// 252.5
		 
		 byte b1 = 12;
		 byte b2 = 12;
		 short s1 = 13;
		 char ch = 'a';
		 int b3 = b1 + b2 ;
		 int s2 = b1 + s1 ;
		 int s3 = b2 + ch;
		 int s4 = s1 + ch;
		 int ch1 = ch * 2;
		 double d2 = b1 + d;
		 // byte char short 在做数学运算的时候会自动的提升数据类型为
		int进行运算
	 }
 }

特殊的算数运算

java自己独有的,只使用于数字变量

++:自增运算符
含义:给变量本身的值增加1并更新

–:自减运算符
含义:给变量本身的值减1并更新 。
使用规则: 1、符号可以使用在变量的前面或者后面
2、自增单独使用的时候符号使用在前面和后面结果都一样
3、自增自减运算和其他运算混合使用:
符号使用在变量前: 先执行变量的自增或自减,然后使用自增自减后结果值去参与其他运算 。
符号使用在变量后: 先使用变量的初始值参与其他的运算,然后进行自增自减 。

代码示例:

public class ArithmeticOperator {
	public static void main(String[] args) {
		 int num = 100;
		 // num++;// 自增完事
		 //++num;
		 //System.out.println(num);// 101 输出的自增之后的值
		 
		 // System.out.println(num++);// 100 输出的是自增之前的值
		 System.out.println(++num);// 101 输出的是自增之后的值
		 System.out.println(num);// 101 输出的自增之后的值
		 
		 int sum = num++ - num-- * ++num % 3 - --num * 5;
		 // num = 101 102 101 102 101
		 // sum = 101 - 102 * 102 % 3 - 101 * 5;
		 // sum = 101 - 0 - 505; -404
	 } 
 }

赋值运算符

概述:

是使用在变量上 ,给变量存放数据的 。

分类:

普通赋值运算符:
= :赋值符号 把符号后边的数据存放到左边的变量中【作用:存值或修改值】。

扩展赋值运算符:
+= ;-=; *=; /= ;%=。
执行过程:
1、使用变量原始值和符号右边的数据进行符号中对应的算数运算【自带强制转 换】。
2、把运算的结果重新赋值给符号左边的变量 。

代码示例:

public class AssignmentOperatorDemo {
 
	 public static void main(String[] args) {
		 // 定义一个变量 
		 int num = 250;// 使用普通赋值运算符
		 // 使用扩展赋值运算符
		 num += 200;// num = num + 200;
		 System.out.println(num);// 450
		 num -= 300;
		 System.out.println(num);// 150
		 num *= 4 ;
		 System.out.println(num);// 600
		 num /= 9 ;
		 System.out.println(num);// 66
		 num %= 4 ;
		 System.out.println(num);// 2
		 
		 byte b = 125;
		 //b = (byte)(b + 2);
		 b += 2;// b = (byte)(b + 2) == b += 2吗?
		 System.out.println(b);// 127
	 } 
 }

比较运算符

概述:

用于比较两个数据之间的大小关系的符号,java中的比较运算符就是数学中的比较运算符 ,所以使用和数学中的比较运算符是一样,比较运算符运算的结果是布尔类型一种结果。

符号:

< ;>; >=; <=;==。

注意:
< ;<=; > ;>= 只能比较数字类型数据【一般指的是 整数 小数 字符】。
== != 可以比较任意数据类型的数据。

代码示例:

public class ComparisonOperatorDemo {
 
	 public static void main(String[] args) {
		 // 比较运算符 对数学运算符学习
		 int num1 = 200;
		 int num2 = 250;
		 System.out.println(num1 < num2);// true
		 System.out.println(num1 <= num2);// true
		 System.out.println(num1 > num2);// false
		 System.out.println(num1 >= num2);// false
		 System.out.println(num1 == num2);// false
		 System.out.println(num1 != num2);// true
		 // 比较运算符只能同时比较两个数据
		 String name1 = "金莲";
		 String name2 = "大郎";
		 // 字符串使用 > >= < <= 不能比较 使用 == != 就可以比较
		 System.out.println(name1 != name2);// true
		 System.out.println(name1 == name2);// false
	 
	 } 
 }

逻辑运算符

概述:

逻辑运算就是表示两个数据之间组合后的或者、并且、非关系运算的符号

符号:
逻辑与【&】:表示并且的关系 。
执行原则: 有假则假 全真则真 。
执行过程: 前后两者表达式的结果都要去执行,然后得到最终的结果 。

逻辑或【|】:表示或者关系 。
执行原则: 有真则真 ,全假则假 。
执行过程: 前后两者表达式的结果都要去执行,然后得到最终的结果 。

逻辑非【!】:表示取反的关系

为了提升逻辑与和逻辑或的执行效率出现了短路与和短路或 。
短路与【&&】
执行过程: 如果第一个表达式的结果为false, 第二个表达式不会执行得出最终结果false。如果第一个表达式的结果为true,第二个表达式继续执行得出最终结果 。

短路或【||】
执行过程: 如果第一个表达式的结果为true,第二个表达式不会执行得出最终结果true。如果第一个表达式的结果为false,第二个表达式继续执行得出最终结果。

代码示例:

public class LogicalOperatorDemo {
 
	 public static void main(String[] args) {
		 // 逻辑关系【true和false直接的逻辑组合关系】
		 int num = 2;
		 System.out.println(3 < 5 & true);// true
		 System.out.println(true & false);// false
		 System.out.println(false & num++ > 0);// false
		 System.out.println(false & num++ < 0);// false
		 System.out.println(num);// 4
		 // 短路与【&&】
		 System.out.println(false && num++ > 0);// false
		 System.out.println(false && num++ < 0);// false
		 System.out.println(num);// 4
		 System.out.println("===============");
		 System.out.println(3 < 5 | num++ > 0);// true
		 System.out.println(true | num++ < 0);// true
		 System.out.println(false | true);// true
		 System.out.println(false | false);// false
		 System.out.println(num);// 6
		 // 短路或【||】
		 System.out.println(3 < 5 || num++ > 0);// true
		 System.out.println(true || num++ < 0);// true
		 System.out.println(num);// 6
		 System.out.println("------------");
		 System.out.println(!!(3 < 5));// false
		 }
	 }

三元运算符(三目运算符)

概述:

本身不是一个符号,可以理解为是一个表达式,用来对某个条件进行判断,根据结果选择对应的结果的一种运算。

语法格式: 表达式1 ? 表达式2: 表达式3 ;
执行流程: 判断表达式1是否成立
成立:选择表达式2的结果作为三元表达式的最终结果 。
不成立:选择表达式3的结果作为三元表达式的最终结果 。

案例: 使用三元运算符求取3个数的最值 。
分析: 最大值: 先比较两个数的最大值 ,然后使用最大值和第三个数比较得出最大值 ,两个数的最大值怎么比?使用三元运算符做假设比较 ,根据结果取最大值 。

代码示例:

public class TernaryOperatorDemo {
 
	 public static void main(String[] args) {
		 int num1 = 250;
		 int num2 = 360;
		 int num3 = 361;
		 // 开始求最大值
		 int max = num1 > num2 ? num1 : num2;
		 // 把num1和num2的最大值 放到了max变中
		 // 使用num1 和 num2 的最大值max 和num3 进行比较求出最大值
		 max = max < num3 ? num3 : max ;
		 // max 和num3 的最大值放到max变量中
		// max = (num1 > num2 ? num1 : num2) < num3 ? num3 : (num1> num2 ? num1 : num2) ;
		// max 和num3 的最大值放到max变量中
		 // 比较完毕 max中就是三个数的最大值
		 System.out.println("三个数的最大值为:" + max);
		 
		 // 最小值
		 int min = num1 < num2 ? num1 : num2;
		 int min1 = min < num3 ? min : num3;
		 System.out.println("三个数值的最小值为" + min1);
	 } 
 }

位移运算符

概述:

只适用于整数的数学运算,根据数制位的移动来进行数字翻倍运算的。 计算机的相邻数制位的关系是2倍关系, 运算速度比算数运算的翻倍快。

符号:
左位移【<<】:数字整体向左边移动一个数制位, 数字扩大2倍。

右位移【>>】:数字整体向右边移动一个数制位, 数字缩小2倍。

无符号右位移【>>>】:数字整体向右边移动一个数制位 ,数字缩小2倍 。

注意: 无符号右位移只能使用于正整数, 负整数不能用 ,正整数右位移到头值是0 ,负整数右位移到头值是-1

代码示例:

public class ShiftOperatorDemo {
	 public static void main(String[] args) {
		 int num = 2; // 二进制的数 0000 0010 --> 100 1000
		 // num向左移动了一个数制位
		 System.out.println(num << 1);// 4
		 System.out.println(num << 2);// 8
		 System.out.println(num >> 1);// 1 10 --> 1
		 System.out.println(num >> 2);// 0 10 --> 0
		 
		 int num1 = -2 ; // 1000 0010
		 System.out.println(num1 << 1);// -4
		 System.out.println(num1 << 2);// -8
		 System.out.println(num1 >> 1);// -1 
		 System.out.println(num1 >> 3);// -1 
		 
		 System.out.println(num >>> 2);// 0
		 System.out.println(num1 >>> 2);// -1 只能用于正整数
	 } 
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值