Java语法手册 二

Java语法手册 二

程序流程控制:IF

Java, 几乎任何的编程语言执行流程都遵循,从上往下, 从左往右...

分支结构:

在这里插入图片描述

JAVA中常见选择结构:

JAVA中常见选择结构:
if(){}:								 //if() 判断括号true/false true:执行大括号 false:跳过;
if(){} - else{}:					 //同上但 if()括号结果为 false 执行else{};   	
if(){} - else if(){} - else{}:		 //多重if 选择结构 if() 基础上 加入else if() 判断 进入if()正确的 {} 中执行;

小知识:Java 中如果 if 大括号{}中只有 一行代码,可以省略不写{}; 特殊: if() 里面写一行代码 if()else, 可以不写大括号~ 常有笔试题) 

三元操作符: 表达式?值1:值2;

int i = 1==1?1:2;
	一个简单的 if(){}-else{}; 结构,优先使用简单执行效率高~ 还能装逼😁
注意:
	三元运行符: 编译时就需要确保 ?值1:值2; 的数据类型要统一,不然会编译不通过
如果:  
	Object o = true?new Integer(1):new Double(2.0); 
	结果o就是1.0 int和double 因为类型统一要符合所以自动转换成了double类型;(面试题)		

JAVA 常用逻辑运算符:

JAVA 常用逻辑运算符: (图: 逻辑运行符)				//通常 if() 括号中的 条件处理
&& 与:	当两个或多个条件都为真true时结果,才为真
|| 或:	或,条件中有一个为真时候结果就是真 true 
!  非:	当某个条件的结果为真或假时 取到的是结果的 反,即不是当前结果
^  异:  a^b a,b都是boolean类型,都是 true/false 结果相同返回 false,结果不同返回true
扩 :
	& &&区别: 二者运算结果是相同的,当符号左边是 false时 & 会继续执行下面的; && 不会执行下面的直接返回 false;(推荐使用&& 类似于短路)
	| ||区别: 二者运算结果是相同的, 当符号左边是 true时  | 会继续执行下面的; || 不会执行下面的直接返回 true; (推荐使用|| 类似于短路)	

嵌套 if 选择结构: 
	//程序中...无论是if()/if-else...可以进行相互嵌套使用;			
	//为了方便区分注意代码缩进

程序流程控制:switch

在这里插入图片描述

Switch 和 if

  • switch 完成的功能 if-else一定可以
  • 如果是case不是很多~建议使用switch,其效率比 if-else 高,它不需要像if一样逐行执行if() 比较,直接指定执行的代码块!
  • 更好的解决等值判断问题

switch 语法结构:

switch(表达式){				switch : 表示 开关 就是()中的值,()括号中只能是: short,byte,char,int,枚举 (jdk5.0后支持),String类型表达式 (jdk7.0后支持)	            
	case 常量 1:				             
		//代码块1;          	case : 表示情况 case 后面可以是: int,short,byte,char,枚举,String类型必须是一个固定值
		break;					   case 可以有多个,但,每一个 case 后面的常量值必须各不相同			
	case 常量 2:				   当 switch() 中的值与 case 后面的值匹配时进入 case 代码块中执行代码;	
		//代码块2;
		break;				break : 表示 停止 跳出当前 switch 结构 执行 switch(){} 之后的代码 
	....							case 贯穿 : (可以不写 但不写 程序认为后面的 case 都符合 相继执行!!)

	default:				default :表示 默认 当case没有一个 与switch中的值匹配时 执行default 中的代码
		//代码块 n;					 default 结构可以变更,不影响  //但一般放在switch最后 可选!
		break;	 
}	

switch语句有关规则

switch(表达式)中表达式的值必须是下述几种类型之一:
	byte short char int 枚举(jdk5.0) String(jdk7.0)
	
case子句中的值必须是常量,不能是变量名或不确定的表达式值;
	 同一个switch语句,所有case子句中的常量值互不相同;
	 
break语句用来在执行完一个case分支后使程序跳出switch语句块;
	如果没有break,程序会顺序其它代码块直到执行到switch结尾,`或遇到break` 
	一个case 成立执行之后哦,下面的case不在判断!
	
