一、程序流程控制
1、 判断
三种格式:
If (条件语句) { 执行语句 } | If (条件语句) { 执行语句 } else { 执行语句 }
| If (条件语句) { 执行语句 } else If (条件语句) { 执行语句 } else { 执行语句 } |
上述条件判断语句中的执行体,要么是一个花括号括起来的语句块,则这个语句块整体作为条件执行体;要么是以分号作为结束的一行语句,甚至可以是一个空语句。
三目运算符:
(条件语句)? (表达式1):(表达式2)
注意:三目运算符与if else 的区别:if 后面的代码块可以有多条语句,但是三目运算符不支持多条语句!三目运算符的返回结果只能是值,不能是操作语句!
2、选择
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
注意:
a,switch语句选择的类型只有四种:byte,short,int , char。不能为字符串(注意与C#的区别)
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
3、循环
while循环 | Do while循环 | for循环 |
while(条件表达式) { 执行语句; } | do { 执行语句; }while(条件表达式); | for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句; } |
注意:do while特点是条件无论是否满足,循环体至少被执行一次。
for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
注意:
a、for循环和while、do while循环的区别:由于while、do while循环的循环迭代语句紧跟着循环体,因此如果循环体不能完全执行,如果使用continue来结束本次循环,则循环迭代语句不会被执行,但for循环的循环迭代语句并没有和循环体放在一起,因此不管是否使用continue来结束本次循环,循环迭代语句一样会被执行。
b、break语句不仅可以结束其所在的循环,还可以直接结束外层循环,此时需要在break后面紧跟一个标签(这个标签必须是已经在外层循环之前定义过的),这个标签用来标识一个外层循环,标签就是一个紧跟着英文冒号的标识符。
c、与break一样,continue也可以紧跟一个标签,用于直接结束标签所标识循环的当次循环,开始下一次循环。
d、break和continue单独存在的时候,下面都不可以有语句,因为执行不到。
e、return也可以用来结算一个循环,但与break和continue 不同的是,return直接结束整个方法,不管return处于多少层循环之内
二、函数(即方法)
1、定义函数
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……)
{
执行语句;
return 返回值;
}
2、定义函数的前提
A、明确该功能运算后的结果;(即明确返回值类型);
B、明确在实现该功能的过程中是否有未知内容参与运算;(即明确参数列表)
3、函数的重载
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
存在的原因:方便于阅读,优化了程序设计。
当实现的功能一致,但参数不同时使用。注意:与返回类型无关!!
4、形参长度可变的函数
如果在定义方法的时,在最后一个形参的后面增加三点(...),则表示该形参可以接受多个参数值,多个参数值被当成数组传入。
注意:一个方法中最多只能包含一个长度可变的形参。
三、数组
1、定义数组
所谓数组就是同一种类型数据的集合。
定义数组的方法:
元素类型[ ] 数组名 = new 元素类型[元素个数或数组长度];
元素类型[ ] 数组名 = {元素,元素,……};
数组是固定长度同一类型的容器;
注意:数组和对象都在堆内存当中;
2、内存的特点
栈内存的特点:
存储局部变量,空间不用时自动释放内存。
堆内存的特点:
a、存储数组和对象,通过new关键字建立的实体都存放在堆内存当中。
b、实体都有一个内存地址值。
c、对内存中的变量都有默认初始化值。
d、垃圾回收机制,Java特有的内存管理机制,在不定时的时间内将垃圾清除释放空间。
3、数组元素的默认初始值
系统按如下规则分配数组元素的初始值:
a、整数类型(byte、short、int、long)数组元素的初始值位0;
b、浮点类型(float、double)数组元素的初始值为0.0;
c、字符类型(char)数组元素的初始值为'/u0000';
d、布尔类型(boolean)数组元素的初始值位false;
e、应用类型(数组、类、接口)数组元素的初始值为Null;
4、其他
a、所有数组都提供一个length属性;
b、数组脚标越界异常、空指针异常:编译的时候不会报错,因为编译的时候只检查基本的语法错误;并不会在内存中生成实体;
注意:Java语言中,数组使用前必须先初始化。