Hello,我是阿ken
上次也有提到最近一直在猛淦 Java基础的博文,接下来就是 Java进阶,然后根据一些渠道往我心中的 Java开发的那条路上走,这次系统的整理一下我的 小白进军 Java开发之路,阿ken会跟CSDN的每一个小伙伴一起学习一起进步,同时也是记录我接下来的编程学习。阿ken跟CSDN的兄弟萌u1s1,对于一个只涉足不到两年的小白来说,我学的很碎也很不成体系,也一直在学习的路上,所以如有不足还请大佬留步指点一二。
Java 中的各种运算符操作
运算符
算术运算符(+、-、*、/、%)
重点:++
++ 无论出现在变量前还是后,运算结束后,一定会自加1。
自增、自减运算符
自增自减运算符(+、-),++、--是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量,作用是使变量的值增1或减1。
++x和x++的不同之处在于,++x是先执行x=x+1再使用x的值,而x++是先使用x的值再执行x=x+1。
//
int i = 10;
i++;
System.out.println(i); // 11
int k = 10;
++k;
System.out.println(k); // 11
++出现在变量前:
int i = 10;
int k = ++i;
System.out.println(); // 11
System.out.println(); // 11
++出现在变量后:
int i = 10;
int k = i++;
System.out.println(k); // 10
System.out.println(i); // 11
int i = 10;
System.out.println(i++); // 10
// 拆代码:
int temp = i++;
System.out.println(temp); // 10
System.out.println(i); // 11
int i = 10;
System.out.println(++i); // 11
// 拆代码:
int temp = ++i;
System.out.println(temp); // 11
System.out.println(i); // 11
关系运算符(>、>=、<、<=、==、!=)
关系运算符结果都是布尔类型(true/false)
逻辑运算符(&、|、!、&&、||)
逻辑运算符要求两边都是布尔类型,并且最终结果还是布尔类型。
& 两边都是true,结果才是true
| 一边是true,结果就是true
!取反
&& 实际上和&运算结果完全相同,区别在于:&&存在短路现象。
左边为false的时候:&&短路。
左边为true的时候: || 短路。
赋值运算符(=、+=、-=、*=、/=、%=)
重要规则:扩展赋值运算符在使用的时候要注意,不管怎么运算,最终的运算结果类型不会变。
byte x = 100; // byte 最大值127
x += 1000; // 编译可以通过,x变量还是byte类型,只不过损失精度了。
x += 1000; 等同于: x = (byte)(x + 1000);
int i = 10;
i += 10; // 等同于: i = i + 10; 累加。
条件运算符
三目运算符语法: 布尔表达式 ? 表达式1:表达式2
布尔表达式为 true,选择表达式1作为结果。反之选择表达式2作为结果。
字符串连接运算符
+...
+ 两边都是数字,进行求和
+ 有一边是字符串,进行字符串的拼接
+ 有多个的话,遵循自左向右依次执行:1 + 2 + 3
如果想让其中某个加号先执行,可以添加小括号:1+(2+3)
注意:字符串拼接完之后的结果还是一个字符串。
技巧:怎么把一个变量塞到一个字符串当中。
String name = "jackson";
System.out.println("登陆成功,欢迎"+name+"回来");
位运算符
整形数据在内存中以二进制的形式表示,例如一个 int 型变量在内存中占4个字节共32位,int 型数据 7 的二进制表示是:
00000000 00000000 00000000 00000111
左面最高位是符号位,最高位是 0 表示正数,是 1 表示负数。负数采用补码表示,例如 -8的补码表示是:
正数的补码,原码,反码都是相同的。
+8的补码,原码,反码,都是 0000 1000。
负数的补码,原码,反码都是用1放在符号位,后面7位有变化:
-8的原码:1000 1000;
-8的反码:1111 0111;
-8的补码:1111 1000。
instanceof 运算符
该运算符是二目运算符。左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是 true,否则是 false (有关细节后续会讲解)
控制语句
Java 控制语句大致可分为三大类:
- 选择语句
- if, else-if, else
- switch
- 循环语句
- while
- do...while
- for
- foreach
- 终端语句
- break
- continue
- return
选择语句
if 语句
执行原理:对于一个if语句来说,只要有一个分支执行,整个if语句结束。
当布尔表达式的结果为true时,分支才会执行。
分支当中只有一条Java语句,大括号可以省略。
带有else的可以保证肯定会有一个分支执行。
if 语句写法:
if(布尔表达式) {
}
if(布尔表达式) {
}else{
}
if(布尔表达式) {
}else if(布尔表达式) {
}else if(布尔表达式) {
}
if(布尔表达式) {
}else if(布尔表达式) {
}else if(布尔表达式) {
}else{
}
if 语句嵌套:
if (布尔表达式) {
if (布尔表达式) {
if (布尔表达式) {
} else {
}
} else {
}
} else {
}
int i = 0;
if (i >= -1) {
if (i >= 0) {
if (i > 0) {
} else {
i = 100;
}
} else {
i = 1000;
}
} else {
i = 10000;
}
System.out.println(i); // 100
switch 开关语句
switch(表达式){
case 常量值1;
若干个语句
break;
case 常量值2;
若干个语句
break;
......
case 常量值n;
若干个语句
break;
default;
若干语句
}
// switvh语句中表达式的值可以为byte、short、int、char型;常量值1到常量值n,也是byte、short、int、char型,而且要互不相同。
循环语句
> 什么是循环语句,为什么要使用这种语句?
> 因为在现实世界当中,有很多事情都是需要反复/重复的去做。为了减少代码量,要使用循环语句。
while 循环
> 其语法机制及执行原理:
while (布尔表达式) {
循环体;
}
执行原理:如果布尔表达式为true,就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,则再执行循环体,如果为false,则循环结束。
执行次数:0~N次
> 案例 死循环:
while(true){
System.out.println("死循环");
}
do...while 循环
do {
循环体;
} while(布尔表达式);
/*最后这个分号很关键*/
运行原理:先执行循环语句,再判断布尔表达式,如果为true就继续执行,如果为false就停止循环。
执行次数:1~N次
int i = 0;
do{
System.out.println(i); // 0 1 2 3...8 9
i++;
// 也可直接把上两行代码等价替换为
// System.out.println(i++);
}while(i < 10);
int i = 0;
do{
System.out.println(++i); // 1 2 3 ... 8 9 10
}while(i < 10);
int k = 100;
System.out.println(++k); // 101
System.out.println(k); // 101
int m = 10;
System.out.println(m++); // 10
System.out.println(m) // 11
> 转向语句:
> break、continue、return(后期整理到方法时再详细学习)
for 循环语句
for循环语法机制:
for(初始化表达式;条件表达式;更新表达式) {
循环体;
}
for循环执行原理:
1. 先执行初始化表达式,并且只执行1次
2. 然后判断条件表达式
3. 如果为true,则执行循环体
4. 循环体结束之后,执行更新表达式
5. 继续判断条件,如果条件还是true,继续循环
6. 直到条件为false,循环结束
for(表达式1; 表达式2; 表达式3) {
循环语句;
}
// anli
public class Example_n {
public static void main(String args[]){
long sum = 0, a = 8, item = a, n = 12, i = 1;
for(i = 1; i
sum = sum + item;
item = item*10 + a;
}
System.out.println(sum);
}
}
循环跳转控制语言(即转向语句或终端语句
break
- 应用:
1. 在 switch 语句中,用来终止 switch 语句的执行。防止 case 穿透现象,用来终止 switch。
2. 在循环语句中,用来终止循环的执行
- 作用:break; 语句会让离它最近的循环终止结束掉。
for(int i = 0; i < 10; i++){
if(i == 5){
// break;语句会让离它最近的循环终止结束掉。
break; // break;终止的不是if,不是针对if的,而是针对离它最近的循环终止结束掉。
}
System.out.println("i = " + i); // 0 1 2 3 4
}
for(int k = 0; k < 2; k++){ // 外层for
for(int i = 0; i < 10; i++){ // 内层for
if(i == 5){
break; // 这个break;语句只能终止离它最近的for
}
System.out.println("i ===> " + i);
// 输出结果:0123401234
}
}
// 以下讲解的内容,以后开发很少用,了解一下即可
a:for(int k = 0; k < 2; k++){
b:for(int i = 0; i < 10; i++){
if(i == 5){
break a; // 终止指定的循环。
}
System.out.println("i ===> " + i);
// 输出结果:01234
}
}
> 上面那种写法例如a:、b:是一种标识符
> 且下面的 continue 也有形神似的语法格式,有着同样的实现功能
continue 语句
作用:终止本次循环,直接进入下一次循环继续执行。
代码示例(改编上述代码):
for (int i = 0; i < 10; i++) {
if (i == 5) {
// break;语句会让离它最近的循环终止结束掉。
continue;
}
System.out.println("i = " + i); // 0 1 2 3 4 6 7 8 9
}
for(int k = 0; k < 2; k++){ // 外层for
for(int i = 0; i < 10; i++){ // 内层for
if(i == 5){
continue;
}
System.out.println("i ===> " + i);
// 输出结果:012346789012346789
}
}
> if、switch 属于分支语句,属于选择语句(选择结构)。
> for、while、do...while..这些都是循环语句(循环结构)。
> break、continue、return 属于转向结构。
> for、while完全可以互换,只不过就是语法格式不一样。
世界本十分美好
只是很多人或很多家庭不够努力
配不上这份美好
多谢诸位光临,我是阿ken