第一周总结

第一周:总结

1.变量_数据类型
变量:程序执行过程中,值发生改变的量!
	三要素:
		1)数据类型
		2)变量名
		3)初始化值	
	针对Java语言数据类型的划分:
		两大类:
				基本数据类型
						四类八种
							整数类型
								byte: 字节类型	占1个字节  记住byte类型的范围:-128~127(考点)
								short:短整型:占2个字节
								int(整数默认的类型):整数类型 占4个字节
								long:长整型:占8个字节
									应用场景:定义时间(系统时间换算成时间毫秒值)相关的变量(都是用long)
							浮点类型:(小数默认的就是double类型)
								单精度:float类型				占4个字节
								双精度:double类型				占8个字节
							字符类型:		
								char类型						占2个字节
							布尔类型							占1个字节
								boolean类型(true/false)			
								应用场景:用在逻辑判断中,布尔类型一般不参与运算!
				
				引用数据类型(研究的这个类型) :面向对象部分讲解
						数组,类(具体类,抽象类),接口
						
						
      注意事项:
		1)要遵循的变量的三要素
				数据类型  变量名  = 初始化值;		
		2)先定义,但是必须在使用之前对这个变量进行初始化,否则编译不通过!
		3)Java是一种强类型,不能重复定义变量
		4)同一行上可以定义多个变量,一般我们开发的时候,不建议这样使用(笔试题/面试题)
		
			代码的编写风格:一行一句话
			
			
	现在写的这些变量都在main方法中写---->局部变量(在方法定义或者在方法声明上)
        变量在进行运算的时候,需要保证这些数据的类型一致!
	
	Java存在默认类型提升(基本数据类型):
	byte,short,char三者不会相互转换,一旦这三个中间的某个类型参与运算了,它会提升
	int类型(考点)---long类型--double类型
	
	
	注意:
		boolean类型的变量不会进行数据类型的相互转换(true/false)
		Java中存在强制类型转换:
	语法格式:
		目标数据类型  变量名 = (目标数据类型)(变量值) ;
		
		
		注意事项:
			强制类型不要随便使用,损失数据的精度!
			
			适用范围:基本数据类型以及引用类型!
			
2.运算符
1.算术运算符
Java中的运算符号的分类:
		算术运算符:
				基本的算术运算符:
						+,-,*,/(默认取整),%(模)
						
				扩展的算术运算符:	++或者--
		赋值运算符:
		关系(比较)运算符
		逻辑运算符
		位运算符
		三目(三元)运算符
扩展的算术运算符:	++或者--
	
	++或者--:
		情况1:
			单独使用:无论操作符++或者--在数据的前面还是数据的后面,都是对当前数据本身的值进行
			自增1或者自减1;
			
		情况2:
	参与运算使用:
		1)如果++或者--在数据的前面,是先对当前数据值进行自增1或者自减1,然后参与运算
		2)如果++或者--在数据的后面,先运算,然后在对该数据值本身进行自增1或者自减1
2.逻辑运算符:

	逻辑运算符的分类:
		基本的逻辑运算符:
			逻辑单与 &  :有false,则false
			逻辑单或 |  :有true,则true
			逻辑异或 ^  :相同则为false,不同则为true
					简单记忆:男女关系
							男男(false)  女女(false)  女男(true) 男女(true)
			逻辑非   !  :!true,则false;非false,则true;偶数个非是它本身的结果
			
		
			
扩展的逻辑运算符
		
			逻辑双与 &&
			逻辑双或 ||
			
面试题:
	逻辑双与&&和逻辑单与&的区别?
	
	共同点:
			都是并列关系,有false,则false
			
	逻辑双与&&最大的不同点:
		存在逻辑双与&&短路效果:    (经常在笔试题中选择题!)
		逻辑双与&&连接的表达式左边如果结果为false,右边的表达式不执行了;
		
	
	逻辑双|| :逻辑双||连接的表达式左边为true,右边不执行了!(逻辑双||的短路效果)
	开发中,经常使用的逻辑双与&&或者逻辑双或||
	
	
3.位运算符:
位运算符 :针对两个具体的数据值进行运算
	
	基本的位运算符
		位与&
		位或|
		位异或^
		~反码(按位取反,0变1,1变0)
	移动符号
		<<(左移),>>(右移),>>>(无符号右移)
位异或的特点:
		一个数据对另一个数据位移或两次,结果是它本身
		
	
