文章目录哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。
本文主要讲解Java中的运算符,详见目录。如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬
✨✨✨个人主页:java-WangHY
- 🌾算术运算符
- ✨递增递减运算符
- 📈符号在前后的区别
- 🌈例子
- 🌈运行结果
- 🌈解释
- 🎯关系运算符
- 🏓一个原则
- 🍎逻辑运算符
- 💎逻辑运算真值表(1真0假)
- 🐳位逻辑运算符
- 🥝短路与和逻辑与的区别
- 🧣赋值运算符
- 🎽🎽综合例子
- 🤙字符串连接运算符
- 🐢例子
- 📈三目运算符
- 🎯例子
- 🤡写在最后
算术运算符 | 使用方式 | 含义 |
---|---|---|
减号运算符 - | *** 作数1 + *** 作数2 | *** 作数1 加上 *** 作数2 |
加号运算符 + | *** 作数1 - *** 作数2 | *** 作数1 减去 *** 作数2 |
乘号运算符 * | *** 作数1 * *** 作数2 | *** 作数1 减去 *** 作数2 |
除号运算符 / | *** 作数1 / *** 作数2 | *** 作数1 减去 *** 作数2 |
百分号运算符 % | *** 作数1 % *** 作数2 | *** 作数1 减去 *** 作数2 |
自增自减运算符 | 使用方法 | 含义 |
---|---|---|
++ | *** 作数 ++(后置递增) | 运行表达式后再将 *** 作数加一 |
++ | ++ *** 作数(前置递增) | 运行表达式前将 *** 作数先加一 |
– | *** 作数 --(后置递减) | 运行表达式后再将 *** 作数减一 |
– | – *** 作数(前置递减) | 运行表达式前将 *** 组数先减一 |
package com.blog;
/**
* @Author jinhuan
* @Date 2022/2/15
*
* about ++ --运算符
*/
public class Test {
public static void main(String[] args) {
int a = 100;
int b = 100;
System.out.println("加号运算符在前时,a的值为——>"+(++a));
System.out.println("加号运算符在后时,b的值为——>"+(b++));
System.out.println("运算结束后,a的值是——>"+a);
System.out.println("运算结束后,b的值是——>"+b);
}
}
🌈运行结果
🌈解释
自增或者自减运算符在前的时候,会先对改变量进行自增或者自减,而后进行相关的赋值运算
在后的时候,则会优先按照该变量的值进行相关的赋值计算,在最后的时候进行自减或者自加
但是,不管怎样,在改行代码运行结束的时候,该变量的值都会进行变化,自增或者自减一
🎯关系运算符关系(比较)运算符 | 使用方式 | 含义 |
---|---|---|
> | *** 作数1 > *** 作数2 | *** 作数1 大于 *** 作数2 |
< | *** 作数1 < 操作数2 | *** 作数1 小于 *** 作数2 |
>= | *** 作数1 >= *** 作数2 | *** 作数1 大于或等于 *** 作数2 |
<= | *** 作数1 <= 操作数2 | *** 作数1 小于或等于 *** 作数2 |
== | *** 作数1 == *** 作数2 | *** 作数1 等于 *** 作数2 |
!= | *** 作数1 != *** 作数2 | *** 作数1 不等于 *** 作数2 |
所有的关系运算的结果都是布尔值,即true或者false
🍎逻辑运算符逻辑运算符 | 使用方式 | 含义 |
---|---|---|
&&(短路与) | *** 作数1 && *** 作数2 | *** 作数1和2的值均为true,最终的运算结果也为true(一假为假,同真为真) |
||(短路或) | *** 作数1 || *** 作数2 | *** 作数1或2的值有一个为true,最终的结果就为true(一真为真,同假为假) |
!(逻辑非) | ! *** 作数 | *** 作数为false(即真为假,假为真) |
*** 作数1 | *** 作数2 | *** 作数1 && *** 作数2 | *** 作数1 || *** 作数2 | ! *** 作数1 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
位逻辑运算符的运算规则主要是靠二进制的运算规则,
可以把java中靠着 *** 作数的真值(即布尔值 0 或者1)视为二进制数字进行运算
位逻辑运算符 | 使用方式 | 含义 |
---|---|---|
&(逻辑与) | *** 作数1 & *** 作数2 | 0 和任何二进制位(0 或者1)进行 &运算,结果都是0;和1进行 &运算的结果均为原值 |
|(逻辑或) | *** 作数1 | *** 作数2 | 0 和任何二进制位(0 或者1)进行 |运算,结果都是原值;和1进行 |运算的结果均为1 |
~(取反) | ~ *** 作数 | 即对原值取反值,0 为 1,1 为 0 |
^(异或) | *** 作数1 ^ *** 作数2 | 相同 值为 0 ,不同 值为 1 |
最重要的一点就是:
逻辑与/或 不管怎样,前后都会进行判断
短路与/或 从左到右进行判断,当前面的判断结果已经能决定最终结果的时候,
'就不再进行后续的判断'
比如:在进行 |(短路与)运算的时候,前式的运算结果为真,
那么不管后边的结果是真还是假,都不再进行判断
🧣赋值运算符
1、赋值运算符包括“基本赋值运算符”和“扩展赋值运算符”:基本的、扩展的。
2、基本赋值运算符?
=
注意:= 运算符右边的优先级比较高,在进行运算的时候会优先进行右边的运算
然后将运行后的结果赋值给左边。
3、扩展的赋值运算符?
+=
-=
*=
/=
%=
注意:扩展赋值运算符在编写的时候,两个符号之间不能有空格。
+ = 错误的。
+= 正确的。
4、很重要的语法机制:
使用扩展赋值运算符的时候,'永远都不会改变运算结果类型'(下有实例讲解)。
byte x = 100;
x += 1;
x自诞生以来是byte类型,那么x变量的类型永远都是byte。不会变。
不管后面是多大的数字。
🎽🎽综合例子
public class OperatorTest04{
public static void main(String[] args){
// 赋值运算符“=”右边优先级比较高,先执行右边的表达式
// 然后将表达式执行结束的结果放到左边的“盒子”当中。(赋值)
int i = 10;
// 重新赋值
i = 20;
byte b = 10;
b = 20;
/*
以 += 运算符作为代表,学习扩展赋值运算符。
其它的运算符,例如:-= *= /= %= 和 += 原理相似。
*/
int k = 10;
k += 20; // k变量追加20
System.out.println(k); // 30
int m = 10;
// += 运算符类似于下面的表达式
m = m + 20;
System.out.println(m); // 30
// 研究:
// i += 10 和 i = i + 10 真的是完全一样吗?
// 答案:不一样,只能说相似,其实本质上并不是完全相同。
byte x = 100; // 100没有超出byte类型取值范围,可以直接赋值
System.out.println(x); // 100
// 分析:这个代码是否能够编译通过?
// 错误: 不兼容的类型: 从int转换到byte可能会有损失
//x = x + 1; // 编译器检测到x + 1是int类型,int类型可以直接赋值给byte类型的变量x吗?
// 使用扩展赋值运算符可以吗?
// 可以的,所以得出结论:x += 1 和 x = x + 1不一样。
// 其实 x += 1 等同于:x = (byte)(x + 1);
x += 1;
System.out.println(x); // 101
// 早就超出byte的取值范围了。
x += 199; // x = (byte)(x + 199);
System.out.println(x); // 44 (当然会自动损失精度了。)
int y = 100;
y += 100;
System.out.println(y); // 200
y -= 100; // x = x - 100;
System.out.println(y); // 100
y *= 10; // x = x * 10;
System.out.println(y); // 1000
y /= 30; // x = x / 30;
System.out.println(y); // 33
y %= 10; // x = x % 10;
System.out.println(y); // 3
}
}
🤙字符串连接运算符
+ 运算符:
1、+ 运算符在java语言中有两个作用。
作用1:求和
作用2:字符串拼接
2、什么时候求和?什么时候进行字符串的拼接呢?
当 + 运算符两边都是数字类型的时候,求和。
当 + 运算符两边的'任意一边'是字符串类型,
那么这个 + 会进行字符串拼接 *** 作。
3、注意:字符串拼接完之后的结果还是一个字符串。
🐢例子
public class Test{
public static void main(String[] args){
// 定义一个年龄的变量。
int age= 35;
// + 在这里会进行字符串的拼接 *** 作。
System.out.println("年龄 = " + age); // "年龄 = 35"
int a = 10;
int b = 20;
// 这里的 + 两边都是数字,所以加法运算
int c = a + b;
System.out.println(c); // 30
// 注意:当一个表达式当中有多个加号的时候
// 遵循“自左向右”的顺序依次执行。(除非额外添加了小括号,小括号的优先级高)
// 第一个+先运算,由于第一个+左右两边都是数字,所以会进行求和。
// 求和之后结果是300,代码就变成了:System.out.println(30 + "11");
// 那么这个时候,由于+的右边是字符串"11",所以此时的 + 会进行字符串拼接。
System.out.println(a + b + "11"); // 最后一定是一个字符串:"3011"
// 先执行小括号当中的程序:b + "11",这里的+会进行字符串的拼接,
// 拼接之后的结果是:"2011",这个结果是一个字符串类型。
// 代码就变成了:System.out.println(a + "2011");
// 这个时候的+还是进行字符串的拼接。最终结果是:"102011"
System.out.println(a + (b + "11"));
// 在控制台上输出"10+200=3"
System.out.println("10+20=30"); // 不是这样整体输出
// 以下有效的运算符加号一共有4个,这4个加号都是字符串拼接 *** 作。
System.out.println(a + "+" + b + "=" + c);
// 分析这个结果是多少?
// 以下表达式中没有小括号,所以遵循自左向右的顺序依次执行。
// 第1,2,3,4个加号都是进行字符串拼接,拼接之后的结果是:"10+20=10"
// 前4个加号运行之后是一个字符串"10+20=10"
// 然后这个字符串再和最后一个b变量进行字符串的拼接:"10+20=1020"
System.out.println(a + "+" + b + "=" + a + b);
// 和上面程序不一样的地方是:最后一个加号先执行,并且会先进行求和运算。
System.out.println(a + "+" + b + "=" + (a + b));
// 在java语言中怎么定义字符串类型的变量呢?
// int是整数型 i 是变量名 10是字面量
//int i = 10;
// String是字符串类型,并且String类型不属于基本数据类型范畴,属于引用类型。
// name是变量名,只要是合法的标识符就行。
// "jack" 是一个字符串型字面量。
String name = "李四"; // String类型是字符串类型,其中S是大写,不是:string
// 错误:类型不兼容。
//String name = 100;
// 会进行字符串的拼接
//System.out.println("欢迎" + name + "回来");
// 口诀:加一个双引号"",然后双引号之间加两个加号:"++",然后两个加号中间加变量名:"+name+"
System.out.println("欢迎"+name+"回来");
System.out.println(a + "+" + b + "=" + c);
}
}
📈三目运算符
🎯例子语法格式:
’ 布尔表达式 ? 表达式1 : 表达式2 ’
执行原理
布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。
布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果
public class Test{
public static void main(String[] args){
// 合法的java语句
// 表示声明一个变量,起名i
int i = 100;
// 这里会编译出错吗?
// 错误: 不是语句
// 100;
// 错误: 不是语句
//'男';
boolean sex = true;
// 分析以下代码是否存在语法错误?
// 错误: 不是语句
//sex ? '男' : '女';
// 前面的变量的c的类型不能随意编写。
// 最终的计算结果是字符型,所以变量也需要使用char类型。
char c = sex ? '男' : '女';
System.out.println(c);
// 实际开发中不会这样,故意的
//错误: 不兼容的类型: 条件表达式中的类型错误
//char x = sex ? '男' : "女";
//System.out.println(x);
// 这样可以吗?可以
sex = false;
System.out.println(sex ? '男' : "女");
//System.out.println(这里什么类型的数据都能放);
}
}
🤡写在最后
相信通过这篇文章,你已经对Java中的运算符有了进一步的了解,相关的案例还是建大家去实 *** 一波来加深印象。另外,我自己整理了一些自资源(笔记、书籍、软件等)分享在我的公众号上,非常欢迎大家来访白嫖和博主做朋友,一起学习进步!最后别忘啦支持一下博主哦,求三连!❤️❤️❤️
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)