Java数组内存图&方法
1.数组常见使用
1.1数组的内存图
在JVM中,内存划分出不同的区域,比如堆内存、栈内存、元空间…
直接打印数组名字,出来的是一串地址值,因为数组也是引用数据类型
1.2数组常见操作 JDK提供好的
Arrays
: JDK为我们提供好的工具类,里面有很多工具方法,用法跟我们前面的Math
类似
2.方法入门
方法:对某个功能,我们期望将其定义成方法,目的是重复使用。执行某个方法的时候,方法需要传递
参数,这个参数我们称之为实际参数,简称实参;方法定义时的参数,我们称之为形式参数,简称形
参。
2.1语法
定义方法,抓住两个重点:
-
何时需要定义形参:看你的方法的执行是否需要未知量参与,若需要未知量,则定义为形参
-
何时需要返回值:看你的方法的执行结果是否需要给别人使用,若需要,则使用return 返
回。
public static void/数据类型 方法名(数据类型1 形参名称1,....,数据类型n 形参n) {
//方法体
return 数据类型;
}
①public static:暂且不管,写死
②返回值类型:void,我们的这个方法执行完之后不需要返回值;若有返回值,则使用return + 返回值类型 返回
若没有返回值,则不用使用return
③方法名:一般采用动宾结构,而且小驼峰命名规则
④形参列表:多个形式参数,我们称为形参列表
2.2方法求两数之和
/**
* 计算两个整数的和
* @param num1 数1
* @param num2 数2
*/
public static void sum(int num1,int num2) {
System.out.println(num1 + num2);
}
2.3求数组的最大值
/**
* 求数组的最大值
* @param arr 待求的数组
* @return 返回该数组中的最大值
*/
public static int getMax(int[] arr){
int max = arr[0];
for(int i = 1; i < arr.length; i++){
if(arr[i] >= max){
max = arr[i];
}
}
return max;
}
2.3向String数组中插入
/**
* 向数组中插入一个元素
* @param names 待操作的数组
* @param name 待插入的人
* @return 插入之后的数组
*/
public static String[] insertSomeOne(String[] names,String name) {
//找空位置
int index = -1;
for (int i = 0; i < names.length; i++) {
if(names[i] == null) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("兄弟,咱们班人满了,不给插班....");
} else {
names[index] = name;
}
return names;
}
2.4 从String数组中删除
/**
* 从数组中移除一个人
*
* @param names
* @param name 在数组中有可能找不到,查无此人,若有的,在数组中肯定会对应一个index
* @return
*/
public static String[] delSomeOne(String[] names,String name) {
int index = -1;
for (int i = 0; i < names.length; i++) {
if(name.equals(names[i])) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("咱班查无此人:" + name);
} else {
System.out.println("index:" + index);
/* for (int i = names.length-1; i >index ; i--) {
names[i-1] = names[i];
}*/
for (int i = index; i < names.length -1; i++) {
names[i] = names[i+1];
}
names[names.length - 1] = null;
}
return names;
}
2.5 方法重载
定义:在同一个类中,定义多个同名的方法,方法名一样,形参列表不同【顺序、类型、个数】,与返
回值类型和访问修饰符无关。
作用:提高方法调用的灵活性。
2.6 可变参数(JDK1.5新特性,和增强for循环一样)
就当成数组使用
//todo 可变参数: jdk1.5 新特性,就把它当成数组使用
//注意点: 可变参数一定要放在形参列表的最后
public static double sum(int num1,double ... nums){
double sum = 0;
sum += num1;
for (double num : nums){
sum += num;
}
return sum;
}