您的位置:首页 > 编程语言 > Java开发

Java基础03:循环结构;函数;重载;数组

2013-08-26 14:58 471 查看
关键字:循环结构;break;continue ;函数;重载;数组

一、循环结构

代表语句:while 、do while 、for。当对某些语句执行很多次时,使用循环结构。

while(条件表达式){执行语句(循环体);} 条件判断满足后,执行循环体,然后再判断一次,满足后再执行,直到条件不满足。先判断条件,只有条件满足才执行循环体。

do{执行语句;}while(条件表达式); 无论条件是否满足,循环体都至少执行一次。先执行再判断。

注意:一定要明确哪些语句需要参与循环,哪些不需要参与循环。

语句的结束,要么是“;”要么是“}”。例如,while(x<3);没有执行语句会死机,不断的判断条件。

条件满足执行的都是循环体。

for (初始化表达式;循环条件表达式;循环后的操作表达式) {
执行语句;
}


for语句中的执行顺序:初始化表达式—>循环条件表达式—>执行语句—>循环后的操作表达式—>循环条件表达式,再一次执行,直到不满足循环条件表达式,循环自动停止。

特点:初始化条件只执行一次;只要条件不满足,循环结束。

变量的作用范围(作用域),对于for来说,如果将控制循环的增加定义在for语句中,那么该变量只在for语句中有效,for语句执行完毕,该变量在内存中释放。例如,for(int x = 0;x < 3;x++),x只在括号内有效,执行完后消失。x也可以在外面声明,但是申明后就不能随着for循环的消失而小时。

for和while的比较:

1.for的初始化动作在内部,while初始化动作在外部。所以,如果变量只是为了循环存在,也就是需要定义增量,使用for比较合适,内存比较优化。变量在内存中的驻留时间不一样。while中的变量在下面的代码中仍然可以使用。

2.两种语句其实可以互换使用。

int x = 1;
for(System.out.println("a"); x<3; System.out.println("c"), x++, z++)
{
System.out.println("d");
}


循环条件表达式必的结果必须是true或false,否则编译失败。初始化表达式和循环后的操作表达式只要是合法的执行语句即可,不一定就是运算符,也可以多个表达式,用逗号隔开。

int y = 0;

for( ; y < 3; ){y++;}也可以。

无限循环的表现形式:for( ; ; ){},不写条件表达式,默认为true。

while(true){}

注意:

遍历,将所有值扫描一遍。

累加思想:通过变量记录住每次变化的结果,通过循环的形式,进行累加的动作,就是记录循环后的结果。例如,变大、变小、记住增加的量、字符串的不断延长。

计数器思想:通过一个变量记住数据的状态变化,也需要通过循环完成。

嵌套,就是语句中还有语句。内部循环体执行完毕后,进入外部循环体。对于打印的矩形,外循环控制行数,内循环控制每行中元素的个数。将外循环中的变量放入内循环,使得每行中元素是个数发生变化。使用”\t”,自动对齐。

//第一for来控制行数
for (; ; ) {
//第二for来控制列数
for (; ; ) {

}
}


二、其他流程控制语句

1.break语句:应用范围:选择结构和循环结构

2.continue语句:应用于循环结构。

注意:

a.这两个语句离开应用范围,存在是没有意义的。

b.这个两个语句单独存在下面都不可以有语句,因为执行不到。

c.continue 语句是结束本次循环接续下次循环。

d.标号的出现,可以让这两个语句作用于指定的范围。

三、函数的定义

函数就是定义在类中的具有特定功能的一段独立小程序。也称为“方法”。为了提高代码的复用性,对代码进行抽取,将抽取的部分定义成一个独立的功能,方便日后使用,不调用的话就不运行。java中对功能的定义是通过函数的形式体现的。

函数格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;
}
/*
返回值类型:函数运行后的结构的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储diaoy9ong函数是传递给函数的实际参数。
实际参数:传世给形式参数的具体数值。
return:用于结束函数
返回值:该值会返回给调用者。
*/


定义函数可以将功能代码进行封装。独立存在,有自己的封装区间。

便于对该功能进行复用,提高了代码的复用性。

函数只有被调用才会执行。

对于函数没有具体返回值的情况,返回值类型用关键字void表示,return可以省略不写。

两个注意

1.函数中可以调用函数,但不能定义函数。函数之间是平级的。

2.定义函数时,函数的结果应该返回给调用者处理,不要在该函数中处理。

如何定义函数?需要两个明确:

函数是一个功能,需要明确该功能的运算结果,即返回值类型。

明确在定义该功能的过程中,是否需要未知内容参与运算。能独立实现,或是需要依靠调用者的数据来实现功能。明确参数列表,即参数类型和形式参数的个数。

编写程序就是在实现功能,java中最小的功能单元是函数。将各种功能全部定义到函数中,不要堆砌在主函数中,提高阅读性。主函数的功能就是调用函数。

函数的重载(overload)

修饰符  返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,){
执行语句;
return 返回值;
}


在同一类中,允许存在一个以上同名的函数,只要他们的参数个数和参数类型不同即可。函数名,便于体现函数是功能。

使用:当定义的功能相同,但参与运算的未知内容不同,可以定义一个函数名称以表示功能,方便阅读,而通过参数列表的不同来区分多个同名函数。

特点:与返回值类型无关,即使是void和int也可以重载。因为先要确定使用哪个函数,只能通过参数列表确定,确定好函数后再运算结果,所以和返回值无关,只看参数列表。参数的顺序不同,参数列表也会不同。

好处:便于阅读,优化程序的设计。函数间也可以传递,名称相同,调用另一个函数。

四、函数的定义

数组:同一种类型数据I的集合,其实就是一个容器。

数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式:

//元素类型[] 数组名 = new 元素类型[元素个数货数组长度]
int[] arr = new int[5];
//元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,.....}
int[] arr = new int[]{1,2,3,4};
int[] arr = {1,2,3,4};


五、内存结构

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。

堆内存:

a.数组和对象,通过new建立的实例都放在的堆内存中。

b.每一个实体都有内存地址值。

c.实体中的变量都有默认初始化值。

d.实体不在被使用,会在不确定的时间内被垃圾回收器回收。

注意:除了存在堆内存和栈内存,还有方法区,本地方法区,寄存器

思考:为什么数组和基本数据类型的方式不一样呢?

因为数组传输的是引用值,是一个引用传递给另一个引用。对数组中的元素操作,是在同一个引用的情况下使用的。

而基本数据类型,它传递的是值,对于另一个基本数据值修改,和原来元素没有关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: