总结
我是最棒的!基础不牢,地动山摇!
方法
方法就是可以处理某一类事情功能,可以看成是独立完成某一功能的封装好的一段代码
可以反复多次调用
定义
class Test{
/**
public修饰符控制访问权限
static修饰为静态方法
void 为返回值类型
test 为方法名
(int a) 是方法的参数列表
*/
public static void test(int a){
//方法体
System.out.println(a);
}
public static void main(String[] args){
//有static修饰符,直接调用方法,如果没有则需要创建对象
//需要注意的是调用方法的代码块和被调用的方法static修饰符要同时有或者没有
test(1);
}
}
方法的签名
方法名+参数列表就是方法的签名
每个方法都有独一无二的方法签名
方法的返回值类型
可以是8种基本数据类型,也可以是引用类型,还可以是void
return注意事项
-
只要返回值类型不是void ,那么就必须返回一个数据,这个数据的类型必须跟返回值类型一致
-
如果返回值类型是void ,那么就不能返回任何值。但是可以使用return,只是不能返回值而已。
-
如果返回值类型是void ,不能直接打印输出,因为该方法没有任何返回值。
-
如果返回值类型是void ,不能声明变量接受,因为该方法没有任何返回值。
-
如果方法有返回值类型,且return语句在条件语句中,必须要满足条件语句不管执行那一个都得返回一个值,不然的话就会报错,因为如果不满足该方法就没有返回值了
-
一个类中只能有一个独一无二的方法签名
-
返回值类型必须与方法内部要返回的数据的类型一致。必须和调用时的要接受时的数据类型一致。
-
方法的返回值不能同时返回两个,只能返回一个
方法重载
方法名相同,参数列表不同
参数列表包括参数的类型,参数的顺序,参数的
数组
定义
//以int数组来举例
//静态声明数组,数组元素确定
int[] arr = {1,2,3};
//动态声明数组,数组元素不确定,其中5为数组的长度
int[] arr = new int[5];
赋值取值及遍历
int[] arr = new int[5];
//遍历取值并赋值
for(int i=0;i<arr.length;i++){
arr[i]=i;
}
注意事项
-
下标都是从0开始到length-1结束
-
数组一旦创建,它的元素个数就固定了.(扩容:创建新数组,将原数组的元素全部复制,放到新数组中去。缩容:创建新数组,将原数组删除元素后的元素复制,放到新数组中。)
-
创建数组的元素个数不能为负数,如 int[] arr = new int[-5];X 不行
-
如使用数组元素的时候,下标超出了0~arr.length-1的范围,就会报数组下标越界的错误
[外链图片转存失败(img-OF6wOgIs-1565189762617)(file:///C:\Users\tyx666\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png)]
- 如果使用数组的时候,该数组名没有了指向,或者作为成员变量时没有被赋值,那么会报空指针异常的错误
[外链图片转存失败(img-lYVHWohZ-1565189762618)(file:///C:\Users\tyx666\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png)]
二维数组
实质上就是数组中的元素还是数组
下面是一个实例
public class DoubleArray {
public static void main(String[] args) {
//二维数组
int[][] arr = new int[2][2];
//打印二维数组的地址
System.out.println(arr);
//打印两个一维数组的地址
System.out.println(arr[0]);
System.out.println(arr[1]);
//打印两个数组中的元素值
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[1][0]);
System.out.println(arr[1][1]);
}
}
堆栈图分析
局部变量在栈中,成员变量在堆中
基本数据类型存在栈中,引用数据类型在堆中