一、运算符
1、赋值运算符
- 符号:=
(1). 当两侧数据类型不一致时,可以使用自动类型转换或强制类型转换进行处理。
(2).支持连续赋值。 - 拓展赋值运算符: +=,-=,*=,/=,%=
思考:
int i = 1;
i *= 0.1;
System.out.println(i);
i++;
System.out.println(i);
结果:0 1 ( i 是 int 型)
注意:
short s = 2;
s = (short)(s + 3);
s += 3;
结果:s 都为 5
原因:当使用拓展运算符时,系统会自动将参与运算的变量转换为当前被赋值变量(s)的类型。
2、逻辑运算符
- 逻辑运算符用于连结布尔型表达式时,在Java中不可以写成 3<x<6,应该写成 x>3 && x<6。
- " & " 与 " && " 的区别:
(1) " & " :对于表达式 x & y,无论 x 是真是假,y 都会进行判断。
(2) " && " :对于表达式 x & y,如果 x 为真,判断 y 真假;如果 x 为假,y 不进行判断。 - " | " 与 " || " 的区别:
(1) " | " :对于表达式 x | y,无论 x 是真是假,y 都会进行判断。
(2) " || " :对于表达式 x || y,如果 x 为真,y 不进行判断, 如果 x 为假,判断 y 真假。 - 在不需要逻辑运算两边都参与运算的时候,尽量使用 && 和 ||。
- 异或( ^ )和或( | )的区别是:当左右都为 true 时,异或的结果为false。理解:异或,既左右不同时为真。
3、练习
写出每题的输出结果
4、三目运算符
-
x > y ? x : y
-
三目运算符输出两个数、三个数中的最大值:
i > j ? i : j;//两个数中的最大值 i > j ? ( i > k ? i : k ) : ( j > k ? j : k );//三个数中的最大值
二、控制语句
switch语句
1. 基本用法
- switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String。
- case子句中的值必须是常量,且所有case语句中的值应不同。
- default子句是可选择的,当没有匹配的case时,执行default。
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。
2. switch语句和if语句对比
- 如果判断的具体数值不多,而且符合byte,short,int,char这四种类型,虽然两种语句都可以使用,但建议使用switch语句。
- 对区间判断、对结果为boolean类型判断时,使用if语句。
3. break、continue、return
- break: 终止当前所在循环的所有循环;
- continue: 终止本次循环,继续下一次循环;
- return: 结束一个方法。
for(int i = 0; i < 3; i++){
for(int j = 0; i < 9; j++){
if( j > 2){
break;// 当j > 2 时,终止内层循环,继续执行外层循环
}
System.out.println(j);
}
}
结果:0 1 2 0 1 2 0 1 2
for(int i = 0; i < 9; i++){
if(i % 2 == 0){
continue;//结束当前这次循环,直接进入下一次循环
}
System.out.println(i);
}
结果:1 3 5 7
for(int i = 0; i < 2; i++){
for(int j = 0; i < 2; j++){
if( j == 1){
return;//终止当前方法,没有输出
// break;//只结束内层循环,外层不受影响,结果:0 1
}
}
System.out.println(i);
}
4. 注意
- break只能用于switch语句和循环语句中;
- continue只能用于循环语句中;
- break终止本层循环,continue终止本次循环;
- break、continue之后不能有其他语句(本层{ }之外可以有),因为程序永远不会执行其后的语句。
三、练习
1、 打印九九乘法表
public class Test6 {
// 输出九九乘法表
public static void main(String[] args) {
// TODO 自动生成的方法存根
// String str = "";
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
// str = str + j + " * " + i + " = ";
System.out.print(j + " * " + i + " = " + i*j + "\t");//'\t'也可以
// str = "";
}
System.out.println();
}
}
}
2、 输出1-100之间的所有质数
public class Test7 {
// 打印1-100之间的所有质数
// 质数只能被 1 和它本身整除,故设置计数器k,记录被整除的次数,k = 2 的就是质数
public static void main(String[] args) {
// TODO 自动生成的方法存根
for(int i = 1; i <= 100; i++) {
int k = 0;// 记录被整除的次数
for(int j = 1; j <= i; j++) {
if(i % j == 0) {
k++;
}
}
if(k == 2) { // 只有被整除的次数为2的才是质数
System.out.println(i);
}
}
}
}
3、 编写程序,要求如下:
- 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出"foo",每个5的倍数行上打印出"biz",每个7的倍数行上打印出"baz"。
- 输出结果如下:
1
2
3 foo
4
5 biz
…
15 foo biz
…
105 foo biz baz
package practice1;
/**
* 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,
* 另外在每个3的倍数行上打印出"foo",每个5的倍数行上打印出"biz",每个7的倍数行上打印出"baz"。
* @author MCC
*
*/
public class FooBizBaz {
public static void main(String[] args) {
for(int i = 1; i <= 150; i++) {
String str = "";
if(i % 3 == 0) {
str += " foo ";
}
if(i % 5 == 0) {
str += " biz ";
}
if(i % 7 == 0) {
str += " baz ";
}
System.out.println(i + str);
}
}
}
4、 打印1-100之间所有奇数的和
package practice1;
/**
* 打印1-100之间所有奇数的和
* @author MCC
*
*/
public class CountOdd {
public static void main(String[] args) {
int res = 0;
for(int i = 1; i <= 100; i++) {
if(i % 2 != 0) {
res += i;
}
}
System.out.println(res);
}
}
5、 打印1-100之间所有7的倍数的个数以及总和
package practice1;
/**
* 打印1-100之间所有7的倍数的个数以及总和
* @author MCC
*
*/
public class MultipieOfSeven {
public static void main(String[] args) {
int count = 0; //计数器
int sum = 0; //计算和
for(int i = 0; i <= 100; i++) {
if(i % 7 ==0) {
count += 1;
sum += i;
}
}
System.out.println("7的倍数的个数有:" + count + "个" + "\n总和为:" + sum);
}
}
6、 输出所有的水仙花数。水仙花数是指一个三位数,其各个数位上的数的立方和等于其本身,
例如 153 = 111 + 555 + 333
package practice1;
/**
* 输出所有的水仙花数。水仙花数是指一个三位数,其各个数位上的数的立方和等于其本身,
例如 153 = 1*1*1 + 5*5*5 + 3*3*3
* @author MCC
*
*/
public class ShuiXianHuaShu {
public static void main(String[] args) {
for(int i = 100; i < 1000; i++) {
//int类型除法,把小数部分省略
int m = i / 100; //百位数字
int n = (i - m*100) / 10; //十位数字
int k = i - m*100 - n*10; //个位数字
if(m*m*m + n*n*n + k*k*k == i) {
System.out.println(i);
}
}
}
}