4.关系运算符:
关系(比较)运算符
	<,>,<=,>=,==,!=
	
	特点:使用比较符合连接的表达式无论是简单表达式还是复杂的表达式,结果都是boolean类型
	
	
	注意:
	== 比较的两个数据值是否相等,不要写成= (赋值运算符)
	
	数学表达式: 3<=x<=5   
	Java语言: x>=3 && x<=5 并列关系
5.赋值运算符:
赋值运算符:
		基本的赋值运算符:
			= 
			将等号右边的值赋值给等号左边的变量;
			int a = 10 ; 将整数10赋值给int类型的变量a   
			
			注意:= 不能写成==(比较运算符)
		扩展的赋值运算符
		+=,-=,*=,/=,%=...
		
		举例:
			+=
				将等号左边的数据和右边的数据相加,在赋值给左边的变量
6.三目运算符:

	三元运算符也称为(三目运算符)
	
	格式:
		(表达式)? 执行true的结果:执行false的结果;
3.键盘录入数据
刚才这些程序,定义变量的写死了,程序不灵活;
为了程序的灵活性,引入Scanner类(java.util.Scanner):文本扫描器


今天先使用这个类录入int类型数据(常用类中讲解里面判断功能/获取功能)
基本使用:
	1)导包 在Java中只要不是java.lang包下的类都需要导包
	位置在class上面, 格式import java.util.Scanner; (用哪个类导哪个类)
	
	2)固定格式:创建一个文件扫描器对象
		Scanner 对象名 = new  Scanner(System.in) ;
		
	3)友情提示:"请您输入一个整数数据:"	
	4)接收数据:
		int 变量名=  对象名.nextInt() ;
	5)输出变量名即可!
4.流程控制语句:

Java中的流程控制语句:
	三大类:
		1)顺序结构语句
			代码从上到下依次加载!
		2)选择结构语句
			if结构语句
				三种格式:
					if(条件表达式){
						语句;
					}
					
					//开发中:if格式2使用居多
					if(条件表达式){
						语句1;
					}else{
						语句2;
					}
					
					if(条件表达式1){
						语句1;
					}else if(条件表达式2){
						语句2;
						
					.....
					}else{
						语句n+1;
					}
					
			switch结构语句
			switch(){
			
			case 1:
			   语句1;
			   break;
			   case 2:
			   语句2;
			   break;
			   ....
			   default:
			     语句1;
			     break;
			}
switch语句使用的注意事项:
		1)default语句是可以放在语句中的任何位置,不影响执行流程!
		(建议default语句使用的时候放在语句末尾)
			如果放在语句中,最好带上break,否则会造成case穿透!
		2)switch语句的结束条件:
			遇见break结束或者程序默认执行到末尾!
			
		3)case语句后面的值只能是常量,不能变量(Java是一种强类型语言)			
							
使用If语句的注意事项:
		1)有左大括号{的地方不能有分号,有分号的地方不能有左大括号{
		2)if语句中如果是单个语句,{}可以省略,但是不建议!
		3){}表示一个作用域,定义变量需要在{}这个作用域范围内使用
		
三元运算符和if格式2的区别?
	三元运算符连接的是两个数据的数据值(针对这个是数据值进行比较或者判断)
	if格式2是一种流程控制语句:
		范围要比三元运算符大,不仅仅可以判断两个数据数据值还可以操作具体语句
		
	能够使用if格式2实现的不一定能够使用三元运算符;
	但是如果能够三元运算符实现的一定能够使用if格式2 
		(在开发中,针对业务逻辑判断还是使用if格式2)
		
1)switch后面的表达式需要和case语句中的值进行匹配
	如果值1匹配了,就执行语句1,遇见break 结束switch语句;
	如果值1不匹配,就看值2是否匹配,如果匹配,执行语句2,遇见break结束;
	
	...
	如果上面都不匹配,执行default中的语句n+1,break结束语句;
	
	break ; 属于跳转控制语句中一种: "结束,中断" ,
	应用场景:是在switch以及loop(循环语句中使用)

	面试题:
		switch后面表达式可以是什么样的数据类型?
		一般情况:可以byte,short,char,int类型的	
		JDK5以后,是可以跟枚举 (enum)类型的 (引用类型)
		JDK7以后,是可以跟String类型的(引用类型)
2.循环结构语句:
循环语句的格式:
		for循环
		while循环
		do-while循环
		
		
