第二周内容总结

一、计算机基础知识

1.计算机

计算机是一个能够高速处理海量数据智能电子设备.
由两部分组成:
		软件和硬件.
没有安装任何软件的计算机,裸机!

2.计算机用途

科学计算,利用计算机完成数据的运算
数据存储,完成一些文件的读和写,或者对一些数组内容排序...
计算机辅助设计:CAD工程制图
人工智能:利用计算机模拟人工思维!
媒体应用:动画,视频...
计算机网络:网络也很重要,一个台计算机没有网络,类似于电话没有电话线一个道理!

3.计算机硬件

概念:由电子,机械和光电元件组成的物理装置的总称!
组成:由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等等!

4.计算机软件

两种:
		系统软件
				dos系统,windows系统,Linux系统,MAC系统   移动端:Android系统,ios系统
		应用软件:
			计算机上的安装的客户端软件,QQ,办公软件wps,wegame软件,....

5.人机交互的方式

方式1:图形界面化(快速)
	简单,直观,容易上手!(用鼠标操作即可,快速去创建文件/文件夹/删除等操作)
	
方式2:命令行方式(掌握指令)
	现在是在windows系统上,
	Java工程师 最起码以后企业里面,
	可能是半个运维(Linux相关的指令起码20-40个指令),可能是半个测试,半个前端
	进入dos命令行窗口(dos控制台)
	方式1: (推荐)
    	windows键+r键组合键------>输入cmd----->进入dos窗口

6.常用的dos窗口指令

1)盘符号的切换   
盘符号不区分大小写: 回车即可

    C:\Users\Administrator>D:    盘符后面的这个冒号是英文符号

    D:\>
2)进入指定单个文件夹(目录) cd  目录名称
	D:\>cd EE_2211

	D:\EE_2211>
3)进入多级目录 cd 多级目录的路径
cd  将多级路径的名称复制过来(win10系统/win11系统  在dos窗口直接鼠标右键就粘贴了 )
	D:\>cd D:\EE_2211\10_24_am_code_resource\code

	D:\EE_2211\10_24_am_code_resource\code>
	
4)回退上一级目录 cd.. 或者cd  ..

5)如果现在处在多级目录路径上,想回退盘符根目录 cd \或者cd\	

6)查看(罗列)这个盘符或者目录某个目录的详细信息  dir指令
  
7)清除屏幕指令 cls(clear scrren)   
当你dos窗口上面有很多信息,将上面的信息不用了,删了,使用这个
8) 要在指定的目录里面创建文件夹(目录)
md (make directory)文件夹名称(目录名称)

9)创建文件  
copy con 文件名称带上后缀名 ----按回车键---进入编辑模式,书写文件内容,书写完成成之后,按---ctrl+z,编辑完成----回车即可!

rd  (remove deirectory)

    
11) 删除文件    del 指定文件名称 也可以批量删除所有同名的后缀的文件
举例:del *.txt  删除所有带有.txt的文件

12) rd的扩展指令
在windows系统上,想删除带内容的目录(里面有文件或者子文件夹)
rd /s 文件夹名称(目录) :询问删除删除带内容的目录?  y/n 选择y就是删除,n不删除
	
rd /s /q 文件名称(目录) :不询问删除带内容的目录 (属于暴力删除  这个指令慎用!)
	
rm -rf 目录名称 :在linux系统 递归删除所有的文件夹以及里面子文件

7.Java的发展历史

Java之父 詹姆斯高斯林  1995年正式推出   
Java图标  热气腾腾咖啡图标

8.Java平台版本(重点)

JavaSE(Standard Edition): 针对桌面应用程序的解决方案
JavaME( Micro Edition) :针对嵌入式设备提供的一套解决方案
		       移动端:Anroid基于JavaSE,还需要anroid相关的广播,订阅,服务,,,
					 Ios系统基于C语言
JavaEE( Enterprise Edition)	:针对企业级开发解决方案(以后就是搞这个的!)
				学习JavaEE核心技术13种:
							Servlet
							Jsp
							Spring
							Springmvc
                            Mybatis
                            Springboot

