(一)数组
1.数组介绍
数组是一种容器,可以用来存储同一数据类型的多个值
->数组容器再存储数据的时候,需要结合隐式转换考虑
2.数组的定义和静态初始化
格式1:数据类型[] 数组名
示例1:int[] array
格式2 : 数据类型 数组名[]
示例2: int array[]
数组的初始化
初始化:就是在内存中,为数组容器开辟空间,并将数据存入数组容器的过程
1.静态初始化
完整格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,.....};
简化格式:
数据类型[] 数组名 = {元素1,元素2,.....};
3.数组元素访问
索引: 也叫做下标,角标
索引特点:从0开始,逐个+1增长,连续不间断
4.数组遍历
数组遍历:把数组中所有的内容全部取出来
public class Text8 {
public static void main(String[] args) {
int[] array={1,2,3,4,5};
//获取数据所有元素
//在JAVA中关于数组的长度属性length
//调用方式:数组名.length
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
//自动生成数组遍历方式 数组名.fori
}
}
5.数组的动态初始化
动态初始化:初始化是只指定数组的长度,由系统为数组分配初始值
格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组默认初始化规则:整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值‘/u0000’ 空格
布尔类型:默认初始化值false
引用数据类型:默认初始化值 null
动态初始化和静态初始化的区别:
6.数组的内存图
栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆:储存对象或者数组,new来创建,都储存在堆内存
方法区:储存可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,与开发无关
寄存器:给CPU使用,与开发无关
总结:1.只要是new出来的就一定在堆里面开辟了一个小空间
2.如果new了很多次,那么在堆里面就有多个小空间,每个小空间中都有各自的数据
两个数组指向同一个空间的内存图
总结:当两个数组指向同一数组小空间时,其中一个数组对小空间的值发生了改变,那么其他数组再次访问时都是修改后的值了。
(二)方法
1.什么是方法?
方法(method)是程序中最小的执行单元
2.什么时候用到方法
重复的代码,具有独立功能的代码可以抽取到方法中
3.方法有什么好处
可以提高代码的重复性 可以提高代码的维护性
方法的格式
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
注意:方法需要先定义后使用
方法调用时,参数的数量与类型必须与方法定义中小括号里面的变量一一对应,否则将报错
//不带返回值
public static void main(String[] args){
getSum(10,20);//30
}
public static void getSum(int num1,innt num2){
int result = num1+num2;
System.out.println(result);
}
//带返回值
public static void main(String[] args){
int i = getSum(10,20);//30
System.out.println(i);
}
public static int getSum(int num1,innt num2){
int result = num1+num2;
return result;
}
形参和实参
形参:全称形式参数,是指方法定义中的参数
实参:全称实际参数,方法调用中的参数
方法的注意事项
1.方法不调用就不执行
2.方法与方法直接是平级关系,不能相互嵌套定义
3.方法的编写顺序和它的执行顺序没有关系
4.方法的返回类型为void表示该方法没有返回值,没有返回值可以省略return语句不写,如果要编写return后面不能跟具体数据
5.return语句的下面不能编写其他代码,属于无效代码
方法的重载
在用一个类当中,定义了多个同名的方法,这些同名的方法具有同种的功能
每一个方法都具有不同的参数类型或者参数个数,这些同名的方法就构成了重载关系
public class Text9 {
public static void main(String[] args) {
int sum1 = getSum(10,20);//30
System.out.println(sum1);
int sum2 = getSum(10,20,30);//60
System.out.println(sum2);
}
public static int getSum(int num1,int num2){
int result = num1+num2;
return result;
}
public static int getSum(int num1,int num2,int num3){
int result = num1 +num2+num3;
return result;
}
}
方法的内存
1.方法调用的基本内存原理 (先进后出)
2.方法传递基本数据类型(四类八种)的内存原理
从内存角度解释基本数据类型:数据值是存储在自己空间中,赋值给其他变量也是赋的真实的值
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值。
//基本数据类型演示
public class Text10 {
public static void main(String[] args) {
int number=100;
System.out.println(number);//100
change(number);
System.out.println(number);//100
}
public static void change(int number){
number=200;
}
}
3.方法传递引用数据类型(除了四类八种以外所有)的内存原理
从内存角度解释引用数据类型:数据值是存储在其他空间中,自己空间中储存的是地址值
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值。
//引用数据类型演示
public class Text11 {
public static void main(String[] args) {
int[] arr={10,20,30};
System.out.println(arr[1]);//20
change(arr);
System.out.println(arr[1]);//200
}
public static void change(int[] arr){
arr[1]=200;
}
}