JavaEE基础知识

一、运算符的优先级别

JavaEE基础知识

经验:不用记,灵活运用小括号

二、转义字符

转移字符:表示具体特殊意义的字符本身

\" 代表一个双引号
\’ 代表一个单引号
\ 代表一个斜杠
\n 代表换行
\t 代表水平制表

二、常量

含义:在程序的执行过程中,该量不能发生变化

1.使用final修饰的变量成为常量
final int a = 10;
System.out.println(a);

2.数字字面量
System.out.println(10+20);

3.字面值常量
System.out.println("用良心做教育,做真实的自己");

三、java的执行语句

1.顺序执行:方法中的代码从上往下执行

2.分支执行:依据不同的条件去处理不同功能的代码(if、switch)

简单的if分支

​ 语法结构:
​ if(表达式){
​ …代码块…
​ }
​ 理解:
​ 表达式的结果一定是boolean类型
​ true - 执行代码块
​ false- 跳出if分支

案例1

如果麻生希的Java考试成绩大于98分,
麻生希就能获得一辆法拉利作为奖励

Scanner scan = new Scanner(System.in);
System.out.println("请输入麻生希同学的Java考试成绩:");
double javaScore = scan.nextDouble();

if(javaScore > 98){
System.out.println("奖励麻生希法拉利玩具赛车一辆");
}

复杂条件的if分支

案例一: 人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)

//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(m):");
double height = scan.nextDouble();

//2.计算健康值
double health = weight/(height*height);

//3.判断
if(health >= 20 && health <=25){
System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
}

案例二:小西满里惠Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。

Scanner scan = new Scanner(System.in);

System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();

if((javaScore>98&&musicScore>80) || (javaScore==100&&musicScore>70)){
	System.out.println("奖励小西满里惠法拉利玩具赛车一辆");
}

总结:if可以判断数值的区间和复杂的条件

if…else…

语法规则:
if(表达式){
…代码块…
}else{
…else代码块…
}
理解:
表达式的值必须是boolean
true - 执行代码块
false- 执行else代码块

案例:如果京香JuliaJava考试成绩大于98分,老师就奖励他一个劳斯莱斯,
否则老师就罚他进行编码

Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();

if(javaScore>98){
	System.out.println("奖励京香Julia劳斯莱斯玩具赛车一辆");
}else{
	System.out.println("唐老师给京香Julia通宵补课");
}

总结:if…else…二选一

if…else…if…

语法结构:
				if(表达式1){
					...代码块1...
				}else if(表达式2){
					...代码块2...
				}else if(表达式n){
					...代码块n...
				}else{
					...else代码块...
				}

理解:

表达式的结果必须是boolean值
从上往下判断,哪个表达式先成立(true),就执行相应的代码块
注意:
else{…else代码块…}根据需求可写可不写

案例一:人类的健康值在
15-20的数值内为偏瘦
20-25的数值内为健康
25-30的数值内为偏胖
(健康值算法为:体重(Kg) / 身高(米)的平方)

//1.输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weight = scan.nextDouble();
System.out.println("请输入身高(m):");
double height = scan.nextDouble();

//2.计算健康值
double health = weight/(height*height);

//3.判断
if(health>=15 && health<20){
	System.out.println("小护士说:\"偏瘦,多喝啤酒,多吃垃圾食品,多熬夜\"");
}else if(health>=20 && health<25){
	System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
}else if(health>=25 && health<30){
	System.out.println("小护士说:\"偏胖,多运动,嘿嘿嘿~~~\"");
}else{
	System.out.println("小护士说:\"数据异常,请到***医院详细检查\"");
}

案例二:通过键盘录入学生成绩
如果在90-100之间,则打印“A”,
否则如果在80-90之间,则打印“B”,
否则如果在70-80之间,则打印“C”
否则如果在60-70之间,则打印“D”
否则打印“E”

Scanner scan = new Scanner(System.in);

System.out.println("请输入成绩:");
double score = scan.nextDouble();

if(score >= 90 && score<=100){
	System.out.println("A");
}else if(score >= 80 && score<90){
	System.out.println("B");
}else if(score >= 70 && score<80){
	System.out.println("C");
}else if(score >= 60 && score<70){
	System.out.println("D");
}else if(score >= 0 && score<60){
	System.out.println("E");
}else{
	System.out.println("成绩异常");
}

案例:千锋举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,
根据性别分别进入男子组和女子组。

Scanner scan = new Scanner(System.in);

System.out.println("请输入比赛成绩:");
double score = scan.nextDouble();

if(score >= 0 && score < 16){
    System.out.println("请输入性别:");
    String sex = scan.next();
    if(sex.equals("男")){//判断两个字符串内容是否相等
        System.out.println("恭喜,进入到男子组决赛");
    }else if(sex.equals("女")){//判断两个字符串内容是否相等
        System.out.println("恭喜,进入到女子组决赛");
    }else{
        System.out.println("性别异常");
	}
} else {
	System.out.println("重在参与");
}