9.关于Java语言特点以及jdk,Jre,jvm的介绍

Java简单性,健壮性,分布式, (良好的移植性,开源)  
JVM:Java Virtual Machine Java虚拟机
假象计算机,自己的网络,自己的内存区域等等;

Jre:Java Runtime Environment Java运行环境,所有的Java应用程序要运行,计算机上必须有Java环境的支持,没有这个东西,运行不了,而Jre里面包含了Jvm以及Java程序运行时所有需要的核心类库

Jdk:Java Development Kit :Java开发工具包,里面有很多的开发工具 tools.jar包,里面有工具类(Arrays:数组工具类,Collections:集合工具类...),还包括了jre

三者的关系:Jdk > Jre > Jvm  (整个介绍:其实只需要安装jdk即可!)

10.编写HelloWorld入门案例,编码的步骤—>编译—>执行的过程:描述

//1)在jdk的bin里面下去创建HelloWorld.txt文件 (自己的jdk安装d盘里面的)
//2)编码 
	//定义一个类:固定写法 class开头 后面跟上类名,类名,见名知意(建议和文件名称一致),多个单词不能有空格
class HelloWorld{
    //jvm能够识别的主程序的入口,主方法  ,也是固定写法
    public static void main(String[] args){
        
        //jvm进行解析的时候,需要展示数据--java中有固定的的输出语句的语句
        System.out.println("helloworld") ;
    }
}

 //3)将.txt文件--更名为.java文件
 //4)windows+r键---输入cmd--->进入dos窗口
// 盘符切换d:-->切换之后 cd jdk安装目录的bin目录
 //5)使用javac 进行编译  javac java源文件
	javac  HelloWorld.java --->回车,如果代码没有问题,就正常出现类名.class文件,如果有问题,会报错,jvm里面打印日志,告诉我们哪一行成问题了
	
//6)运行这个类  java  字节码文件的前缀名称就是类名
 java HelloWorld

二、Java环境变量的配置

1.Java环境变量的配置path(重点)

不可能写的所有java文件都放在jdk的bin目录,这里面都是执行性.exe文件,都是在dos窗口用的
不小心删除.java文件(自己的文件),可能误删一些.exe文件,这个 时候jdk就出问题了,
需要配置全局的环境变量path,让我们的java文件可以在任何目录下都能够使用javac编译和java运行指令!

主要的配置的是Path(重点)
path:配置好之后,肯定需要现在进入到指令java文件所在目录里面,然后才去使用javac和java

path有两种方式配置:都分别说一下,说下优劣!

classpath(了解一下即可,以前很早使用 临时环境变量,现在使用非常少)
可以系统环境变量配置,classpath  指定为xx.class文件(字节码文件)地址 
classpath配置的地址是D盘根目录的 HelloWorld.class

2.Path环境变量的配置方式1

1)将jdk的bin目录的路径复制
win10/win11--->此电脑--->右键----属性----->高级系统上设置---->环境变量

---->系统变量,不要在用户变量找path,在系统变量找path (用户变量,一个计算机可以有多个用户)
path不要删除别的东西,别的东西都是系统配置,谨慎不要随意删除!
将1)里面jdk的bin目录的路径复制过来放在path里面,
D:\develop_software\Java\jdk1.8.0_162\bin

配置完成之后,打开dos窗口,在任何路径下都可以使用javac和java(c盘系统盘,有的文件夹没有权限)
输入javac 
java
java -version 都是有提示信息,说明可以用了

2.Path环境变量的配置方式2(推荐第二种方式)

配置方式1的弊端:
	1)就是当我们jdk版本升级了,需要手动更改系统变量的里面path,可能改动过程中不小心将别的环境变量误删了,为了避免这个问题我们不能改动path了,使用方式2配置! (主要原因)
	2)二阶段学习tomcat服务器,服务器是使用Java编写的,它在启动的时候,必须要在系统变量里面JAVA_HOME,这也是为什么我们需要使用方式2的配置;如果系统变量没有JAVA_HOME,那么tomcat的web服务器就会启动失败(闪屏) (在二阶段讲到tomcat服务器去说)