default子句是可任选的同时,位置也是灵活的,当没有匹配的case时,执行default
	不一定是最后执行,可以放在第一位,然后没有 break 
	继续执行下一个case 

循环结构:

循环,这个东西学习会设计很多的算法, 后面本人会整理一些…这里只是总结语法~

循环语句的四个组成部分

  • 初始化部分(init_statement)
  • 循环条件部分(test_exp)
  • 循环体部分(body_statement)
  • 迭代部分(alter_statement)
    在这里插入图片描述
while( boolean ){};
		while(循环条件){	//程序先判断()循环条件 是否成立 成立进入循环
		//代码			//进入循环执行,执行之后,在跳到前面 () 循环条件,判断 成立在进入;!
		}					
		特点//先判断,在循环💨

do{-}while( true );
		do{	
			//无论如果程序都会执行一次,在进行 while();条件判断是否下一次循环;
			//循环体
		}while(条件);

for( boolean ){ };
		for(表达式1;表达式2;表达式3)  //表达式1: 初始部分  表达式2: 条件判断  表达式3: 迭代部分 下一次循环前执行的操作 (改变循环变量值);
		{							//表达式之间 ; 分隔!且 表达式可省略...情况而定
			//循环体				  	//循环顺序: 表达式1→表达式2(成立) →进入循环体→表达式3;	
		};		

foreach(); jdk5.0新增
		在遍历数组和集合元素时,无需获得数组和集合的长度,无需根据索引来访问数组元素和集合元素
		foreach循环自动遍历数组和集合的每一个元素
		
		for(循环类型 方法体中使用变量:集合/数组对象){  		//C# forecah和java 类似 : 换成 in
													    //循环体中不可以改变集合/数组中的数据,不能修改!相当于把一个个元素循环赋值给 一个对象,用于显示;					
			//循环体;
		}	

break作用:
	//终止某个 循环 循环中 break后的语句不在执行;
continue作用:
	//结束 此次循环 开始下一次循环;
return作用:	
	//跳出方法,同时也结束循环! return确实可以结束循环,但它是结束整个方法,实际开发不建议使用!	
	//写循环时候要注意循环条件,别把条件丢了出现死循环...影响程序效率!

for 和 while 循环可以相互转换…有何不同~

  • for 条件必须在内部声明 while可以声明在外部…使用!(初始化条件的作用范围不同~)

死循环:

  • while(true){ }
  • for( ; ; ){ }
  • 可以通过 break; 结束死循环!

二重循环:

//循环中放循环 简单明了 通俗易懂;
//唯一注意的是 break/continue 都是对自己的循环起作用!

数组:

数组:

  • 也是一种数据类型,属于引用类型,但数组的元素既可以是引用也可以是基本数据类型
  • 在Java中数组就是一个变量, 用于将相同的数据类型存储在内存中;
  • 是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。

数组基本要素:
1.标识符: 和变量一样,数组也有一个名称,就是标识符,用于区分不同数组;
2.数组元素: 数组中存放的数据,这些数据就是 数组元素;
3.数组下标: 数组中每个元素通过下标来访问,可以理解为元素编号, ——下标从0 开始;
4.元素类型: 数组是用于存放相同的数据类型的变量; eg int[] String[]…;
5.数组的大小: 定义数组时候,同时也定义了数组的大小,即:数组的长度: 数组.length 获取;
注意:

  • 数组已满,继续往里面取/放元素的话,程序出异常 ——数组越界!!

如何使用数组:

声明数组:
数据类型[] 数组名;   //数组名和变量名一样;
数据类型 数组名[];
分配空间:
  • 只是声明数组,并不会为数组元素分配空间,此时还不能使用!! 还需: new;
数组名 = new 数据类型[ 数组长度(int) ];	
	一旦 声明了数组长度 就不能修改了,  数组的长度是固定的!!
	语法(动态初始化数组,指定长度后通过下标赋值,赋值时注意数组越界):
	
	数据类型 [] 数组名 = new 数据类型[长度];

