Java基础总结3(方法、方法重载、循环结构、数组)

方法:方法就是将一个功能抽取出来,单独定义在一个大括号里,形成一个单独的功能。
方法的定义:
修饰符 返回值类型 方法名(参数类型){
代码…
return ;
}
方法注意事项:
1、方法应该定义在类当中,但是不能在方法内部定义方法。
2、方法定义的前后顺序无所谓。
3、方法定义后不会执行,如果希望执行,一定要进行调用。
4、如果方法有返回值,那么必须写上return返回值,不能没有。
5、return后面返回的数据,必须和方法的返回值类型对应。
6、对于一个void没有返回值的方法,可以不用写return。
7、一个方法中可以有多个return语句,但是必须保证同时只能有一个可以执行到。

方法重载:
多个方法的名称一样,但是参数类型或者参数数量不一样
好处:只要记住唯一一个方法名称,就可以实现类似的多个功能

方法重载与下列因素相关:
1、参数个数不同
2、参数类型不同
3、参数的多类型顺序不同

方法重载与下列因素无关:
1、与参数名称无关
2、与返回值类型无关

循环结构:
单if语句、if-else if-else语句、while循环语句、for循环语句、do-while循环语句、switch语句
switch(表达式){
case 常量值1:
语句1;
break;
case 常量值2:
语句2;
break;
case 常量值3:
语句3;
break;

default:
语句n;
break;
}

switch语句使用注意事项:
1、多个case后面的数值不能重复
2、switch后面的小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
3、switch语句格式可以很灵活,前后顺序可以颠倒,注意break别省略
4、switch的执行流程,匹配到哪一个case就从哪一个位置向下执行,知道遇到了break或者整体结束为止

for循环:
for(初始化表达式;条件判断;步进表达式){
循环体
}
条件为true,继续循环;
条件为false,跳出循环;

while循环:
while(条件判断){
循环体
}
条件判断不再成立,跳出循环

do-while循环:
do{
循环体
}while(条件判断);
无条件执行一次循环,再开始进行条件判断

三种循环的区别:
1、如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,而do-while至少执行一次
2、for循环的变量在小括号当中定义,那么只能在循环内部使用
3、while循环和do-while循环语句初始化变量本来就在外面定义,所以出来循环之后还可以使用

循环控制语句:
break;跳出所有循环
continue:跳出当前次循环,马上开始下一次循环

死循环:永远停不下来的循环是死循环(缺少跳出循环的条件)

循环嵌套:大循环包含小循环
例如:
for(int i=0;i<100; i++){
for(int j=0; j<100;j++){
}
}
嵌套循环执行流程:外循环一次,内循环多次

数组:是一种容器,可以同时存放多个数据值
数组的特点:
1、数组是一种引用数据类型
2、数组中的多个数据,类型一定是统一的
3、数组的长度在程序运行期间不可改变

数组的初始化:在内存中创建一个数组,并向其中赋予一些默认值
两种常见的初始化方法:
1、动态初始化(指定长度)
2、静态初始化(指定内容)

动态初始化数组的格式:
数据类型[] 数据名称 = new 数据类型[数组长度]
例如:int[] array = new int[100];

静态初始化数组的格式:
数据类型[] 数据名称 = new 数据类型[]{元素1,元素2}
例如:String[] array = new String[]{“str1”,“str2”};

虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度
总结:初始化数组,要么指定数组长度,要么指定数组内容

静态初始化省略格式:
int[] array = {10,20,30};

可以分开写:
int arrayA;
arrayA=new int[]{10,20,30};
int arrayB;
arrayB=new int[10];

使用建议:
如果不确定数组中的具体内容,应该使用动态初始化数组;如果确定数组中的具体内容,使用静态初始化数组。

访问数组:直接打印数组,得到的是数组对应的内存地址的哈希值,因此不能直接访问

访问数组元素的格式:数组名称[索引值]
索引值:就是一个int数字,代表数组中元素的编号
注意:索引值从0开始,一直到数组长度-1为止

动态初始化的时候,其中的元素会自动获得一个默认值
如果是整数类型,默认是0;
如果是浮点数类型,默认是0.0;
如果是字符类型,默认是’\u0000’;
如果是布尔类型,默认是false;
如果是引用类型,默认是null;

数组常见问题
1、数组索引越界异常:ArrayIndexOutofBoundsException
数组索引编号从0开始,一直到数组长度-1为止
原因:如果访问数组元素的时候,索引编号并不存在,那么会发生数组索引越界异常
解决:修改成正确的索引号

2、空指针异常:NullPointerException
int[] array=null;
System.out.println(array[0]);
如果数组只是赋值了一个null,并没有进行new创建,访问索引值时,将会发生空指针异常

获取数组的长度:通过数组的length属性
例如:int[] array=new int[3]; System.out.println(array.length); //3

遍历数组:使用循环,次数是数组的长度
例如:for(int i=0;i<5;i++){
语句;
}

单个数组内存访问流程:
Java基础总结3(方法、方法重载、循环结构、数组)
同个数组内存访问流程:
Java基础总结3(方法、方法重载、循环结构、数组)