配置方式步骤
	1)赋值jdk安装目录的路径,不是bin目录     D:\develop_software\Java\jdk1.8.0_162
	2)此电脑---->右键---->选择属性---->高级系统设置---->环境变量---->系统变量
	系统变量----->新建一个变量名: JAVA_HOME
				变量值:就是1)的路径
	3)在path里面 引入JAVA_HOME对应的变量值的路径
    	path环境变量里面的最前面  %JAVA_HOME%\bin ,如果win10/win11 点击path,隔段形式,后面不用分号
    	如果是在一行上bin后面带上分号;
    	
    	


好处:以后jdk版本升级,需要改动path? 不需要,只需要改动JAVA_HOME变量值里面的路径 	

三、常量

​ 常量的定义:常量在程序过程中,其值不发生改变的量!

字面值常量
			1)字符串常量:使用英文的符号"" 双引号括起来的任何内容都是字符串
				举例
						"helloworld"
						"我爱高圆圆"
						"今天天气不好,心情是绿色的!"
			2)字符常量:使用英文的'' 单引号阔括起来的单个字符内容
					'a' :字符小a
					'A' : 字符大A
					'0' : 字符0
					
					不能'ab'---jvm在解析的时候,认为这个字符串,不是单个内容,解析错误!
 			
			如果字符不参与运算,就是字符本身!
			如果字符参与运算的时候,此时  字符(键盘上的每一个按键都是字符)
			它就会去找ANSI码表里面的字符对应的值,进行运算;
					'a' ---  97
					'A' ---  65
					'0' ---  48
					
			3)整数常量
						100,97
			4)小数常量
						3.14
						12.34
						
			5)布尔常量: true/false
			
			6)空常量: 一般不能直接输出null
					在引用数据类型(后面讲数组的说),默认值是null
		
		
		自定义常量 :跟一个关键字 final(面向对象去讲!状态修饰符)

四、关键字

Java的关键字:
		被Java语言赋予特定含义的单词,叫关键字!
		
在高级记事本notepad++以及editplus记事本以及开发工具idea(以后用的这个)/eclipse等等
针对关键字有一种颜色标记	


	package:包名(文件夹/目录结构) :以后在开发中代码分包,分层的 (真实的意义:在面向对象部分讲解)
	
	class:定义类的格式,Java中最基本单元就是类 固定格式 class 类名{}
	public:权限修饰符 (公共的/公开的,任何人都可以访问的),访问权限足够大
			还有其他权限修饰符private,protected ,具体的讲解在面向对象部分去讲
	static:静态修饰符 (面向对象部分讲解,本身的含义被"共享,共用")
	
	变量里面的基本数据类型都是关键字

注意事项:
goto/const这两个字 作为"保留字"去使用!

五、标识符

标识符:(起名字,"见名知意")
			对包名,类名,接口名,变量名,方法名,常量名起名字的一个字符序列!
			
			
组成规则:
		1)有0-9到数字组成
		2)字母字符(26个字母)
		3)$符号
		$)_下划线
	
对包名(目录结构package) 起名字规范  (面向对象部分讲解 包的含义)
			单级包:(字母都是小写)		com包名
											xx.java
			多级包:包名和包名使用.隔开
										com.qf
											com下面会有一个qf文件夹
												xx.java文件
对类名和接口名起名字是同样的:(遵循阿里规范:大驼峰命名法)
			定义类的时候:如果类名是单个单词,首字母大写,其余小写
			
			举例
					class  Hello{}
					class  Demo{}
			如果类名它是多个单词组成,每个单词首字母大写,其余小写
			举例:
					class HelloWorld{}
					class MakeNameDemo{}
					class StartGame{}
					
  

