#IDEA扩展
打开文件所在位置-production文件夹下的就是java的编译以后的字节码文件(class文件)
#IDEA实现反编译,打开存放class文件的文件夹,把class文件复制,然后粘贴到java文件夹的位置,然后再打开IDEA,会自动反编译
java文件所在位置可以打开File-Project Settings-Project,在Project compiler output那显示的文件夹位置,就是java文件存放位置(总存放位置)
1.if选择结构
一些时候需要判断一个东西是否可行,然后我们才使之执行,这样一个过程在程序中用if语句来表示,代码执行顺序:从左到右,依次执行
#if单选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true将执行
}
String str=s.next();
if(str.equals("hello")){ System.out.println(str); }
#if双选择结构
if(布尔表达式){
//如果布尔表达式为true将执行
}else{
//如果布尔表达式为false将执行
}
String str=s.next();
if(str.equals("hello")){ System.out.println(str); }else{ System.out.println("end"); }
#if多选择结构
if(布尔表达式1){
//如果布尔表达式1为true将执行
}else if(布尔表达式2){
//如果布尔表达式2为true将执行
}else if(布尔表达式3){
//如果布尔表达式3为true将执行
}......
else{
一开始的if里面的布尔表达式为false将执行
}
int score=s.nextInt();
if(score==100){ System.out.println("恭喜满分"); }else if(score<100&&score>=90){ System.out.println("A级"); }else if(score<90&&score>=80){ System.out.println("B级"); }else if(score<80&&score>=70){ System.out.println("C级"); }else if(score<70&&score>=0){ System.out.println("D级"); }else{ System.out.println("输出不合法"); }
#嵌套的if结构
if(布尔表达式1){
//如果布尔表达式1为true将执行
if(布尔表达式2){
//如果布尔表达式2为true将执行
}
}
int s1=s.nextInt();
if(s1>=0&&s1<=100){ if(s1>=0&&s1<=50){ System.out.println("这个数在0-50之间"); } if(s1>50&&s1<=100){ System.out.println("这个数在50-100之间"); } }else { System.out.println("这个数不在0-100之间"); }
2.switch多选择结构
switch case语句是一个多选择结构,用于判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。case标签必须为字符串常量或字面量(字符)
#switch语句中的变量类型可以是:
byte、short、int或者char(javase7开始,已经支持String类型了)
语法:
switch(expression){
case value1:(case数量任意)
//语句
break;//可选
case value2:
//语句
break;//可选
default://可选
//语句
}
char grade='C'; switch (grade){ case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("合格"); break; case 'D': System.out.println("挂科"); break; default: System.out.println("输入错误");
这段代码会输出合格
3.循环结构
会循环执行某些语句,一般为了避免死循环,需要加限制条件来结束循环
#while循环(先判断再执行)
语法:
while(布尔表达式){
//布尔表达式为true执行(如果一直为true,则会产生死循环)
}
*使布尔表达式失效来停止循环
//输出1-100 int i=0; while(i<100){ i++; System.out.println(i); }
# do while循环(先循环再判断)(至少能执行一次)
语法:
do{
//代码语句
}while(布尔表达式);
//计算1+2...+100
do{ sum+=i;// i++; } while (i<=100); System.out.println(sum);
#for循环 是支持迭代的一种通用结构,是最有效、最灵活的循环结构(循环次数在执行前确定) 最先执行初始化步骤。可以声明一种类型,可初始化一个或者多个循环控制变量,也可以是空语句。然后,检测布尔表达式的值,如果为true,循环体被执行,false则循环终止,开始执行循环体后面的语句,执行完一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
再次检测布尔表达式,循环执行上面这些操作
在IDEA里可以快速生成for循环 如: 100.for然后回车,能写出for循环
语法:
for(初始化;布尔表达式;更新){
//代码语句
}
//计算0-100之间的奇数和偶数的和 int osadd=0;//偶数和 int jsadd=0;//奇数和 for (int i = 0; i < 100; i++) { if(i%2!=0){ jsadd+=i; }else{ osadd+=i; } } System.out.println("0-100内的偶数和"+osadd); System.out.println("0-100内的奇数和"+jsadd);
//打印九九乘法表
法1:
for (int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+(i*j)+" "); } System.out.println();//换行 }
法2:
for (int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ if(i>=j){ System.out.print(i+"*"+j+"="+(i*j)+" "); } } System.out.println();//换行 }
#死循环
while(true){
}
for (; ; ) {//这也是死循环的一种,没有初始值,也没有判断 }
do{
} while(true);
4.增强for循环(偷懒用)
主要用来便利数组跟一些集合(java5的时候引进的)
语法:
for(声明形式:表达式){
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等
表达式:表达式是要访问的数组名,或者是返回值为数组的方法
int []numbers={10,20,30,40,50};//一维数组 for(int x:numbers){//遍历数组的元素(把数组里的每项遍历出来,赋值给x) System.out.println(x); } //等同于 for (int i = 0; i < 5; i++) { System.out.println(numbers[i]); }
4.break 、continue
#break
在任何循环语句的主体部分,均可以用break控制循环的流程,break用于强行退出循环,不执行循环中的剩余语句。(在switch中也能使用)
int i=0; while (i<100){ i++; System.out.println(i); if(i==30){ break;//只是跳出这个循环没有终止程序 } } System.out.println("===");
#continue
也用于循环语句,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断
int i=0; while(i<100){ i++; if(i%10!=0){ System.out.println(); continue;//使程序调到循环的最开始(即用来跳过一些东西) } System.out.print(i);//这把输出的只有10,20,30,40,50,60,70,80,90,100 }
#go to关键字
在java中是个保留字,未正式使用(不安全)
可以用标签使用它
label
#扩展(标签使用)
//打印101-150之间的质数 //质数:大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 int count=0; //先定义一个标签 outer:for(int i=101;i<150;i++){ for(int j=2;j<i/2;j++){ if(i%j==0){ continue outer;//返回标签位置 } } System.out.println(i+" "); }