栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java笔记-第二周

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java笔记-第二周

第二周 1.流程控制语句
	1.顺序结构语句 :代码由上而下依次加载
	2.选择结构语句 :
		(1)if语句格式1
			if(条件表达式){
				语句;
				}	
			执行流程:
				1)当前条件表达式成立,执行语句
				2)否则不成立,不执行语句;
			注意事项:
                1)if后面有左大括号的地方不能有分号;有分号;的地方不能有{ 左大括号
                2)在方法定义中书写---{} 局部代码块,限定局部变量的生命周期;
                        它的访问范围就是{}范围内  
            应用场景:就是针对单个条件进行判断的
        (2)if语句格式2:
                if(表达式){
                    语句1;
                }else{
                    语句2;
                }
            执行流程:
                1)判断表达式是否成立,如果成立,执行语句1,
                2)如果不成立,执行语句2;
		    区别:
                if...else:
                        流程控制语句,范围比较广泛,不仅可以操作具体数据值还可以操作输出语句
                三元运算符:
                        是运算符的一种,它只能操作具体的数据结果值,不能直接里面嵌套使用输出语句
                三元运算符能够实现的,一定能够使用if...else实现
                而if...else...实现的,不一定能够使用三元运算符实现
            应用场景:就是针对两种情况进行判断
         (3)if语句的格式3:
                if(表达式1){
                    语句1;
                }else if(表达式2){
                    语句2;
                }else{
                    语句n ;
                }
            执行流程:
                1)判断表达式1是否成立,如果成立,则执行语句1;
                2)如果不成立,继续判断表达式2是否成立,如果成立,执行语句2;
                3)如果表达式2不成立,继续判断表达式3是否成立,如果成立,执行语句3
                4)如果上面的条件表达式都不成立,则执行else中的语句n....
            应用场景:就是针对多种情况进行判断      
          (4)switch语句:
                switch(表达式){
                case 值1:
                    语句1;
                    break ;
                case 值2:
                    语句2;
                    break ;
                default:
                    语句n;
                    break ;
                } 	
        	执行流程:
                1)判断表达式的值和case值1进行匹配,
                	如果匹配成功,执行语句1,break结束
                2)如果case值1不匹配,继续和case后面的值2进行比较,如果匹配,语句2执行,break结束;
                3)如果上面的case的值都和switch中表达式的结果不匹配的,那么最终
                	就执行default中的语句n,然后程序默认执行到末尾结束了,break结束;               	      
            注意事项:
                1)switch语句后面的表达式可以是什么样的数据类型
                        基本的能够使用的数据类型:
                            byte,short,char,int
                        JDK5以后,可以跟枚举 (enum)
                        JDK7以后,可以是String类型
                2)case语句后面的值只能是常量
                        在Java语言中,Java是一个强类型语言:结构和格式是非常严谨的
                        在Javascript前端语言中,是一个弱类型语言,case后面的值既可以是常量,也能够是变量;
                3)case语句中的break 必须带上,否则会造成一个现象:case 穿透
                        由于某个case已经匹配了,此时如果没有break,那么就继续往下面中
                    	case的语句进行穿透,依次执行,遇见有case中有break的,那么switch结束
                4)switch的结束条件
                        a)语句break结束
                        b)程序默认执行到末尾
                5)default语句可以在语句中的任何位置,不影响程序的执行流程
                  	default的执行,当前case中都没有匹配的话,执行default
	3.循环结构语句 :
		(1)for循环
			格式:
                for(初始化语句;条件表达式;控制体语句(步长语句)){
                    循环体语句;
                }
            流程:
                1)初始化语句进行赋值,只执行一次
                2)然后判断条件表达式是否成立
                    如果成立,执行循环体语句;----然后执行控制体语句(步长语句) (++/--)
                3)继续判断条件表达式是否成立,
                    如果成立,执行循环体语句;----然后执行控制体语句(步长语句) (++/--)
                4)执行到条件表达式不成立,for循环语句结束          
            水仙花数:指的三位数,而且每个位的立方和就是当前数据本身
                   153 = 3*3*3+5*5*5 + 1*1*1      
                   
            for循环的嵌套:
                for(初始化语句1;条件表达式1;控制体语句1){
                    循环体是for循环
                    for(初始化语句2;条件表达式2;控制体语句2){
                        循环体语句2;....
                    }
                }
        (2)while循环格式
            格式:
                初始化语句;
                while(条件表达式){
                    循环体语句;
                    控制体语句(步长语句) ;
                }
        	流程:
                1)初始化语句进行赋值
                2)判断条件表达式是否成立
                    如果成立,执行循环体语句,控制体语句对变量进行自增或者自减
                3)继续判断条件表达式是否成立
                4)如果条件表达式不成立,while循环结束            
        (3)while循环和for循环的区别
                共同点:都能够描述循环的思想,将重复度高的代码进行优化,解决冗余度问题
                不同点:
                    1)格式上不同
                    2)从内角度考虑,for循环使用完毕结束后,那么当前这个变量也就被释放掉了
                    	而while不会,它始终可以访问到这个变量,所以相对来说说,for循环比较节省内存空间
                    3)释放明确循环次数
                          明确循环次数:优先采用for循环,其次再是while
                          不明确循环次数:使用while循环
                          
        (4)do-while
        		格式:
                    初始化语句;
                    do{
                        循环体语句;
                        控制体语句;
                    }while(条件表达式) ;
                流程:
                    1)初始化语句执行
                    2)执行条件表达式,如果条件表达式不成立,循环体至少执行一次
                      如果条件表达式成立...然后控制体语句,依次判断
					  do-while循环和其他两个循环的最大的区别:循环体至少执行一次
		(5)死循环中常见的两种格式
                for(;;){
                    //业务操作
                }

                while(true){//恒成立   (使用居多)
                    //业务操作..
                }
                
                实际开发中,需要完成一些业务逻辑操作,
                当达到某种条件的时候,结束掉死循环,---使用 break ;(结束,中断)
	4.扩展函数
        Jdk提供了一个数学运算类java.lang.Math(是一个工具类)
        可以针对三角函数,对数,指数等等进行数学运算
		提供了一个方法:
			public static double random():产生的一个随机数[0.0,1.0)
			double result = Math.random() ; //使类名.方法名名() ;		
