第4章 流程控制
语句和复合语句
- 分号、嵌套、注释
- Java语言中语句可以是以分号“;”结尾的简单语句,也可以是用一对花括号“{}”括起来的复合语句。
- Java语言不允许在两个嵌套的复合语句内声明两个同名的变量。
- Java中的注释为程序提供文档说明。形式:
- 单行: //
- 多行:/* */
- 文件注释(Java特有的):/** */
- 文件注释产生一个HTML文档,从而为程序提供文档说明。
顺序结构、分支结构(if双路条件结构、if单路条件结构、if多重条件选择结构(if-else嵌套))、switch多路选择
循环结构:
while
、do-while
、for
、多重循环(循环嵌套)
循环中的跳转语句:
break
、continue
、return
- break语句:使程序的流程从一个语句块(switch或循环结构)内跳出。
- continue语句:终止当前这一轮(次)的循环,进入下一轮(次)循环。
- return语句:
- 用来使程序从方法(函数)中返回,并返回一个值。
- return 返回值;
数组与字符串
数组的基本概念
数组的概念:相同数据类型的元素按一定顺序排列的集合。Java中,数组元素可以为简单数据类型,也可以为对象。
Java语言内存分配问题:
- 栈内存:定义的基本类型的变量和对象的引用变量,超出作用域将自动释放。
- 堆内存:存放由new运算符创建的对象和数组。由Java虚拟机的自动垃圾回收器来管理。
- 引用变量:为数组或对象起的一个名称。在堆中创建一个数组或对象后,还可在栈中定义一个引用变量存放该数组或对象在堆内存中的首地址(对象的句柄),以后就可在程序中使用栈的引用变量来访问堆中的数组或对象。
- 数组和对象在没有引用变量指向它时,就会变成垃圾,不被使用,但占内存,在随后不确定的时间释放。
数组的主要特点
- 数组是相同数据类型的元素的集合;
- 数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起;
- 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,依次类推。
一维数组:用户也可以改变x的值,让它指向另外一个数组对象,或者不指向任何数组对象(如x=null; )。
- 三步骤使用数组:声明数组–创建空间–创建数组元素并赋值
int[ ] x;//声明名称为x的int型数组,未分配内存给数组 x = new int[10];//x中包含有10个元素,并分配空间 // 或 int[] x = new int[10]; //声明数组并动态分配内存
- 一维数组的初始化及应用
- 若在声明数组时进行赋值即初始化称为静态内存分配。
数据类型[ ] 数组名={初值0,初值1,…,初值n};
int[] a ={1,2,3,4,5}
- 定义时与C/C++区别
- Java定义数组也可为”数据类型 数组名[](如:int x[])” ,
- 但Java中并不为数组元素分配内存,因此[]中不给数组长度。
- 动态内存分配说明
- 用new分配内存的同时,数组的每个元素都会自动赋默认值,整型为0,实数为0.0,布尔型为false,引用型null。
- 一维数组元素的访问
- 要想使用数组里的元素,可利用数组名和下标来实现。
- 数组元素的引用方式为: 数组名[下标]
- 与C/C++不同的是,Java对数组元素要进行越界检查。
- 对于每个数组都有一个属性length指明它的长度,如x.length指出数组x所包含的元素个数。
- 注意:在Java程序中声明数组时,无论用何种方式定义数组,都不能指定其长度。
- 三步骤使用数组:声明数组–创建空间–创建数组元素并赋值
foreach语句
- foreach的语句:不用下标就可遍历整个数组。
- foreach语句需提供元素类型、循环变量的名字(用于存储连续的元素)和用于从中检索元素的数组。
int[] arr = {1,2,3,4,5}; for(int i : arr){ System.out.println(i); } //语法 for (type element : array){ System.out.println(element); …… } //每次从数组array中取出一个元素,自动赋给element,用户不用判断是否超出了数组的长度。 //element的类型必须与数组array中元素的类型相同。
- Java语言提供的java.util.Arrays类用于支持对数组的操作,主要方法如表5.1所示。
多维数组
- Java中的二维数组看作是由多个一维数组构成。
数据类型[ ] [ ] 数组名= new 数据类型 [行数][列数]
int[][] x;
表示定义了一个数组引用变量x,第一个元素为x[0]
,最后一个为x[n-1]
,其长度不确定。x = new int [3][];
- 表示数组x有三个元素,
- 每个元素都是int[]类型的一维数组,分别为 x[0] x[1] x[2]
- 给
x[0]
、x[1]
、x[2]
赋值(它们的长度可以不一样),当它们指向真正的数组对象,才可以引用数组中的元素。 - x[0]=new int[3]; x[1]=new int[2]; 也就是说 x[0] 有 x[0][0]
x[0][1] x[0][2]
x[1] 有 x[1][0] x[1][1]
x[2] 是 null
- 二维数组为规则m×n矩阵:
- 创建高维数组对象的同时,创建所有的低维数组对象。
- int[][] x = new int[2][3]; int[][] x 有两个一维数组x[0] x[1]
x[0][]有三个变量x[0][0] x[0][1] x[0][2]
x[1][]有三个变量x[1][0] x[1][1] x[1][2]
- 求二维数组的维数
- 计算某数组的行数:
数组名.length
- 计算某数组中某行元素的个数:
数组名[下标].length
x.length; //计算数组x的行数 x[0].length; //计算数组x的第1行元素的个数 x[2].length; //计算数组x的第3行元素的个数
- 计算某数组的行数:
- 二维数组申请内存方式(必须指定高层维数):
int[][] MyArray = new int [10][]; //√ int[][] MyArray = new int [10][3]; //√ int[][] MyArray = new int [][3]; //× int[][] MyArray = new int [][]; //×
- 二维数组赋初值
- 格式:
//数据类型[][] 数组名 = {{第1行初值}, …{第n+1行初值}}; int[][] a = {{11,22,33,44}, {66,77,88,99}}; //注意:声明多维数组并初始化时不能指定其长度,否则出错。
- 多维数组
- Java中的二维数组看作是由多个一维数组构成。
字符串
- 字符串
- 用一对双引号“ ”括起来的字符序列。Java语言中,字符串常量或变量均用类实现。
- 字符串变量的创建
- 格式一:
创建String s = new String("");` `String 变量名;变量名 = new String("字符串");` String s; //声明字符串型引用变量s,此时s的值为null s=new String("Hello"); //在堆内存中分配空间,并将s指向该字符串首地址
- 格式二:
String 变量名 = new String("字符串");
- 格式三:
String 变量名 = "字符串";
- 字符串存储: 字符串是引用型变量,所以存储方式与数组基本相同。
- 格式一:
- 串连接:
- 例1:
str="Hello"+"Java"; //str的值为"HelloJava"
- 例2:
int i=10; String s="i="+i; //s的值为"i=10"
- 例3:
String str1 = "Java";
str1 = str1 + "Good";
- 注意:虽然str1指向的内存地址是同一个,但对象已经不是同一个了,对象是存放”JavaGood”的堆中的一个空间。
- 例1:
- String 类的常用方法
- 调用Java语言定义的方法:
字符串变量名.方法名();
- 查阅参考文档,熟悉以下常用类的方法:
java.util.Arrays
java.util.Scanner
java.lang.String
- 调用Java语言定义的方法:
- 字符串
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。