一、函数

1.

函数就是定义在类中的具有特定功能的一段独立小程序。             

         2. 特点:

                   定义函数可以将功能代码进行封装

                   便于对该功能进行复用

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

                   函数的出现提高了代码的复用性

                   对于函数没有具体返回值的情况,返回值类型用关键字void表示,

                   那么该函数中的return语句如果在最后一行可以省略不写。

 

3.函数的重载

概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。        

         特点:与返回值类型无关,只看参数列表(参数类型以及参数个数)。

好处:方便于阅读,优化了程序设计。概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。                 

二、Java中的语句结构

Java中的语句均由分号(;)结束,或由一个大括号包裹形成一条语句。

只有分号的语句叫做空语句。

Java中语句结构分为三种:

顺序语句

分支语句

循环语句

1、顺序语句

顾名思义,就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。

2、分支语句

分支语句是满足某种特定条件后执行特定的语句序列的语句结构。要根据设定的条件和实际执

行的结果决定程序的执行流程。

共有三种:if语句,if…else…和switch语句。

a. if语句:

通过if...elseif...else决定程序流程。

如果if中的条件(条件表达式,只需结果满足值为boolean型的数据即可)满足则执行其中语句,

if未满足则继续判断else if,如果满足则执行,不满足继续判断下一个else if,如果所有都不满足,

则执行else。

如果语句序列只有一句话,大括号可省略。

b. switch语句:

通过switch...case...default语句控制程序流程。

根据switch后括号中的值判断运行哪一个case,这个值可以是byte、short、char、int。

JDK6.0加入对枚举类型的兼容。

JDK7.0加入了对字符串类型的兼容。

default语句是可选的,并且与case之间没有先后顺序,总是先匹配第一个case,如果所有case都不

满足,则会执行default。

一旦匹配到一个case,程序就会从这个case向下执行,执行完一个case之后不会跳过其他的case,

如需跳过请使用break。

3、循环语句

通过循环语句让同一段代码反复执行多次,执行完毕程序才会继续往后运行

a. While 通常用于不知道具体循环次数的情况

先判断while中的表达式结果是否为true,true则执行循环体,执行结束之后再次判断,

如果表达式结果为false则跳出循环。

b.

先执行一次循环体,然后判断while中的表达式,如果是true继续执行,如果是false

则跳出循环。

c.

for循环的括号中有三条语句,都是可选项。

语句1:这条语句会在整个循环开始之前执行,且仅运行一次,不参与循环。

语句2:必须是一个返回boolean值的表达式,如果写了这个语句那么每次循环开始

之前会判断,true则执行循环,false则不执行。没写则直接执行。

语句3:这条语句在每次循环体运行结束之后执行。

 

d. continue、break、return

continue:跳过本次循环,继续执行下一次

※ 带标号的continue

为循环起名,可以用带标号的continue控制对应循环,前提是continue必须在相应的

循环内。

break:

跳出循环体。在循环中如果执行到break语句,立即停止循环,然后执行循环体结束

大括号后面的语句。

※ 带标号的break

为循环起名,可以用带标号的break控制对应循环,前提是break必须在相应的循环内。

return:结束方法

e.无限循环

 for( ; ; ){}

 while(true){}

无限循环存在的原因是不知道要循环的次数 。

三、数组

1.概念

数组是一个类型一致,长度不可变的容器。可以通过索引(从0开始)操作容器中的每一个元素。

2.一维数组

格式1:元素类型 [ ]数组名 = new 元素类型 [元素个数或数组长度] ;

如: int [] arr = new int [3]; 也可以写成: int arr[] = new int[3];

格式2:元素类型 []数组名 = new 元素类型 [ ]{元素1,元素2,…};

如: int [] arr = new int []{1,2,3,4,5};

还有一种简写的静态初始化格式:如: int [] arr={1,2,3,4,5};

其中:new是用来在堆内存中产生一个数组空间。

3.数组的常见操作

①数组元素的读取和修改

修改: 数组名[索引] = 值;

int[] arr = new int[4];

arr[1]= 100; //将数组arr中角标为1的元素的值改为100

读取:数组名[索引]

System.out.println(arr[1]);

②数组元素的默认值

数组元素在初始化时,已经根据数组的数据类型为每个元素分配了初始值,

各种数据类型在数组中的初始化值如下:

整型数据:0

实型数据:0.0

布尔型数据:false

字符型数据:/u0000对应的空字符

其它类型数据:null

③数组元素的遍历

即对数组中元素逐一访问。基于数组元素的索引特性可以使用循环的形式对

数组中元素进行逐一访问。

获取数组长度:数组名.length

④数组排序

数组的排序就是将数组中的元素按照一定的顺序排列,排序方法有很多并且

JDK中有相应的排序方法,后期只要直接调用就可以对数组进行排序,这里

仅看下选择排序和冒泡排序。

a、选择排序

思路分析:

a)将原始数组空间分为两部分,第一部分用于存放已经排序完成的数据,

第二部分用于存放未完成排序的数据。

b)排序过程中,每次从未完成排序的区域中找出最值并将其放置到未完

成排序区域的首位,然后改变两个区域的空间大小,反复上述过程,

直到未排序区只有一个数据。

    b、冒泡排序

思路分析:

使用第一个元素与第二个元素进行比较,并将其较大/较小的放在后面,然后使

用第二个与第三个元素进行比较,重复操作,每轮循环结束时,数组中的最值

将置于数组末端;第二轮,改变变量数组范围,从第一个元素到倒数第二个元

素,对其进行上述操作;如此反复,最终实现数组的排序

4.数组操作中常见的异常

1、数组脚标越界异常(ArrayIndexOutOfBoundsException)。例:

int[]arr = new int[2];

System.out.println(arr[3]);

访问到了数组中的不存在的脚标时发生。

2、空指针异常(NullPointerException)。例:

int[]arr= null;

System.out.println(arr[0]);

arr引用没有指向实体,却在操作实体中的元素时。

5.多维数组

概念:数组中的每一个元素都是数组,这样的数组就是多维数组。这里仅介绍二维数组。

1、二维数组的定义格式

二维数组是一种特殊的一维数组,二维数组中存储的不是数据,而是一维数组

声明格式:

数据类型[][]数组名;

创建格式:

格式一:

数据类型[][]数组名= new 数据类型[行长度][列长度];

格式二:

数据类型[][]数组名;

数组名= new 数据类型[行长度][列长度];

格式三:

数据类型[][]数组名= { {1,2,3},{4,5,6} };

格式四:

数据类型[][]数组名= new 数据类型[][]{{1,2,3},{4,5,6} };

格式五:

数据类型[][]数组名= new 数据类型[长度][];

注:int[][] arr = new int[][];//这种格式因缺少维度,不知道要给这个数组分配多大的空间,所以编译时报错。

所以在定义多维数组时,一定要定义第一维的长度。