扩展:	
	直接创建并赋值的方法(静态初始化数组,不用指定长度声明时赋值,根据值多少,就指定了长度): 
	数据类型 数组名 [] = {值1,值2,值3,值4};
	/或
	数组名 [] = new 数据类型[] {值1,值2,值3,值4}; 	//new 数据类型[]; [] 必须 为空!! 
	一般在数组元素少的时候使用,必须一并完成 (声明和分配)不然是不合法的 编译不通过
赋值:
分配空间后就可以 往数组中放 数据了。  数组中每个元素都是通过下标访问的;
下标 从 0 开始 表示 第 1 个 元素;
数组名[0] = 响应数据类型的值;  //往数组第一给位置放元素,下标0;
数组名[1] = 响应数据类型的值;  //往数组第二给位置放元素,下标1;
........
对数据进行处理:
循环遍历...  
	使用: 数组名.length; 属性获取数组长度循环;		for循环遍历!
注意:
	如果数组元素是基本数据类型,定义之后还未赋值;	
	会根据不同数据类型使用其默认值;
	int			0;
	double		0.0;
	char		'\u0000'0(ASCLL码) 而不是 '0';
	boolean		false;
	String		null表示空值没有赋值的意思,并不是 "null";  String属于对象类型默认值是 null 空没有赋值的意思!
	Object		null Object是对象类型!
数组排序:

导包: java.util.Arrays

Arrays.sort(数组名);  //( )括号放指定数组进行排序; 低—高(升序);
Arrays: java.util中一个工具类 Arrays;(APL查看~)

二维数组/多维数组:

  • 数组是一个 多种相同数据类下的一种 数据类型; so 数组也是一种数据类型。数组里面 存数组~就是二维数组了; 至于多维数组就类推~

注意:

  • 多维数组 是数组的数组,所以数组的类型都是一样的
  • (不可能出现 二维int[]数组中 出现一维String[],这样就违反了数组的原则故一定报错!);
  • 该二维数组中只能出现 一维的int[] 才符合要求~

举例二维数组声明为例子:

静态(不用指定长度,声明时赋值):
	方法一	数据类型 [][]数组名 = new 数据类型[][]{ {1,2,3},{1,2} };	
		// 定义了一个 二维数组, 是几维数组定义时候就是 几个[](当然[] 位置不会影响的); 且数组的类型都是一样的,综上~;
		// 因为是静态 new 数据类型 [][]{{……}};  中括号中就不用指定数组长度了, 字数组长度了~

	方法二	数据类型 []数组名[] = {{1,2,3},{1,2}};		
		// 因为不用指定长度所以可以这样写~甚至:  数据类型 []数组名[] = {new 数据类型[]{},new 数据类型[]{}};  写都是没问题的;		
			
	动态(需要指定长度,内容由自己添加):
		方法一	数据类型 [][]数组名 = new 数据类型[m][n];
				// 和静态 声明前面都一样,只是后面指定了 数组的长度, 其值是后面自定义的; 所以有了 [m][n].
				// m,n 表示的是 从左往右 层级也由高到低, m 就是最外层数组的长度(因此是必填项) 
				// n 是内层数组的长度可填可不填,填了就是确定且限制了数组的长度;(影响不大,但可能会出现空指针~(没有指定长度 却通过下标获取 元素了~) 故: 空指针)
				
二/多维数组使用:
	//其实和 普通数组类似。 比如获取第一个元素: 
	数组名[0][0];  
	//数组名[0] 获取到第一数组元素,而这个元素还是一个数组,在取到它的 第一个下标所以就是: 数组名[0][0]; 取到第一个元素了~  

小知识:

JAVA流程图

开始形状/结束形状,“跑道圆”形状代表开始或者结束
在这里插入图片描述
处理过程,“矩形”
在这里插入图片描述
判断,“菱形”
在这里插入图片描述
文件
文件一般是用在输出文件或者写入、修改文件
在这里插入图片描述
平行四边形,数据的输入或者输出
在这里插入图片描述
双边矩形,预设处理
可以理解为子流程,像一个黑盒。双边矩形中包着一个流程图,只是没有详细显示而已。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java.慈祥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值