If-else

if是java中主要的控制语句
其语法为

if (a > b) {
a>b为真,程序执行语句
} else
{
a>b为假,程序执行语句
}

例题

/**
* 比较两个数大小
* @author 焦焱
*
*/
public class Temp {

public static void main(String[] args) {
int a = 10;
int b = 20;
if(a>b)
{
System.out.println("a大于b");
}
else if(a<b)
{
System.out.println("a小于b");
}
else
{
System.out.println("a和b相等");
}
}
}

结果​​a小于b​

switch-case

语法

//swtich 不能跟的参数 :boolean,double ,float
switch (key) { //key为需要匹配的对象
case value: //value为备选对象
语句 //如果为value==key则执行此语句
break; //执行完成后跳出

default: //如果没有匹配的就执行default内的语句
break;
}

例题

public class Demo {
/**
*
* @param args
* A :80分以上
* B :70-80
* C :60-70
* D :50-60
* EF:没救了
*/
public static void main(String[] args) {
char a = 'A';
String reslut = null;
switch (a) {
case 'A':
reslut = "80分以上";
break;
case 'B':
reslut = "70-80";
break;
case 'C':
reslut = "60-70";
break;
case 'D':
reslut = "50-60";
break;
default:
reslut = "没救了";
break;
}
System.out.println(reslut);
}
}

结果 ​​80分以上​

for循环

for (初始条件;条件;每一次循环完后执行) {

}
break 当执行到这个代码的时候跳出循环。
continue 当执行这个代码的时候跳过此次循环

例题

/**
* 乘法表
* @author 焦焱
*
*/
public class Temp {
public static void chengfabiao(int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%2d*%2d=%2d ", j, i, j * i);
}
System.out.println();
}
}
public static void main(String[] args) {
chengfabiao(9);
}
}

结果
​​​1* 1= 1
1* 2= 2 2* 2= 4
1* 3= 3 2* 3= 6 3* 3= 9
1* 4= 4 2* 4= 8 3* 4=12 4* 4=16
1* 5= 5 2* 5=10 3* 5=15 4* 5=20 5* 5=25
1* 6= 6 2* 6=12 3* 6=18 4* 6=24 5* 6=30 6* 6=36
1* 7= 7 2* 7=14 3* 7=21 4* 7=28 5* 7=35 6* 7=42 7* 7=49
1* 8= 8 2* 8=16 3* 8=24 4* 8=32 5* 8=40 6* 8=48 7* 8=56 8* 8=64
1* 9= 9 2* 9=18 3* 9=27 4* 9=36 5* 9=45 6* 9=54 7* 9=63 8* 9=72 9* 9=81

杂论

1.final简介

final int A = 10;//常量初始化之后不能改变其值,最好大写,提高读写性
int b=0; //临时变量必须初值

用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变!
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
2.java中的前置++和后置++的坑
1)

int i = 10;

int j = 0;

j = i++;

System.out.println(j);

结果​​10​

查看.class文件为

5-咸鱼学Java-Java的控制语句及简单杂论_System


2)

int i = 10;

i = i++;

System.out.println(i);

结果​​10​

查看.class文件为

5-咸鱼学Java-Java的控制语句及简单杂论_System_02

为什么两个程序的结果都是10呢,进行解析
先进性解析.class中的代码

代码

解释

bipush

当int取值为-128-127的时候用次指令压栈

istore_X

弹出栈顶元素存入位置为X的局部变量中

iconst_X

常量int类型的X位置的元素入栈

iload_X

从位置为X的局部变量中取出元素int类型的数压入栈

iinc X,Y

给局部变量X位置的数加Y

getstatic

获取指定类的静态域,并将其值压入栈顶

invokevirtual

调用实例方法

通过上表解析两个.class文件
可以得出结论
JVM中后置++的运行方式是

1.temp = a;
2.a++;
3.a = temp;

所以i++赋值给i获得的值仍为i。
3.通过函数交换两个数

public static void main(String[] args) {
int a=10;
int b=20;
int[] n ={a,b};
swap(n);
System.out.println("a:"+n[0]+" b:"+n[1]);
}
public static void swap(int[] n)
{
int temp = n[0];
n[0] = n[1];
n[1] = temp;

}