对变量名和方法名起名字是相同   规范: (遵循小驼峰命名法)
			
			如果变量名是一个单词,那么 单词的字母全部小写
						举例:  定义价格
								int price = 5;
			如果变量名是多个单词,那么第一个单词字母小写,
	从第二个单词开始,每个单词首字母大写	,其余小写!
						举例:
								定义苹果价格
								int applePrice = 7;
	
对常量起名字(以后看到java的源码里面常量的格式:使用的多个单词写的)
		   如果常量名,单个单词 ,字母全部大写
							举例		HELLO
							
			如果是多个单词,字母全部大写,单词和单词之间用下划线隔开!
			jdk提供的Thread类 :线程
					定义线程优先级三个常量:只看格式 (最小优先级,默认优先级,最大优先级)
				public final static int MIN_PRIORITY = 1;
				public final static int NORM_PRIORITY = 5;
				public final static int MAX_PRIORITY = 10;
				

六、变量

变量的定义:在程序过程中,其值发生改变的量

1.变量的三要素

1)数据类型
2)变量名
3)初始值

2.定义变量的方式

1)先定义,然后在赋初始化值
					数据类型 变量名;
					变量名 = 值;  (在使用这个变量之前,必须赋值,否则编译报错!)
2)要么直接定义时候赋初始化值
					数据类型 变量名 = 初始化值;

3.数据类型有哪些(识记)

分为两大类
基本数据类型:
四类八种
				1)整数类型: 有四种,默认int (讲课过程,没有明确类型都是int)
								byte:字节类型		占1个字节    范围:-128~127(必须记住)
								short:短整型		占2个字节	 
								int(默认)			占4个字节
								long:长整型			占8个字节
										在定义long 的时候,规定,在初始化值加上L或者l
								
							
								
				2)浮点类型:默认double
					单精度类型float ,在定义float类型后面规定,			      占4个字节
							需要标记,在初始化值的后面加上F或者f
										
					双精度类型duoble:									占8个字节
				3)字符类型:		
					  char:  里面的内容'字符'                             占2个字节
			     4)布尔类型:开发中,逻辑判断的true还是false的结果
								
								
					boolean	一般boolean不参与运算,只是表示true或者false	   占1个字节
					
					
				基本类型里面整数类型开发中:
						用最多的int,其次long	
					(long类型定义时间毫秒值,后期通过常用类的功能,将系统时间得到时间毫秒值)
					
				基本类型里面的浮点类型:使用最多的double(市场价格/商场价格...)
					
			引用数据类型:(后面 面向对象说    讲数组里面去说)
					数组,类,接口
						类(具体类/抽象类)
					

4.变量的隐式转换

byte、short、char三者之间不会互相转换,一旦参与运算,会优先提升为
int类型--->long--->float--->double

3.变量的显示转换(强制转换)

强制类型转换的引入
显示转换:强制类型转换:就是将大的数据类型转换成小的数据类型格式
目标数据类型  变量名 = (目标数据类型)(初始化值或者表达式)
不仅仅适用于基本数据类型,也适用于引用数据类型
开发中,如果没有明确要求,避免使用强制类型转换,导致数据精度损失
class DataTypeDemo{
	public static viod main(String[] args){
	int a=4;
	byte b=3;
	byte result=(byte)(a+b);
	System.out.println("结果是:"+result);
	}
}

4.变量的面试题

考的隐式/显式转换
byte类型的范围
有符号位的数据表示法(原码,反码,补码)
面试题:
	定义三个变量
	byte b1=3,b2=4,b;
	b=b1+b2;//错误 b=b1+b2;  b1先提升int b2提升int 结是int类型 但是接受类型是byte,接收不了
	b=3+4;
上面代码那一处会编译失败?为什么?
考点:Java隐式转换和显式转换、变量和常量相加区别:
			变量相加,需要考虑类型转换(Java中隐式类型转换)
			byte,short,char一旦参与运算,优先提升		 
