目录
上一章,我们一起了解了Java内容的基本语法,看下图:
看到这些内容,大家首先问自己几个问题:
- 它是什么?
- 它怎样用?
- 为什么要用它?
如果你发现不能完整回答出来,请花一点时间将前面的知识复习一下,对抗遗忘!
根据艾宾浩斯的遗忘曲线分析,看下图:
由上图可知,我们的记忆数量往往是当天学习后是遗忘最快的。这就是你学习后,会发现第二天突然发现昨天明明学了那么多,结果发现今天感觉自己什么都忘了一样。
所以,在学习过程中,我们需要去花一点时间复习。
那么,复习的好处是什么呢?,请看下图:
不难发现,如果你花时间去复习,你的记忆维持率肯定是比你不去复习高太多了,至少60%以上。
当然复习时间也是有规律的,大家可以参考:
复习点的确定(根据艾宾浩斯记忆曲线制定):
1. 第一个记忆周期:5分钟
2. 第二个记忆周期:30分钟
3. 第三个记忆周期:12小时
4. 第四个记忆周期:1天
5. 第五个记忆周期:2天
6. 第六个记忆周期:4天
7. 第七个记忆周期:7天
8. 第八个记忆周期:15天
(具体详情,可参考 百度百科:https://baike.baidu.com/item/%E8%89%BE%E5%AE%BE%E6%B5%A9%E6%96%AF%E8%AE%B0%E5%BF%86%E6%B3%95 )
Java基本语法
1.运算符(一句话)
回归正题,继续开始我们Java学习之路。客官,您里边请!
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。
通过前面我们学习的基本概念(单词)加上运算符,我们就可以理解我们能写出一句英语的句子来了。
我们可以把常用的运算符分成以下几组:
算术运算符
- 概念
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。如下:
#表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 描述 例子
+ 加法 - 相加运算符两侧的值 A + B 等于 30
- 减法 - 左操作数减去右操作数 A – B 等于 -10
* 乘法 - 相乘操作符两侧的值 A * B等于200
/ 除法 - 左操作数除以右操作数 B / A等于2
% 取余 - 左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21
-- 自减: 操作数的值减少1 B-- 或 --B 等于 19
下面我们来看代码操作:
1.实例
下面的简单示例程序演示了算术运算符。复制并粘贴下面的 Java 程序并保存为 Test.java 文件,
然后编译并运行这个程序:
实例
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a - b = " + (a - b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
System.out.println("a++ = " + (a++) );
System.out.println("a-- = " + (a--) );
// 查看 d++ 与 ++d 的不同
System.out.println("d++ = " + (d++) );
System.out.println("++d = " + (++d) );
}
}
运行实例 »
以上实例编译运行结果如下:
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++ = 10
a-- = 11
d++ = 25
++d = 27
- 算术运算符的注意问题
- 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是 负数则不可忽略。此外,取模运算的结果不一定总是整数。
(记住这个规律即可)
Java取余运算规则如下:
a%b = a - (a/b)*b
5%2=5-(5/2)*2=5-4=1;
5%-2=5-(5/-2)*(-2)=5-(4)=1;
//当被除数为正,除数为正,负的情况,发现结果都为正
-5%2=-5-(-5/2)*2=-5+4=-1;
-5&-2=-5-(-5/-2)*(-2)=-5+4=-1
//当被除数为负,除数为正,负的情况,发现结果都为负
//所以:判断取余为正负的情况优先看【被除数】
- 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的 结果是3000 而不是3510.
- “+”除字符串相加功能外,还能把非字符串转换成字符串,不会去计算
例如: System.out.println(“5+5=”+5+5);
//打印结果是:5+5=55 而不是5+5=10;
赋值运算符
- 赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。
- 下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
%= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
- 实例
下面的简单示例程序演示了赋值运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 0;
c = a + b;
System.out.println("c = a + b = " + c );
c += a ;
System.out.println("c += a = " + c );
c -= a ;
System.out.println("c -= a = " + c );
c *= a ;
System.out.println("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );
}
}
以上实例编译运行结果如下:
c = a + b = 30
c += a = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a = 5
- 注意
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
支持连续赋值。
关系运算符
- 也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
- 下表为Java支持的关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
- 实列
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
以上实例编译运行结果如下:
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
- 注意
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。
逻辑运算符
- 逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
- 下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
- 实列
public class Test {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
}
}
以上实例编译运行结果如下:
a && b = false
a || b = true
!(a && b) = true
- 注意
需要明白:&和&& |和||的区别?
public class Test{
public static void main(String[] args){
int a = 5;//定义一个变量;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路逻辑运算符的结果为"+b);
System.out.println("a的结果为"+a);
}
}
运行结果为:
使用短路逻辑运算符的结果为false
a的结果为5
解析: 该程序使用到了短路逻辑运算符(&&),
首先判断 a<4 的结果为 false,则 b 的结果必定是 false,
所以不再执行第二个操作 a++<10 的判断,
所以 a 的值为 5。
public class Test{
public static void main(String[] args){
int a = 5;//定义一个变量;
boolean b = (a<4)&(a++<10);
System.out.println("a的结果为"+a);
}
}
a的结果为6
解析: 该程序使用到了普通逻辑运算符(&),
首先判断 a<4 的结果为 false,则 b 的结果必定是 false,
但是它是&,它依然执行第二个操作 a++<10 的判断,导致a又进行加一
所以 a 的值为 6。
可参考:https://blog.csdn.net/qq_35038153/article/details/79657846
三元运算符
- java 提供了一个特别的三元运算符(也叫三目运算符)经常用于取代某个类型的 if-else 语句。条件运算符的符号表示为“?:”使用条件运算符的一般语法结构为:
- 该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
(条件表达式)?表达式1:表达式2;
1.为true,运算后的结果是表达式1;
2.为false,运算后的结果是表达式2;
3.表达式1和表达式2为同种类型
- 实列
public class Test {
public static void main(String[] args){
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a > 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
// 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
b = (a >= 10) ? 20 : 30;
System.out.println( "Value of b is : " + b );
}
}
以上实例编译运行结果如下:
Value of b is : 30
Value of b is : 20
- 注意
格式和判断的流程不要搞错了哟!
其他运算符
(还有一些其他的运算符,咱们以后讲,大家请先搞清楚以上的运算符,建议找一些经典案列,亲手操作一下,你会更有体验感)
(本节完,未完待续)
下节预告:Java基础-学会流程控制(一段话)
教你如何将上面的句子通过不同的逻辑流程组成一段话,表现出更多的意思,敬请期待。