表达式和运算符: 算术运算符: 元代表多少个操作数,一元表示一个操作数; 一元运算符:++自增(只能是变量),++a等价于a = a+ 1; ++a 与 a++ 有区别: ++a 先自增 在运算 a++ 先运算 在自增 实操: int a = 5; int b = ++a + ++a + a++ + a++ + ++a; 输出 a 、b 的值; +: 1、如果+号两边都是数字,计算功能 2、如果+号两边只要有一边是非数字,连接功能 Infinity 正无穷大, NaN 非数 not a number %: 取模,返回两个操作数整除后的余数,注意: 整形对0或者0.0取膜,得到的数是非数 NAN;任何数对比他本身大的数取膜时,得到的结果就是他本身 实操: 输入一个四位数,求该四位数的个位、十位、百位及千位之和; 关系运算符: 判断两个或者多个表达式之间的关系是否成立,返回结果:true/false <,>,>=,<=,!=,== 逻辑运算符: 与:并且(&&),短路与 (exp1 && exp2) 4> 3 && 'c’ > 'a’ exp1 == true, exp2 == true ----->true exp1 == true, exp2 == false ----->false exp1 == false, 不计算exp2的值 ----->false &:逻辑与 (exp1 & exp2) exp1 == true, exp2 == true ----->true exp1 == true, exp2 == false ----->false exp1 == false, 计算exp2的值 ----->false 或:或者(||),短路或 (exp1 || exp2) exp1 == false, exp2 == true ------>true exp1 == false, exp2 == false------>false exp1 == true, 不计算exp2的值------>true |:逻辑或:有一个结果为true,那么最终的计算结果为true否则为false (exp1 | exp2) exp1 == false, exp2 == true ------>true exp1 == false, exp2 == false------>false exp1 == true, 计算exp2的值-------->true 按位或 | 按位与 & 两边接数字时首先得把两边的十进制数字转换为二进制 运算规则: 0|0=0;0|1=1;1|0=1;1|1=1; 0&0=0;0&1=0;1&0=0;1&1=1; 异或:^ 当两个表达式结果不同返回true 赋值运算符:从右向左执行运算的,=左边只能是变量 条件运算符:(三目运算符) 变量 = exp1 ? exp2 : exp3; 注意!!! 1.exp1的结果为true,则变量的值为 exp2 否则为 exp3; 2.变量的数据类型必须与exp2、exp3的值的数据类型相同 控制流语句: 1、判断语句: if 语法:if(条件判断){ code; } if…else 语法:if(condition){ code1; }else{ code2; } if…else if…else if…else 语法:if(condition1){ code1; }else if(condition2){ code2; }else if(condition3){ code3; }else{ code4; } 2、switch分支语句 数据类型 变量名 = 变量值; 语法:switch(变量名){ case 值1:code1; break; case 值2:code2; break; case 值3:code3; break; default:code4; break; } 注意!!! 此数据类型只能为:byte、short、char、int ,JDK1.7版本后 String(字符串)也适用于switch; 实操: 1、从控制台输入星期(1-7),如果是输入的1-5,打印工作愉快,如果输入的是6或者7,打印周末愉快,如果输入的不是1-7之间的数字,则打印输入错误!(用if…else if…else if…else和switch实现); 2、陆续输入三个整数,运用条件运算符来求出这三个数中的最大数,最小数; 附源码如下: import java.util.Scanner; public class Dome1 { public static void main(String[] ages) { for (int i = 1; i <= 5; i++) { // 控制行 for (int j = 1; j <= 5 - i; j++) { // 控制列 System.out.print(' '); } for (int k = i; k >= 1; k--) { // 控制数字 System.out.print(k); } for (int num = 2; num <= i; num++) { // 控制后数字 System.out.print(num); } System.out.println(); // 自行换行 } // 获取个位十位百位千位的方法 Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int he; int qianwei = num / 1000; int baiwei = num % 1000 / 100; int shiwei = num % 100 / 10; int gewei = num % 10; he = qianwei + baiwei + shiwei + gewei; System.out.println('和为:' + he); /* * 陆续输入三个整数,运用条件运算符来求出这三个数中的最大数,最小数 */ Scanner sc2 = new Scanner(System.in); int i = sc2.nextInt(); int j = sc2.nextInt(); int k = sc2.nextInt(); int max = i > j ? (i > k ? i : k) : (j > k ? j : k); System.out.println(max); int min = i > j ? (j > k ? k : j) : (i > k ? k : i); System.out.println(min); int n = 7; int m = 2; int k2 = ++n + m-- + (++m - n-- + m++) + ++n; // 求 n , m , k的值 n = 8; m = 3; k2 = 14; // 1268 & 102 45 | 17 System.out.println(1268 & 102); // 100 System.out.println(45 | 17); // 61 } |
|