class Test{
	public static void main(String[] args){
	byte b1=3,b2=4,b;
	b=(byte)(b1+b2);
	//b=3+4;
	System.out.println("b的值是:"+b);
	}
}
面试题:
		byte b=300;
		编译时会报错吗?如何计算值呢?请描述结果过程
		byte类型的取值范围  -128~127
		从int转换到byte可能会有损失,jvm校验语法,发现300的值已经超过接受类型范围,整数默认int
		最终结果int类型
		解决方案:强制类型转换
		byte b=(byte)300;
		解析过程:
				300已经超过了byte类型范围,使用int接收
				4个字节,先计算300的数据原码
				最高符号位                     数值位
				0						00000000 00000000 00000001 00101100
				整数的源码,反码,补码都相同
				将4个字节的int强转为1个字节的byte,使用补码截取
				00101100=0+0+32+0+8+4+0+0=44

七、运算符

1.Java中的运算符

1.基本的算数运算符:+,-,*,/,%
		注意事项:/ 默认取整
扩展的算数运算符:--或者++,应用场景--->统计场景(统计用户登录次数,猜数字游戏)
								 流程控制语句循环结构语句
			  使用方式:
			  			1)不参与运算,单独使用
			  				++或--在数据前面
			  				++或--在数据后面
			  				结论,无论在数据前还是后都是让数据自增1或者自减1.
			  			2)参与运算
			  				++或--在数据前面:对数据先进行自增1或者自减1,然后参与运算
			  				++或--在数据后面:先参与运算,然后再自增1或者自减1
基本的赋值运算符: =
			举例:
				int a=10;将10这个数据赋值给int类型的变量a
						将=右边的值赋给=左边的变量
				这个“=”不能写成“==”,后者是比较,最终的结果为true或者false
扩展的赋值运算符: +=,-=,*=,/=,%=
			举例:
				int b =100;
				b += 200;
				将这个扩展的赋值运算符的左边的变量和右边的数值相加,再赋值给左边的变量
比较(关系)运算符: <,>,<=,>=,==,!=
			注意事项:
				这些符号无论连接的表达式是简单的还是复杂的,最终结果都是true或者false;
				==是比较的,不能写成“=”
逻辑运算符: 开发中常用于逻辑判断!
基本的逻辑运算符:
		逻辑单与&:并列关系
					有false,则false;多个并列条件必须同时满足才能成立,否则不成立
		逻辑单或|:或的关系
					有true,则true,多个条件只要有一个成立则满足
		逻辑异或^:
		逻辑非!:
扩展逻辑运算符:
		逻辑双与&&和逻辑双或||
基本位运算符(数据在进行移位):
			位与&:  有0则0
			位或|:  有1则1
			位异或^:相同则为0,不同则为1
				特点:
			反码~:全部数据按位取反
移位符号:	 <<左移:将数据补码进行左移,多余的位数丢弃掉,推出原码
				结论:使用<<左边的数据乘以2的移动次幂
			>>右移:将数据补码进行右移,多余的位丢掉,推出原码
				结论:将>>左边的数据除以2的移动次幂
		>>>无符号右移:
				   将数据的补码进行右移,将多余的丢弃掉,无论最高符
				   号位是1还是0,都补0。
				   
三元运算符:
		格式:(表达式)?执行true的结果:执行false的结果;
		执行流程:
			表达式可以简单可以复杂,如果结果是true成立,则执行成立的结果
			否则不成立,则执行false的结果
关于+符号的用法
“字符串内容”+任何东西=“新的字符串”,反之一样
1)此时+就是字符串的拼接符号
“张三”+10=“张三10”
2)+,运算符里的算术运算符的加法运算

2.运算符的面试题

赋值运算符面试题:
	short s =1;
	1)s=s+1;
	2)s+=1;
	这两段代码,哪个对,那个错?
	答:1错,因为存在Java隐式类型转换,所以s=s+1的时候,s先提升int和1相加,
			结果是int类型,而s类型short无法接收int类型
	    2对,因为扩展赋值运算符,有一个特点,隐藏了强转类型转换
	    	s+=1此时等价于s=(short)(s+1);