2.跳转控制语句
    	1.break;	
    		中断,结束的意思	
            应用场景:
                  1)不能单独使用,报错
                  2)只能在两个场景中使用
                          switch语句自带了break关键字
                          循环结构语句中
                                 for/while循环都可以用到
           			break早期的时候,在for循环嵌套中使用,使用"标签语句"
                    break 标签名称; 结束指定的循环
                    标签名称:外层循环/内层循环
                    
        2.continue:属于跳转控制语句中的一种
            一般都在循环语句中使用的;
            表示结束当前循环,立即进入下一次循环了...
            
        3.return :返回结果   (结束方法去使用,但是很少单独使用)
	
            一般情况:return不会单独使用(很少单独使用)
            结合 Java中的有具体返回值类型的方法去使用
            
            实际开发中,
                只要看到return 关键字,肯定是当前方法中有具体返回值类型的时候去使用  
3.方法
	1.定义
        在Java中,
        方法就是使用{}代码块将一些业务代码包裹起来,并为之起名字,称为"方法名"
        方法名,需要见名知意,满足"标识符的规则",
            以后直接在main中调用我们自己的业务方法即可
		
		有具体返回值方法本身定义
			权限修饰符 静态修饰符 具体的返回值类型 方法名(形式参数列表){			
				//方法的业务逻辑
				return 结果;
			}
			
		没有具体返回值类型的方法的定义格式	
			权限修饰符 静态修饰符 void 方法名(形式参数列表){				
				//里面业务逻辑
				要么输出/类似于数组中(数据进行互换:排序)
				但是不能有return (必须和有具体返回值类型的方法一块使用)
			}
				
	2.详细解释:
			权限修饰符:现在固定使用public  :访问权限足够大的
			现在写方法:必须带上static  前面的写法:public static
					
			返回值类型:就是数据类型----研究的就是基本数据类型
			法名: 给{}代码块起名字, 见名知意,遵循"标识符规则",小驼峰命名法
							add(),求和
							sum() ,求和
			参数列表:
					参数类型 ----:数据类型,现在使用的就是基本数据类型 
					量名 ---- :给当前形式参数起名字,见名知意,"小驼峰命名法"
						
					return 结果: 根据你的业务方法,
							返回值类型时什么类型,给你返回具体的结果
	3.调用方法:
            1)输出调用:不推荐
            2)赋值调用:推荐
                调用有具体返回值类型的方法
                    方法名 ( 参数 ) ; 
                    数据类型 变量名 = 方法名 ( 参数 ) ; 
            3)单独调用:用不了
                    
     4.注意事项:
			1)方法和方法是平级关系,不能嵌套,只能在里面去调用
			2)定义方法的时候需要两个明确
				a)明确返回值类型
				b)明确参数类型以及参数个数(形式参数类型和几个参数)				
			3)在定义方法的时候,形式参数必须携带数据类型,因为Java是一个强类型语言
			4)在实际参数 main中,调用方法的时候,实际参数不需要携带数据类型,因为已经键盘录入,已经定义过了			
			5)实际参数和形参参数,传参时,数据类型需要一一对应
