文章目录
- 运算符
- 算术运算符:
- “+”数字相加
- 隐式转换
- 强制转换
- “+”字符串相加
- “+”字符相加
- 自增自减运算符:
- 赋值运算符:
- 关系运算符:
- 逻辑运算符:
- 短路逻辑运算符:
- 三元运算符:
- 运算符优先级
- 流程控制语句
- 顺序语句
- 分支语句——if
- 分支语句——switch
- 循环语句——for
- 循环语句——while
- for和while的区别
运算符
对字面量或者变量进行操作的符号,比如加减乘除
算术运算符:
加(+) / 减(-) / 乘(*) / 除(/) / 取模(%)
import java.util.Scanner;//导入相关的包
public class test{
public static void main(String[] args){
System.out.println(10/3);
}
}
输出结果:3
两个整数相除如果出现小数或者除不尽,结果只保留整数部分
import java.util.Scanner;//导入相关的包
public class test{
public static void main(String[] args){
System.out.println(10.0/3);
}
}
输出结果:3.3333333333333335
“+”数字相加
数字进行运算的时候,数据类型不一样不能进行运算,需要转换成一样的才能进行运算
隐式转换
把一个取值范围小的数值,转换成取值范围大的数据
byte、short、char三种类型数据在进行运算的时候,都会直接先提升为int,然后再进行运算
int a = 10;
double b = a;
byte<short<int<long<float<double
强制转换
正常情况下,一个取值范围大的数值是不允许赋值给取值范围小的变量,如果一定要这么做那么就需要加入强制转换
double a = 10;
int b = (int)a;
需要注意的是,强制转换很容易造成数据出错。如果转换前的数据数值超出了转换后类型数值的范围上限,那么转换必然出错。
“+”字符串相加
当“+”在字符串中出现时,这里的加号就不是运算符,而是连接符,将前后两个字符串连接在一起
“+”字符相加
当“+”在字符中出现时,这里的加号是对两个字符的ASCII码进行加法,结果是加法后的数值对应的ASCII码
自增自减运算符:
++i; i++; --i; i–;
i++和i–是先用后加(减);++i和–i是先加(减)后用
赋值运算符:
= a=b
+= a += b a=a + b
-= a -= b a=a - b
*= a *= b a=a * b
/= a /= b a=a / b
%= a %= b a=a % b
关系运算符:
== 判断a和b的值相等
!= 判断a和b是否不相等
同理,还有 > >= < <=
关系运算符的结果都是布尔类型,注意区分“=”和“==”
逻辑运算符:
逻辑和:&
逻辑或:|
逻辑异或:^
逻辑非:!
public class test{
public static void main(String[] args){
//与
System.out.println(true&true);
System.out.println(false&true);
System.out.println(false&false);
//或
System.out.println(true|true);
System.out.println(false|true);
System.out.println(false|false);
//非
System.out.println(!true);
System.out.println(!false);
//异或
System.out.println(true^true);
System.out.println(false^true);
System.out.println(false^false);
}
}
输出结果:
true
false
false
true
true
false
false
true
false
true
false
短路逻辑运算符:
&&:短路与
||:短路或
上面两个逻辑运算符与“与”和“或”结果相同,只不过有“短路效果”,即第一个元素已经能判断出真值结果就不会去考虑第二个元素
对比下面两端代码:
public class test{
public static void main(String[] args){
int a = 1;
int b = 1;
boolean result = (a++<0)&(b++<0);
System.out.println(result);
System.out.println(a);
System.out.println(b);
}
}
输出结果:false 2 2
public class test{
public static void main(String[] args){
int a = 1;
int b = 1;
boolean result = (a++<0)&&(b++<0);
System.out.println(result);
System.out.println(a);
System.out.println(b);
}
}
输出结果:false 1 2
三元运算符:
格式:关系表达式?表达式1:表达式2;
例:求两个数的较大值 a > b ? a : b; 如果关系表达式为真,则执行表达式1,如果关系表达式为假,则执行表达式2
运算符优先级
流程控制语句
大致同C语言中的流程控制语句。
顺序语句
从上往下依次执行,java代码中默认执行语句顺序
分支语句——if
三种情况:
if(关系表达式){
语句体;
}
if(关系表达式){
语句体1;
}else{
语句体2;
}
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
分支语句——switch
switch(表达式){
case 值1;
语句体1;
break;
case 值2;
语句体2;
break;
……
default;
语句体n+1;
break;
}
要匹配的值只能是byte/short/int/char,高版本可以是枚举和String
补充:
(1)case穿透:语句体中没有写break导致的
循环语句——for
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
循环语句——while
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
循环下面的其它语句;
for和while的区别
(1)for循环中,控制循环的变量的作用域在for循环的语法结构中(可简单理解为大括号内),在for循环结束后,就不能再次被访问到了
(2)while循环中,控制循环的变量不属于while循环的语法结构中,循环结束后依然可以被使用
(3)for循环一般在知道循环次数或者循环范围时使用,while循环一般在不知道循环的次数和范围,只知道循环的结束条件时使用