总结:
if(){} :单纯判断某个条件
if…else…:二选一
if…else if…:多选一
if可以判断单个值,也可以判断区间,也可以判断复杂的条件

switch分支

语法结构:
				switch(表达式){
					case 值1:
						...代码块1...
					break;
					case 值2:
						...代码块2...
					break;
					case 值n:
						...代码块n...
					break;
					default:
						...default代码块...
					break;
				}

理解:
表达式的结果:byte、short、int、char、字符串、枚举
分别给值1、值2、值n做比较,哪个相等就执行对应的代码块
如果都不相等,执行default代码块
break的作用是跳出整个分支语句

注意:
default:
…default代码块…
break;
default代码块根据需求可写可不写

案例:北条麻衣参加计算机编程大赛

​ 如果获得第一名,将参加千锋组织的1个月马尔代夫旅游
​ 如果获得第二名,将奖励苹果Pro笔记本电脑一部
​ 如果获得第三名,将奖励移动硬盘一个
​ 否则,何老师晚上给北条麻衣通宵补课

Scanner scan = new Scanner(System.in);
System.out.println("请输入北条麻衣的比赛名次:");
String str = scan.next();

switch(str){
    case "第一名":
        System.out.println("和唐老师一起参加千锋组织的1个月马尔代夫旅游");
    break;
    case "第二名":
        System.out.println("奖励苹果Pro笔记本电脑一部");
    break;
    case "第三名":
        System.out.println("奖励移动硬盘一个");
    break;
    default:
        System.out.println("唐老师晚上给北条麻衣通宵补课");
    break;
}

面试题:
case的值可以相同吗? 不允许相同
default可以省略吗? 可以
break可以省略吗?可以
default的位置一定要在最后吗? 不一定,最好放在最后可读性会高一些
表达式值的类型可以是什么? byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)

案例:输入年和月,输出当月的天数

Scanner scan = new Scanner(System.in);

System.out.println("请输入年:");
int year = scan.nextInt();
System.out.println("请输入月:");
int month = scan.nextInt();
int day = 0;//当月天数
switch(month){
    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
    	day = 31;
    break;
    case 4:case 6:case 9:case 11:
    	day = 30;
    break;
    case 2:
    	if((year%4==0&&year%100!=0) || (year%400==0)){//闰年
    		day = 29;
    	}else{//平年
    		day = 28;
    }
    break;
}

System.out.println(year + "年" + month + "月的天数为:" + day + "天");

if vs switch
表达式的区别:
if的表达式:boolean
switch的表达式: byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)
应用场景的区别:
if:判断单个值、判断区间、判断复杂条件
switch:判断单个值

for循环

语法结构:
for(表达式1;表达式2;表达式3){
…代码块…
}
理解:
表达式1:初始化变量
表达式2:判断条件
表达式3:更新变量
执行流程:
1.初始化变量
2.判断条件,结果必须是boolean类型
true-执行代码块,并且更新变量,重复第2步
false-跳出整个循环语句

for循环变形记:
1.代码块执行完毕后再更新变量,i++和++i效果是一样的
2.for循环中定义的变量他的作用域就在for循环内
3.更新变量没有局限性,可以自增也可以自减

int k = 0;
for(;k<5;){
	System.out.println("键盘敲烂,月薪过万!!!");
	k++;
}
System.out.println(i);//5

for(int i = 1;i<=5;i++){
	System.out.println(i);
}	
for(int i = 5;i>=1;i--){
	System.out.println(i);
}
for(int i = 1;i<=9;i+=2){
	System.out.println(i);
}

死循环:
注意:死循环是应该要积极避免的

for(;;){
	System.out.println("死循环");
}
System.out.println("xxxxx");

案例1:循环录入5次int类型的数字,输出总和

Scanner scan = new Scanner(System.in);
int sum = 0;
for(int i = 1;i<=5;i++){
	System.out.println("请输入第" + i + "个数字:");
	int num = scan.nextInt();
	sum += num;
	//sum = (int)(sum+num);
}
System.out.println("总和为:" + sum);

案例2:循环录入麻生希同学的5门课成绩,计算平均分

Scanner scan = new Scanner(System.in);
int sum = 0;
for(int i = 1;i<=5;i++){
	System.out.println("请输入第" + i + "门成绩:");
	int num = scan.nextInt();
	sum += num;
}
System.out.println("平均分为:" + (sum/5));

案例3:循环录入5次int类型的数字,输出最大值

Scanner scan = new Scanner(System.in);

System.out.println("请输入第1个数字:");
int max = scan.nextInt();

