java运算符以及流程控制语句
运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 位运算符
- 三元运算符
算术运算符
//除号 int num1 = 12; int num2 = 5; int result1 = num1 / num2 * num2; System.out.println("result1 = " + result1);//10 double result2 = num1 / num2 + 0.0; System.out.println("result2 = " + result2);//2.0 double result3 = (double)num1 / num2; System.out.println("result3 = " + result3);//2.4 //取余运算 //取余的符号,与被余数一致 int m1 = 12; int n1 = 5; System.out.println("m1 % n1 = " + m1 % n1);//2 int m2 = -12; int n2 = 5; System.out.println("m2 % n2 = " + m2 % n2);//-2 int m3 = 12; int n3 = -5; System.out.println("m3 % n3 = " + m3 % n3);//2 int m4 = -12; int n4 = -5; System.out.println("m4 % n4 = " + m4 % n4);//-2 //前++ //后++ int a1 = 10; int b1 = ++a1; System.out.println("a1 = "+ a1 + ",b1 = " + b1);//11 11 int a2= 10; int b2 = a2++; System.out.println("a2 = "+ a2 + ",b2 = " + b2);//11 10 //注意点 short s1 = 10; //s1 = s1 + 1;//编译失败 //s1 = (short)(s1 + 1);//正确 //System.out.println("s1 = " + s1);//11 //s1++;//自增1不会改变s1本身的数据类型 s1 += 2;//编译成功,不会改变变量本身的数据类型 System.out.println("s1 = " + s1); //前--:先自减一,后运算 //后--:先运算,后自减一
赋值运算符
支持连续赋值。:int a,b,c;
a+ = 1 与 a = a+1 的区别:a+=1运算的结果不会改变变量的数据类型。a = a+1默认是int型。
扩展赋值运算符: +=, -=, *=, /=, %=
比较运算符
比较运算符的结果都是Boolean型,要么是true。要么是false。
比较运算符的结果
逻辑运算符
只适用于布尔类型变量
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或(不同为true,相同为false)
区分& 与 &&
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
位运算符
3<<2(3左移两位数)相当于 3*22,每向左左移一位就相当于 *2
>> 每向右移一位相当于 /2
面试题:最高效计算 2*8 2<<3或者8<<1
在计算时:注意计算机参与运算的都是补码。
三元运算符
格式: 表达式1和表达式2是同一种类型。
注意:三元运算符要求必须返回一个结果。
运算符的优先级
程序流程控制
流程控制语句是用来程序中各语句的执行顺序。
分为:
- 顺序结构
- 分支结构:if-else,switch-case
- 循环结构 :
- for 循环
- while 循环
- do-while 循环
if-else语句
三种结构:
1 1、第一种: 2 3 if(条件表达式1){ 4 执行代码块; 5 } 6 7 2、第二种:二选一 8 9 if(条件表达式1){ 10 执行代码块1; 11 } 12 else { 13 执行代码块2; 14 } 15 16 17 3、第三种:多选一 18 if(条件表达式1){ 19 执行代码块1; 20 } 21 else if (条件表达式2){ 22 执行代码块2; 23 } 24 …… 25 else{ 26 执行代码块n; 27 }
如何从键盘获取不同类型的变量
//导包:import java.util.Scanner; //Scanner实例化:Scanner scan = new Scanner(System.in); //调用Scanner相关方法来指定输入数值的类型 import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String name = scan.next(); int age = scan.nextInt();
double weight = scan.nextDouble(); boolean love = scan.nextBoolean(); //对于char型的获取,scanner没有提供相关的方法,只能获取一个字符串 System.out.println("请输入你的性别:(男/女)"); String gender = scan.next(); char genderChar = gender.charAt(0);//用charAt方法获取索引为0的位置上的字符 System.out.println(genderChar); }
//比较两个字符串的时候,用字符串的equals方法,返回值是Boolean类型.字符换1.equals(字符串2)
Switch语句
1 switch语句格式: 2 switch(表达式) { 3 case 值1: 4 语句体1; 5 break; 6 case 值2: 7 语句体2; 8 break; 9 … 10 default: 11 语句体n+1; 12 break; 13 }
Switch
switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
- case子句中的值必须是常量,不能是变量名或不确定的表达式值;
- 同一个switch语句,所有case子句中的常量值互不相同;
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。
-
default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default
-
使用switch-case的,都可以改写为if-else。反之不成立。
循环结构
在某些条件满足的情况下,反复执行特定代码的功能。
循环语句的四个组成部分:
初始化部分(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
for (①初始化部分; ②循环条件部分; ④迭代部分){ ③循环体部分; }
②循环条件部分为boolean类型表达式,当值为false时,退出循环
①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
④可以有多个变量更新,用逗号分隔
循环结构(for循环)
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; }
循环结构(while)
while循环基本格式:
初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; }
循环结构(do……while)
do……while基本结构:
1 初始化语句; 2 do { 3 循环体语句; 4 控制条件语句; 5 } while((判断条件语句);
跳转控制语句
包括:break、continue、return
- break:跳出当前循环。
- continue:退出本次循环。
- return:结束一个方法。