if else ;
单行逻辑大括号可以省略;但是不建议省略;
public static void main(String[] args) {
boolean bool1 = (Math.random() * 1000) % 2 >= 1;
System.out.println((Math.random() * 1000) % 2 + "-" +bool1);
if(bool1) {
System.out.println('1');
} else {
System.out.println("2");
boolean bool2 = (Math.random() * 1000) % 2 >= 1;
if(bool2)
System.out.println("3");
else
System.out.println("4");
}
boolean bool3 = false;
if(bool3 = true) {
System.out.println("使用单引号,将true复制给bool3,bool3为true则执行此行");
}
if(bool3 = false) {
System.out.println("使用单引号,将true复制给bool3,bool3为false则不执行此行");
}
}
*****字符串比较不要用 == 要用equals;
String str = “asd”; str.equals(“asd”);
“==” 表示的是不是一个东西,equals标识的是内容是否一样;
Random.java 中 :如何获取一个随机数;
public class Random {
public static void main(String[] args) {
// method1:Math.random();返回一个double值:[0.0,1.0)
double d1 = Math.random();
System.out.println(d1);
// int i = (int)(d1 * 100);//[0,99];
int i = (int)(d1 * 101);//[0,100];
System.out.println(i);
// 通用公式:获取[a, b];
// int res = (int)(Math.random() * (b - a + 1) + a);
}
}
// 通用公式:获取[a, b];*****
- int res = (int)(Math.random() * (b - a + 1) + a);
switch - case :选择结构;
比较的是==;但是字符串(equals)也能进入逻辑;
switch(表达式);
表达式只能是特定的数据类型;byte/short/char/int;
可以认为就是int;见相关代码:switch.java;之后的新特性(枚举、String)
case 常量: (只能是常量)
default;是可选的而且是灵活的!!!可以放在任何位置;
但是一般都放最后;
public class SwitchTest {
public static void main(String[] args) {
int i1 = 99;
switch (i1) { //括号中是表达式,而非条件表达式;
// case 常量1;、
case 98:
System.out.println("98");
break;
case 99:
System.out.println("99");
default:
System.out.println("穿透");
// break; //有无都一样;一般加上~?
}
//比较的是==;但是字符串也能进入逻辑(jdk7.0之后可以支持);
String str = "99999";
switch (str) { //括号中是表达式,而非条件表达式;
// case 常量1;、
case "99998":
System.out.println("98");
break;
default:
System.out.println("穿透");
// break; //有无都一样;一般加上~?
// default;是可选的而且是灵活的!!!可以放在任何位置;(这里就不会穿透了)
case "99999":
System.out.println("99");
}
/*表达式只能是特定的数据类型;byte/short/char/int;
可以认为就是int;之后的新特性(枚举、String)*/
/*double db = 99999.99;
switch(db) { //括号中是表达式,而非条件表达式;
// case 常量1;、
case 99998:
System.out.println("98");
break;
case 99999.99:
System.out.println("99");
default:
System.out.println("穿透");
// break; //有无都一样;一般加上~?
}*/
// : 错误: 不兼容的类型: 从double转换到int可能会有损失
/*boolean bool = true;
switch(bool) { //不兼容的类型: boolean无法转换为int
case true:
System.out.println("1");
default:
System.out.println("2");
}*/
int score = 60;
switch (score / 60) {
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
}
System.out.println("===========================");
/*利用穿透*/
}
}
循环结构:
.for/while/do-while循环;
–for
for(初始化条件;循环条件;迭代部分) {
循环体
}
public static void main(String[] args) {
for(;;) {
System.out.println("脦脼脤玫录镁拢卢碌楼麓脦脩颅禄路");
if(true) break;
}
for
(int i=0;i<10;i++,i++)
{
System.out.println(i);
}
int res = 0;
for(int i=1;i<11;i++) {
if(i % 2 == 0) {
System.out.println(i);
res+=i;
}
}
System.out.println(res);
System.out.println("===============================");
for(int i =100;i< 1000;i++) {
int gw = i%10;
int sw = i / 10 % 10;
int bw = i / 100;
if(i == (gw*gw*gw + sw*sw*sw + bw *bw* bw)) {
System.out.println(i);
}
}
}
For
循环结构中;break;结束循环;
初始化条件
while
while(循环条件) {
循环体
迭代
}
*水仙花数;For.java;
可以和for循环相互转换;也可以使用break中断循环;
可以互相转换,就和拉姆达表达式一样可以转换;看情况使用;
do while;
do{
、、无论是否符合条件,先来执行一次。
}while();
public class WhileTest {
public static void main(String[] args) {
while(true) {
System.out.println(1);
break;
}
int i = 0;
while(i < 10) {
System.out.println(i);
i++;
}
System.out.println("=========");
int n = 13;
int m = 14;
for(int j = 1;;j++) {
if((n*j) % m == 0) {
System.out.println(n*j);
break;
}
}
do{
// break; //不可放这里,后面会不执行,报错;
System.out.println(1);
break;
} while(true);
}
}
推荐使用:
for: 有明显的循环次数;
while: 没有明显的循环次数;
do-while: 循环块至少执行一次,考虑可以使用;
“无限循环”,嵌套循环;
不确定循环多少次时,可以使用。
while(true){
结合break使用;
};
for(;😉{
//结合break使用;
};
嵌套循环:
continue
if(i % 2 != 0) {
continue;
//System.out.println(i);// 编译错误: 无法访问的语句;
}
// 放在外面就可以;
System.out.println(i);
注意: *****break和continue;后面不能加执行语句;
见代码:Looptest.java;
标签
带标签的break;continue;见代码LoopTest.java;
同目录下的java文件,不用import导包,直接使用类方法
public class LoopTest {
public static void main(String[] args) {
// for(){ //错误: 非法的表达式开始;
for(;;){
// while(true){ //和for效果相同;
// Scanner scan = new Scanner(System.in);
// int i = scan.nextInt();
System.out.println(1);
break;
}
//while() { //错误: 非法的表达式开始
while(true) {
System.out.println(2);
break;
}
System.out.println("========");
// 嵌套循环;
for(int i = 1;i<6;i++) {
for(int j =0; j<i;j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("========");
for(int i = 5;i>0;i--) {
for(int j =0; j<i;j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("========");
int ii =0;
for(int i =0;i<10;i++) {
if(i % 2 != 0) {
continue;
//System.out.println(i);// 编译错误: 无法访问的语句;
}
// 放在外面就可以;
System.out.println(i);
}
label:for(int i = 0;i<10;i++) {
for(int j =0;j<4;j++) {
if(j > 2) {
continue label;
}
System.out.print(j);
}
System.out.println();
}
}
}
Scanner类的使用方法;
1、导包:import java.util.Scanner;
2、创建Scanner类的实例;
3、调用scanner类的方法,获取指定类型的变量;
4、关闭资源(避免泄露)。调用close;
—system.lang 包是常用的不用导包;其他包下面的都需要导包;
String str1 = scanner.next(); //具体scanner方法见文档;一般看next方法;
//scanner 没有提供获取char类型的方法;
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串: \n");
String str1 = scanner.next(); //阻塞住下面;直到写入;
System.out.println("str1:" + str1);
System.out.println("请输入一个int: \n");
// 输入类型不符合时会报错;
int i1 = scanner.nextInt();
System.out.println(i1);
System.out.println("请输入一个double: \n");
double d1 = scanner.nextDouble();
System.out.println(d1);
System.out.println("请输入一个boolean: \n");
// 输入类型不符合时会报错;
boolean bol1 = scanner.nextBoolean();
System.out.println(bol1);
System.out.println("请输入一个char: \n");
char c1 = scanner.next().charAt(0); //scanner 没有提供获取char类型的方法;
System.out.println(c1);
// 关闭资源;
scanner.close();
// 输入类型不符合时会报错
}
}
- GC(垃圾回收) 不会认为Scanner 是一个垃圾;可能不会回收;