扩展逻辑运算符面试题:
	逻辑双与和逻辑单与有什么区别?
		共同点:无论是单双都是表达并列关系
				而且都是有false则false!
		不同点:逻辑单与,对多个并列条件再执行的时候,效率比较低,
			   因为都需要将符号左右两边表达式执行一遍
			   逻辑双与,如果左边为false,则右边不执行(具有短路效果)
			   开发中都用扩展的逻辑运算符,执行效率高

3.键盘录入数据—>jdk提供文本扫描器

为了进行数据逻辑判断操作的时候,让我们书写程序的时候更加
灵活----通过键盘录入工具  jdk提供类供我们使用----文本扫描器
Scanner类提供了很多功能方法---->快速键盘录入一些int类型
使用步骤:
		1)导包:位置是在class的上面
		import java.uti.Scanner;
		2) 创建文本扫描器-----java中的关键字 new 创建对象
		Scanner 变量名 = new Scanner(System.in);固定格式
		3)友情提示:“请输入一个数据”
		4)通过文本扫描器录入(整数默认int)
			使用第二步的 int 结果变量名= 变量名.nextInt();固定写法
					调用文本扫描器的功能,录入int类型
		5)使用结果变量名来进行操作

使用步骤

使用步骤:
			1)导包  :位置是在class的上面 
			import java.util.Scanner ;  //用谁导谁
			
			2)创建文本扫描器 	----java中的关键字 new  创建对象(具体在面向对象中讲)
					
					Scanenr 变量名(称为"键盘录入对象名") = new Scanner(System.in) ;  固定格式 变量名 ,自己起名字
					
			3)友情提示 "请输入一个数据:"

			4)通过文本扫描器录入数据  (整数默认int)		
					    使用2)的
								
			int  结果变量名= 	变量名.nextInt() ; //.nextInt() :调用文本扫描器的提供功能,录入int类型

			5)使用这个结果变量名来进行操作
			
			
			
			
*/

//1)导包
import java.util.Scanner ;
class ScannerDemo{
	
	public static void main(String[] args){
		
		//2)创建文本扫描器(创建Scanner类对象) 固定写法,变量名自己起
		Scanner sc = new Scanner(System.in) ;
		
		//3)友情提示
		System.out.println("请您输入一个数据(int):") ;
		
		//4)录入int类型数据
		int result = sc.nextInt() ;  //.nextInt() :调用文本扫描器的提供功能 (固定写法)
		
		//5)输出或者使用
		//使用这个结果变量完成其他逻辑操作
		System.out.println("录入的数据是:"+result);
		
		
	
		
		
	}
}

4.流程控制语句

顺序结构语句
选择结构语句
	if语句
	switch语句
循环结构语句
	for循环
	while循环
	do while循环

1)顺序结构语句

/*

	流程控制语句
		顺序结构语句 :比较简单,所有程序都是通过jvm调用main进行的(入口)
					代码右上而下依次加载,除非在加载后面代码之前,jvm退出了!
					
					
		选择结构语句
				if
				switch
		循环结构语句
				for
				while
				dowhile
*/

class OrderDemo{
	
	public static void main(String[] args){
		
		//代码由上而下依次加载
		System.out.println("程序开始了...") ;
		
		System.out.println("helloworld") ;
		
		System.out.println("程序结束了....") ;
		
		//jdk提供了System类有一个功能,exit(0),参数为0,正常终止jvm
		System.exit(0) ;//固定格式先记住:可以终止jvm
		
		System.out.println("over") ;
	}
	
}

2)选择语句之if语句

