if....else结构的简写形式:为三目运算符
三元运算符:好处:可以简化if...else代码
弊端:因为是一个运算符,所以运算完必须要有一个结果
int n = 3;
if(n > 1){
System.out.println("a");
}
else if(n >2){
System.out.println("b");
}
else if(n > 3){
System.out.println("c");
}
else{
System.out.println("d");
}
//最终打印结果为 a
if(n > 1){
System.out.println("a");
}
if(n >2){
System.out.println("b");
}
if(n > 3){
System.out.println("c");
}
else{
System.out.println("d");
}
//最终打印结果为:a b d
根据用户定义的数值不同,打印对应的星期 (英文):
int num = 2;
if(num == 1){
Syetem.out.println("Monday");
}else if(num == 2){
System.out.println("Tuesday");
}else if(num == 3){
System.out.println("Wednesday");
}else if(num == 4){
System.out.println("Thursday");
}else if(num == 5){
System.out.println("Friday");
}else if(num == 6){
System.out.println("");
}else if(num == 7){
System.out.println("");
}else{
System.out.println("输入有误");
}
根据用户指定的月份打印该月份所属的季节:
int month = 4;
if(month == 3 || month == 4 || month == 5){
System.out.println("春季");
}
else if(month == 6 || month == 7 || month ==8){
System.out.println("夏季");
}
if(month == 9 || month ==10 || month ==11){
System.out.println("秋季");
}
else if(month == 12 || month ==1 || month == 3){
System.out.println("冬季");
}
else {
System.out.println("月份有误");
}
或者:
if(month > 12 || month < 1){
System.out.println("月份不存在");
}
else if(month >=3 && month <= 5){
System.out.println("春季");
}
else if(month >=6 && month <= 8){
System.out.println("夏季");
}
else if(month >=9 && month <= 11){
System.out.println("秋季");
}
else{
System.out.println("冬季");
}
switch语句:
int x = 3;
switch(x){
default:
System.out.println("d");
break;
case 4:
System.out.println("a");
break;
case 6:
System.out.println("b");
break;
}
switch语句特点:
//只支持byte,short,char,int,jdk1.7以后支持String
//对于switch语句,case和default的顺序是可以随意放的,但是执行的顺序还是先执行case里面的,如果都不满足的话在执行default
//switch结束有两种方式:执行到break,执行到大括号结束
int month = 4;
switch(month){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("月份不存在");
}
switch语句结构和if的区别:
if除了能判断具体数值,还能判断具体区间,但是switch判断区间很困难,对于运算结果是boolean型的,if能判断,switch不行。
对数 值不多,类型是具体的byte,short,int ,char (jdk1.7以后String)的,用switch比较方便,效率稍高
循环:
while:先判断条件,再执行
do..while:无论条件是否满足,先执行一次再判断条件
for: for(初始化表达式 ; 循环条件表达式 ; 循环后的操作表达式 ){
执行语句;
}
while和for的区别:
for( int x = 0 ; x < 3 ; x++){
System.out.println("x =" + x);
}
System.out.println("x ====" + x);//此处出错,x超出作用域了
int y = 0;
while(y < 3){
System.out.println("y =" + y);
}
System.out.println("y ====" + y);
//变量有自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句中有效。for语句执行完毕,该变量在内存中被释放
//for和while可以进行互换,如果需要定义循环增量,用for更合适
什么时候用循环结构:
当要对某些语句执行很多次时,就是用循环结构。
循环次数不定时,用while
for(System.out.println("a"); System.out.println("b"); System.out.println("c")){
System.out.println("d");
}
//以上的代码编译出错,System.out.println("b"),无法判断真假,放在eclipse里直接报错:无法转换为boolean
int x = 1;
for(System.out.println("a"); x < 3 ; System.out.println("c")){
Syste.out.println("d");
x++;
}
//j结果为: a d c d c
int x = 1;
for (System.out.print("a"); x < 3; System.out.print("b"), x ++) {
System.out.print("c");
}
//打印结果:a c b c b
无限循环的最简单表现形式:
for( ; ; ){}
while(true){}
1~100之间7的倍数的个数,并打印:
//1.先对1~100之间的数进行遍历,通过循环
2.在遍历的过程中,定义条件,只对7的倍数进行操作:x % 7 == 0
3.因为7的倍数的数据个数不确定,只要符合条件,就通过一个变量来记录这个变化的次数
步骤:1.定义循环语句,选择for循环
2.在循环中进行判断,只要是7的倍数即可,使用if语句
3.定义变量,该变量随着7的倍数的出现而自增。(计数器思想:通过一个变量记录住数据的状态变化,通过循环完成)
int count = 0;
for (int i = 1; i <= 100; i++) {
if(i % 7 == 0){
System.out.print(i + " ");
count++;
}
}
System.out.println("个数:" + count);
//打印结果: 7 14 21 28 35 42 49 56 63 70 77 84 91 98 个数:14
打印九九乘法表:
//乘法表
for (int i = 1; i <= 9 ; i++) {
for (int j = 1; j <= i ; j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");//制表符,保证对齐
}
System.out.println();
}
//打印乘法表,具体的数值由调用者控制:
//打印乘法表:在主函数调用的时候,根据传入的数进行打印
public static void printMultiply(int m){
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + i * j +"\t");
}
System.out.println();
}
}
打印:
*****
****
***
**
*
int z = 5;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < z; j++) {
System.out.print("*");
}
System.out.println();
z--;
}
或者:
int z = 0;
for (int i = 0; i < 5; i++) {
for (int j = z; j < 5; j++) {
System.out.print("*");
}
System.out.println();
z++;
}
或者:
for (int i = 0; i < 5; i++) {
for (int j = i; j < 5; j++){
System.out.print("*");
}
System.out.println();
}
或者:
for (int i = 5; i > 0; i--) {
for (int j = 0; j
System.out.print("*");
}
System.out.println();
}
打印:
*
**
***
****
*****
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
尖朝上,可以改变循环条件,让条件随着外循环变化;
尖朝下,可以改变初始化值,让初始化值随着外循环的变化而变化。
/*
* 打印:
* 1
* 12
* 123
* 1234
* 12345
* */
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j);
}
System.out.println();
}
break语句和continue语句:
break应用范围:选择结构,循环结构
continue应用范围:循环结构
注:1.这两个语句离开应用范围,存在是没有意义的
2.这个两个语句单独存在下面都不可以有语句,因为执行不到
3.continue语句是结束本次循环继续下次循环
4.标号(符合命名规范即可)的出现,可以让这两个语句作用于指定的范围
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
System.out.println("i=" + i);
break;
}
}
//结果为: i = 0 i = 1 i = 2
//使用标号:
w:for (int i = 0; i < 3; i++) {
q:for (int j = 0; j < 4; j++) {
System.out.println("i=" + i);
break w;
}
}
//打印结果为:i = 0
w:for (int i = 0; i < 3; i++) {
q:for (int j = 0; j < 4; j++) {
System.out.println("i=" + i);
break q;
}
}
//结果为: i = 0 i = 1 i = 2
//continue:
for (int i = 0; i < 3; i++) {
continue;
System.out.println("i = " + i);//这句直接报错,便以失败,在continue之后不可以有语句,因为都执行不到
}
for (int i = 0; i <= 10; i++) {
if(i % 2 == 1){
continue;//结束本次循环,继续下次循环
}
System.out.println("i = " + i);
}
//打印结果:i=0 i=2 i=4 i=6 i=8 i=10
// 直接跳到外层循环
w:for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
System.out.println("i="+i);
continue w;//直接跳到外层循环
}
}
//打印结果:i =0 i=1 i=2
/* * 打印: * * * * * * * * * * * * * * * * * * * * * 分析:可以看作是两个三角形,一个是空格组成的,尖朝下,一个是*组成的,尖朝上 */ for (int i = 0; i < 5; i++) {//打印总共有5行 for (int j = i + 1; j < 5; j++) {//打印外面的空格 System.out.print(" "); } for (int z = 0; z <= i; z++) {//打印* System.out.print("* ");//这里加一个空格,免得紧凑在一起 } System.out.println(); }