for(int i = 2;i<=5;i++){
	System.out.println("请输入第" + i + "个数字:");
	int num = scan.nextInt();
	if(max < num){
		max = num;
	}
}
System.out.println("最大值为:" + max);	

for循环嵌套

案例1:打印以下图形

****
****
****
for(int i = 0;i<3;i++){//控制行数
	for(int j = 0;j<4;j++){//控制列数
		System.out.print("*");
	}
	System.out.println();
}
*		i=0
**		i=1
***		i=2
****	i=3
*****	i=4
for(int i = 0;i<5;i++){
	for(int j = 0;j<=i;j++){
		System.out.print("*");
	}
	System.out.println();
}
***** i = 0
****  i = 1
***	  i = 2	
**    i = 3
*     i = 4
for(int i = 0;i<5;i++){
	for(int j = 0;j<5-i;j++){
		System.out.print("*");
	}
	System.out.println();
}	
***** 	i = 0
****  	i = 1
***	  i = 2	
**   i = 3
*   i = 4
for(int i = 0;i<5;i++){
	//打印空格
	for(int k = 0;k<i;k++){
		System.out.print(" ");
	}
	//打印星星
	for(int j = 0;j<5-i;j++){
		System.out.print("*");
	}
	System.out.println();
}			

3.循环执行:条件成立会重复性的执行某个功能(for、while、do-while)

语法结构:
do{
…代码块…
}while(表达式);
理解:
表达式的结果必须是boolean
true-执行代码块
false-跳出do-while循环

执行流程:
1.执行代码块
2.判断表达式
true - 执行代码块,重复第2个步骤
false - 跳出do-while循环

死循环:
do{
System.out.println(“死循环”);
}while(true);

案例:水野朝阳参加学校组织的歌咏比赛,大赛在即,
老师建议:先彩排一次,如果很令人满意,以后就不用彩排了,
否则每天都排,直到现场表现满意为止!

Scanner scan = new Scanner(System.in);
String str;
do{
	System.out.println("水野朝阳:\" 旋转跳跃我闭着眼...\"");
	System.out.println("水野朝阳:\" 唐老师,您满意了吗?\"");
	str = scan.next();
}while(!str.equals("满意"));

for vs while vs do-while

语法结构的区别:
for(初始化变量;判断条件;更新变量){

​ }
​ while(判断条件){

​ }
​ do{

​ }while(判断条件);
​ 注意:所有循环中的判断条件的结果都是boolean,true-循环,false-跳出循环

​ 执行顺序的区别:

for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍,再判断

​ 应用场景的区别:

循环次数固定的情况:for
循环次数不固定的情况,先判断再执行:while
循环次数不固定的情况,先易运行一遍再判断:do-while

4.特殊的流程控制语句(break、continue、return、lable)

break:作用在循环中,代表跳出整个循环

案例:循环录入麻生希同学5门课的成绩并计算平均分,
如果某分数录入为负,停止录入并提示。

Scanner scan = new Scanner(System.in);
		
boolean flag = true;//true-正常录入 false-录入错误
double sum = 0;
for(int i = 1;i<=5;i++){
	System.out.println("请输入第" + i + "门成绩:");
	double score = scan.nextDouble();
	if(score < 0){
		flag = false;
		break;
	}
	sum += score;
}

if(flag){
	double avg = sum/5;
	System.out.println("平均分为:" + avg);
}else{
	System.out.println("分数为负数,停止录入");
}  

continue:作用在循环中,代表跳过循环体剩余的部分,进入到下一次循环

案例:循环录入Java课5名学生的成绩,统计分数大于等于80分的学生比例。

Scanner scan = new Scanner(System.in);
int num = 0;//记录大于等于80分学生的人数
for(int i = 1;i<=5;i++){
	System.out.println("请输入第" + i + "名学生的成绩:");
	double score = scan.nextDouble();
	if(score < 80){
		continue;
	}
	num++; 
}

System.out.println("大于等于80分学生的比例为:" + (num/5.0*100) + "%");

return:单独编写,代表结束当前方法

System.out.println("1");
System.out.println("2");
if(true){
	return;
}
System.out.println("3");
System.out.println("4");
// 程序运行只有1,2

lable:给循环做标记

经典面试题:以下代码会报错吗?
不会报错,考点:lable技术

https://www.baidu.com/   // 相当于  https:for(){}
for(int i = 0;i<5;i++){
	System.out.println("嘻嘻");
}

需求:双层for循环,外层循环5次,内层循环3次,
当外层循环到第3次,在内层循环中结束掉外层循环

a:for(int i=1;i<=5;i++){
	for(int j=1;j<=3;j++){
		if(i == 3){
			break a;
		}
		System.out.println(i + " -- " + j);
	}
}
上一篇:JavaEE之SSM框架——SSM整合


下一篇:JAVAEE综合实验--新闻管理系统