4.数组
	1.定义:
		数组就是能够存储同一种数据类型的容器,必须满足里面的元素是同一种类型的元素
		举例:
			存储的int类型,那么就不能出现其他数据类型的元素,否则编译报错
			
	2.数组的定义 格式
		1)数据类型[] 数组名称; (推荐第一种方式)
		2)数据类型 数组名称[] ;
		
		数组本身就属于引用数据类型,里面存储的元素内容,可以是同一种类型的基本类型元素或者同一类型的引用类型
		
		举例
			int[] arr ; //定义了一个int类型的数组,arr变量
			int arr[] ;//定义了int类型的arr数组
			
	3.数组的初始化			
		(1)动态初始化
				我们给定数组的长度,数组的元素内容由系统默认初始化
								默认初始化:系统给定的
									根据我们数组中存储的数据类型来判定
											举例:int类型的默认值就是0
												double的默认值0.0
												...
		    格式:		
				数据类型[] 数组名称 = new 数据类型[数组长度] ; (推荐第一种)
				数据类型 数组名称[] = new 数据类型[数组长度] ;
 				[I@6d06d69c 看成arr空间地址值
                    [:一维数组 
                    @:地址值标记 @ 
                    6d06d69c:十六进制数据
		(2)静态初始化
			  	我们给定元素的内容,由系统来默认分配长度
			
		    格式:
				(推荐)数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
				数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;
				
		    简化格式:推荐使用简写格式
				数据类型[] 数组名称 = {元素1,元素2,元素3....} ;
				数据类型 数组名称[] = {元素1,元素2,元素3....} ;
				
            注意: 创建数组的时候,不能既动态初始化了,还静态初始化了(动静结合:不行)
                    数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
                    int[] arr = new int[3]{1,2,3} ; 错误
	4.数组中常见的异常: 
			运行时期异常 
			1)数组角标越界异常---程序运行的时候出现异常	
                        ArrayIndeexOutOfBoundsException 类名	
                        出现这个异常原因:我们访问了数组中不存在的索引值报错
					解决方案:
							改变索引值		
			2)实际开发中,经常会出现 空指针异常 NullPointerException
                        就是当前 我们在访问某个对象的时候,对象已经是null
                        然后还要使用对象中的某个功能---出现空指针了	
					解决方案:
							对当前这个对象进行非空判断
	5.冒泡排序
			思想:两两比较,将较大的值往后方法,第一次比较完毕之后,最大值出现在最大索引处,依次这样比较
			规律:
                两两比较,大的往后放
                第一次比较,有0个不比
                第二次比较,有1个不比..
                比较的次数:数组长度-1次
5.方法重载(OverLoad)
		1.概念
            当方法的功能都是相同的,我们可以定义同名的方法
            参数列表不同,跟返回值无关,可以提高这个功能的扩展性
		
		2.定义:
			方法重载: 为了提供某个功能的扩展性
			方法名相同,参数列表不同,与返回值无关		
			参数列表不同:
				1)参数个数不同
				2)参数类型不同
				3)考虑参数类型的顺序
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号