for循环的格式
	for(初始化语句;条件表达式;步长语句(控制体语句)){
		循环体语句;
	}
	
	执行流程:
		1)进入for循环,给变量进行初始化,执行初始化语句
		2)判断条件表达式是否满足条件 (true的结果),然后执行循环体语句
		3)执行循环体完毕之后,执行步长语句(对变量进行操作:++/--)
		4)继续判断条件表达式是否成立,如果成立,再次执行循环体语句----->再次执行步长语句
		....
		...
		..
		5)当前条件表达式不成立,for语句结束!

for:
需求:
		控制台输出所有的"水仙花数";
		
分析:
	什么是水仙花数:水仙花数指的是三位数---->范围:使用for循环 100 到1000之间(不包含)
	水仙花数的特点:
		三位数的每个位上的数据的立方之和是这个数据本身!
		举例:
			153 = 1*1*1 +5*5*5 + 3*3*3 
			
	关键:如何确定每个位上的数据:
	
		定义三个变量,分别获取每个位上的数据 
			int ge = 该数据本身 % 10 ;	%:模 (求余数)
			int shi = 该数据本身 /10 % 10;   //153 ---十位的数据:5
			int bai = 该数据本身/10 /10 %10 ;
			
		确定了每个位上的数据了,只要满足条件: 该数据本身 == ge*ge*ge+shi*shi*shi +bai*bai*bai
		
		输出这个数据---"水仙花数"
*/

class ForDemo3{
	public static void main(String[] args){
		
		//第一步:确定范围:水仙花 三位数:for循环 明确了范围
		for(int x = 100; x < 1000; x ++){
			//获取每个位上的数据
			int ge = x % 10;
			int shi = x /10 % 10 ;
			int bai = x /10 /10 % 10;
			
			
			//满足的条件:满足条件: 该数据本身 == ge*ge*ge+shi*shi*shi +bai*bai*bai
			if(x==(ge*ge*ge+shi*shi*shi +bai*bai*bai)){
				//将x进行输出
				System.out.println(x);
				/*
					153
					370
					371
					
					407	
					*/
			}
		}
	}
}
5.while:
while循环
	基本格式
	
	while(条件表达式){
		循环体语句;
		步长语句;
	}
	
	扩展格式:(使用居多)
	初始化语句 ;
	while(条件表达式){
		循环体语句;
		步长语句;
	}
执行流程:
	1)先执行初始化语句,该变量进行初始化
	2)判断条件表达式是否成立,如果成立,先执行循环体语句,----->执行步长语句
	3)继续判断条件是否成立,如果还成立,继续在执行循环体语句----->执行步长语句
	..
	...
	最终,条件表达式不成立,while循环结束!
	
2.0

while循环和for循环的区别?
	
	1)两种循环格式不一样 
		while循环---->
				从内存角度考虑,while循环结束了,依然可以访问循环中的变量(消耗内存空间)
		for循环----->
				从内存角度考虑,for循环结束了,不能访问变量(变量生命周期随着for循环的结束而结束),比较省内存空间
	2)从应用场景来说:
		一般情况:如果明确循环次数或者明确循环的范围,优先考虑使用for循环
					举例:给3次机会,模拟用户登录..   可以使用for循环
				
				如果不明确循环次数或者不明确的范围,使用while循环操作 
					举例:	
						猜数字游戏,(产生的随机和用户录入的数据进行比较)
									---->这种情况:使用while循环操作
例题:
	//猜数字小游戏
	//java.lang.Math类:数学运算的类 
	//方法:获取随机数的方法:public static double random() 取值范围:[0.0,1.0)
	
	
	键盘录入一个数据:整数类型(int) 和随机数据比较,
		如果大了,提示"您录入的数据大了"
		如果小了,提示"您录入的数据小了"
		相等,提示"恭喜您,猜中了"	
		
		附加条件:统计 多少次猜中了
*/

//导包
import java.util.Scanner;
class WhileTest{
	public static void main(String[] args){
		
			//获取一个随机数
		//double d = Math.random() ;
		//System.out.println(d) ;
		//想求出:1-100之间的随机数
		int number = (int)(Math.random()*100+1);   //double
		//System.out.println(number) ;
		while(true){ //不知道录入多少次,使用while死循环
			
		
			//创建键盘录入对象
			Scanner sc = new Scanner(System.in) ;
			//提示并接收
			System.out.println("请您输入一个数据:");
			int guessNum = sc.nextInt() ;
			
			//选择结构语句
			if(guessNum > number){
				System.out.println("您录入的数据大了...") ; 
			}else if(guessNum < number){
				System.out.println("您录入的数据小了...") ; 
			}else{
				System.out.println("恭喜您,猜中了...") ;
				break ; //结束循环!  (中断,结束)
			}
		}
		
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值