2.1关键字和保留字
2.2标识符
2.3变量
基本数据类型
基本数据类型变量间转换
基本数据类型与String间转换
进制与进制间的转换
2.4 运算符
2.5 程序流程控制
前四节笔记地址:Java尚硅谷基础笔记-day2 变量及运算符
分支结构
if-else结构
注意:当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”
实例1:
补充知识:键盘输入
实现步骤:1.导包 import java.util.Scanner;
2.scanner的实例化:Scanner scan=new Scanner(System.in);
3.调用scanner类的相关方法,string类型是next(),其余类型为nextXxx(),char没有对应方法
与类型不匹配时会编译报异常
import java.util.Scanner;
class IfTest{
public static void (main [] args){
Scanner scan=new Scanner(System.in);
int score=scan.nextInt();
if (score==100){
System.out.println("BMW");
}else if (score>80){
System.out.println("ipone");
}else if(score>60){
System.out.println("ipad");
}else {
System.out.println("none");
}
}
实例2
以下代码输出结果是?
int x=4;
int y=1;
if(x>2){
if(y>2)
System.out.println(x+y);// 未执行
System.out.println("atgu"); // 执行,相当于if(x>2)的执行语句
}else
System.out.println("x="+x);// 未执行
int x=4;
int y=1;
if(x>2)
if(y>2)
System.out.println(x+y);//
//System.out.println("atgu");
else //就近原则,为y>2的else
System.out.println("x="+x);// 执行
补充内容:随机数
//random()0-1随机数
//公式[a,b] (int)(Math.random()*(b-a+1)+a)
int value=(int)(Math.random()*90+10);//10-99随机数
补充内容:汉字的判断
//判断变量isHandsome是都等于“是”,不是“是”的都判断为false
isHandsome.equals("是")
switch-case结构
注意:
1.break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
2.default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default。
3.switch语句中,只能是下面六中数据类型:byte,short,char,int,枚举类型,string
实例1:
对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格” 。
//方法一
int score=78
switch(score/60){
case 1:
System.out.println("及格");
break;
case 0:
System.out.println("不及格");
break;
}
//方法二
int score=78
switch(score/10){
case 10:
case 9:
case 8:
case 7:
case 6:
System.out.println("及格");
break;
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
}
实例2:编写程序:从键盘上输入2020年的“month”和“day”,要求通过程序输出输入的日期为2020年的第几天。
switch(month){
case 12:
sumDays +=30;
case 11:
sumDays +=31;
case 10:
sumDays +=30;
case 9:
sumDays +=31;
case 8:
sumDays +=31;
case 7:
sumDays +=30;
case 6:
sumDays +=31;
case 5:
sumDays +=30;
case 4:
sumDays +=31;
case 3:
sumDays +=29;
case 2:
sumDays +=31;//一月的31天
case 1:
sumDays +=day;
}
说明:1.凡是可以用switch-case结构的,都可以转换为if-else。反之,不成立。
2.当可以使用switch-case结构,并且其表达式取值较少,选择switch-case。
循环结构
do-while循环相对其他两个循环来说,至少执行一次循环体。
最简单的无限循环格式:while(true),for(;,根据内部条件控制循环的结束。
结束循环方式有两种:一,循环条件部分返回false
二,在循环体内,执行break
实例
输出0-100的质数
方式一:
long start=System.currentTimeMillis();//计算当前时间距离1970-01-01 00:00:00 的毫秒数
for(int i=2;i<=100;i++){
boolean isFlag=true;
for(int j=1;j<i;j++){
if(i%j==0)
isFlag=false;
}
if(isFlag=true){
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println("所花费的时间"+(end-start));
优化一:break:只对于非质数管用
long start=System.currentTimeMillis();
for(int i=2;i<=100;i++){
boolean isFlag=true;
for(int j=1;j<i;j++){
if(i%j==0)
isFlag=false;
break
}
if(isFlag=true){
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println("所花费的时间"+(end-start));
优化二:缩小j的范围,i/2
long start=System.currentTimeMillis();
for(int i=2;i<=100;i++){
boolean isFlag=true;
for(int j=1;j<=i/2;j++){
if(i%j==0)
isFlag=false;
break
}
if(isFlag=true){
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println("所花费的时间"+(end-start));
优化三:缩小j的范围,sqrt(i),最好
例如质数97,97/2约等于48,当在2~48范围内时,除数都可以组成一对对的,比如2,48等等,sqrt(i)是最中间的一对,其左侧的数据是可以完全代表那些成对的数据。
long start=System.currentTimeMillis();
for(int i=2;i<=100;i++){
boolean isFlag=true;
for(int j=1;j<=Math.sqrt(i);j++){
if(i%j==0)
isFlag=false;
break
}
if(isFlag=true){
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println("所花费的时间"+(end-start));
long start=System.currentTimeMillis();
label:for(int i=2;i<=100;i++){
boolean isFlag=true;
for(int j=1;j<=Math.sqrt(i);j++){
if(i%j==0)
continue label;
}
if(isFlag=true){
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println("所花费的时间"+(end-start));