2018-03-08
本章我们将学到的知识点:
1、流程控制 2、数组
一、控制结构:Java 支持下列控制结构:选择、循环、跳转
选择:if-else Switch
循环:while do-while for
跳转:break Continue
if-else 结构的语法为:
if (条件) {语句1;} else{ 语句2;} //if和else块中只有一条语句
if (条件) { 语句组1; } else { 语句组2; } //if和else块中有多条语句
if (条件1){ 语句1; }else if (条件2){ 语句2; } … else if (条件m){ 语句 m; }else{ 语句n; }
switch 结构的语法为:
switch(表达式){//表达式必须为byte,short,int或char类型 case '常量值 1': //常量值必须是与表达式类型兼容的特定的一个常量 不允许有重复的case值
语句(组);
break;
case '常量值 2':
语句(组);
break;
case '常量值 N':
语句(组);
break;
default: //default子句为可选
语句(组);
}
循环语句使用规则:
while 适合于开始不清楚循环将要进行的次数,而且循环可能一次都不进行的情况
do-while 适合于不清楚循环次数,但是循环肯定要进行一次的情况
for 适合于预先知道循环将要进行的次数的情况
注意:一定程度上他们是可以互相替换的。
//while 循环,“当型”循环,先判断条件再执行 while(条件){ 语句组; } //do-while循环,“直到型”循环,先执行再判断条件,也就是说, //至少可以执行一次,在while(条件)后面的分号不要忘 do { 语句组; }while(条件); //for 循环,“初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作, //如果三个部分都为空语句(分号不能省),相当于一个无限循环 for(变量初始化; 循环条件表达式; 递增或递减变量的值){ 语句组; }
break和continue
break 语句在循环中用于立即从当前循环终止控制。 遇到 break 语句时,将跳出当前循环。
continue 语句则是从其调用处跳至循环的开始处。 continue 语句之后的语句将不再执行。
Return 返回语句的两种格式:
Return语句从当前方法退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续执行程序。
1、return expression 返回一个值给调用该方法的语句。 返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。
2、return 当方法声明中用void声明返回类型为空时,应使用这种返回类型,它不返回任何值。
二、数 组
数组是有相同类型的、用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。
数组是一种最简单的复合数据类型。
数组可以是一维的也可以是多维的。
一维数组定义:
type arrayName[ ] 或 type[ ] arrayName
说明: type : 可以是java中任意的数据类型,包括简单类型和复合类型(也可以是数组) arrayName :为一个合法的标识符; [ ]指明该变量是一个数组类型的变量。
声明数组变量,例如声明一个数组x:
int x[ ]; int[ ] x;
声明一个数组,每个元素都是整数数据。 声明的时候不指定数组的长度。 只声明的数组是不能访问它的任何元素的。
为数组分配空间,用new关键为对象分配其内存空间:
type arrayName = new type[arraySize] //例如: int x = new int[100];
通过引用来使用数组元素 :arrayName[index] index为数组下标,可是整型常数或表达式。 index取值从 0 到 arraySize-1;
数组在内存中的分配:
当 x = null 即该数组对象不再被任何引用变量使用的时候,“垃圾回收器”将自动释放该内存资源。
数组的静态初始化
int ia[ ]={1,2,3,4}; int ia[ ]=new int[ ]{3,4,5};
动态初始化
int intArray[];//声名数组 intArray = new int[5];//为数组分配空间
注意:声明数组时,无论用何种方式定义数组,都不能指定其长度。
使用时要注意的问题:
空指针异常(NullPointException) 只声明但没有初始化的时候直接使用该变量。
数组越界异常(ArrayIndexOutBoundsException) 所有数组的下标都从0开始。
int[] a ={1,2,3}; for (int i= 0; i< a.length; i++){ System.out.println(a[i]); } //其中length属性表示数组的长度
三、多维数组
java没有真正的多维数组,只有数组的数组
二维数组的定义:
type arrayName[ ][ ];或 type[ ][ ] arrayName; //例子: int xx[ ][ ] = new int[3][3]; int[ ][ ] xx = {{3,2,7},{1,5},{6}};
静态初始化
int intArray[ ][ ]={{3,2,7},{1,5},{6}};
Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
动态初始化
int[][] xx = new int[3][]; //指定一个3行n列的数组 xx[0] = new int[3]; //指定第一行为3列 xx[1] = new int[2]; //指定第二行为2列
注意:在Java语言中,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。