/*
	选择结构语句之if
		格式1:
				if(表达式){
					语句;
				}
				
				场景:针对单个情况进行判断
				
				
		格式2:
				if(表达式){
					语句1;
				}else{
					语句2;
				}
				场景:针对两种情况进行判断
		格式3:
				if(表达式1){
					语句1;
				}else if(表达式2){
					语句2;
					...
					...
					...
				}else{
					
					语句n;
				}
				
				场景:针对多情况进行判断
				
				
上面格式1的流程:

		//格式1:{}里面单条语句,可以省略,但是前期不建议
		if(表达式){		  
			语句;
		}
		
		表达式是否成立,成立,则执行语句;
		否则,不执行
						
*/
//导包
import java.util.Scanner ;
class IfDemo{
		
		
		public static void main(String[] args){
				
				//创建键盘录入对象
				Scanner sc = new Scanner(System.in) ;
				
				//提示
				System.out.println("请输入一个数据x的值:") ;
				int x = sc.nextInt() ;
				
				//格式1
				if(x>=10){
					System.out.println("x的值是:"+x);
				}
				System.out.println("over") ;
				
		}
}

登录/注册场景

/*
	if格式2:
		if(表达式){
			语句1;
		}else{
			语句2;
		}
		场景:针对两种情况进行判断  (开发中使用最多的格式)
		
			 完成"登录"/"注册"
			 
			 
执行流程:
			表达式成立,则执行语句1;
			否则,执行语句2;	
			
			
	注意事项:
			无论if格式哪一种,不能再if后面来一个;  
			记住:有{大括号的地方,不能有分号,有分号地方不能有左{
				
				
	使用格式2:完成简单模拟"登录"


		String:Java中的类,代表字符串   (后面常用类里面说)
		
		字符串进行比较: String类的   字符串值1.equals(字符串值2) ,是比较字符串内容是否相同

*/
class IfDemo2{
	
		public static void main(String[] args){
			
			//定义变量
			int x = 10 ;
			//if(x>=10);  //没有意义
			
			//{} 称为"代码块"
			//{
				//System.out.println("x大于等于10") ;
			//}
			
			if(x>=10){
				System.out.println("x大于等于10") ;
			}else{
				System.out.println("x小于10") ;
			}
			
		}
}

3)多种情况进行判断

/*
	if语句格式3
		格式3:
				if(表达式1){
					语句1;
				}else if(表达式2){
					语句2;
					...
					...
					...
				}else{
					
					语句n;
				}
				
				场景:针对多情况进行判断
				
	执行流程:
		首先,判断表达式1是否成立,成立,则执行语句1;
		否则,不成立,继续判断表达式2是否成立,成立,执行语句2;
		否则,不错成立...依次判断
		
		....
		....
		
		如果上面都没有匹配的结果, 执行else中的语句n;
		
		
没有提示数据类型,都是int		
		需求
			键盘录入学生成绩(满分100分),判断该学生成绩的等级的划分
					90-100           "优秀"
					80-90			 "较优"
					70-80			 "良好"
					60-70			 "及格"
					60以下			 "不及格"
*/

//导包
import java.util.Scanner;
class IfDemo3{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请您输入的学生的成绩: ") ;
		int socre = sc.nextInt() ;
		
		/*
			if(表达式1){
					语句1;
				}else if(表达式2){
					语句2;
					...
					...
					...
				}else{
					
					语句n;
				}
		*/
		
		/*			
		if(socre>=90 && socre<=100){
			System.out.println("优秀") ;
		}else if(socre>=80 && socre<90){
			System.out.println("较优") ;
		}else if(socre>=70 && socre<80){
			System.out.println("良好") ;
		}else if(socre>=60 && socre<70){
			System.out.println("及格") ;
		}else{
			System.out.println("不及格") ;
		}
		*/
		
		//测试程序:
		//测试正确数据:正常范围内的数据
		//测试边界数据:边界数据的是否在我们指定范围内
		//测试错误数据:超了范围,不满足,应该也要包含进去
		
		if(socre<0 || socre>100){
			System.out.println("您输入的数据有误!") ;
		}else if(socre>=90 && socre<=100){
			System.out.println("优秀") ;
		}else if(socre>=80 && socre<90){
			System.out.println("较优") ;
		}else if(socre>=70 && socre<80){
			System.out.println("良好") ;
		}else if(socre>=60 && socre<70){
			System.out.println("及格") ;
		}else{
			System.out.println("不及格") ;
		}
		
		
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值