您的位置:首页 > 编程语言 > Java开发

Java中的方法定义与数组使用

2018-11-08 22:18 330 查看

方法定义

方法是一个过程体一段被封装的,可重复调用的代码块。
方法的声明:

public static 方法返回类型 方法名称 ([参数类型1 变量1,参数类型2 变量2.....]){
方法代码块;
[return 返回值;]
}

除void类型外,其他类型的方法必须有返回值。
当方法返回类型为void 时,可以有返回语句用来结束调用,也可以没有。
有无返回值与有无形参无关。
方法重载
定义:方法重载时指在一个类中拥有方法名相同,参数不同(参数类型不同,个数不同)
方法的签名:指的是方法名与参数,返回类型不是签名的一部分。
在方法重载中,不能有两个名字相同,参数类型也相同却返回不同类型值的方法。即在进行方法重载时,要求方法的返回值一定相同。

数组的定义与使用

1.数组的动态初始化:

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

采用动态初始化开辟数组空间后,数组中每个元素都会被附上该类型的默认值,并且当需要使用数组元素时,不会报异常。


2.数组静态初始化:

数据类型[] 数组名称= new 数据类型{值,值,值....};

使用静态初识化的数组无默认值。
数组的缺陷:长度固定,因此存在越界问题
Java中提供一种获取数组长度的方法:

数组名称.length

数组在内存中的分配:
Java把内存分为栈内存和堆内存。栈内存保存的只是数组的名称,即使用

数据类型[] 数组名

就可以开辟栈内存,但只开辟栈内存的数组是不可以被使用的,因为堆内存才是存放数组的实体,若想使用数组需要用new关键字来开辟堆内存,然后把堆内存的控制权交给想应的栈内存,一个堆内存可以被多个栈内存使用。
引用传递
引用数据类型可以发生引用传递,所谓引用传递就是指同一块堆内存空间可以被不同的栈内存所指向。
开辟一个新的数组空间,就是将这个新的数组名放在栈内存中,为这个数组实例赋值的过程就是将栈内的数组名指向某块放有数据的堆内存的过程。
若开辟数组空间并赋值后,再使这个数组实例指向null,即堆内存空间没有被指向(引用)了,此时这片堆内存空间并没有被立即清空,但有可能会被GC(垃圾回收站)内存回收。
若这片堆内存发生了引用传递,即有多个栈内存指向这片堆内存,此时若使其中一个栈内存指向null,这片堆内存并不会存在被回收的风险,因为这片堆内存还有栈内存指向。
指向同一片堆内存的栈内存都可以访问、更改、删除这片堆内存空间。

数组与方法的相互操作:
1.方法接收数组
最好对参数进行判断,以免出现空指针异常(null调用属性或方法),增强程序的健壮性。

public static char[] printArray(char[] data){
if(data==null){
return {};
}
for(int i=0;i<data.length;i++){

System.out.println(data[i]);

}
return data;
}

2.方法返回数组

public static int[] init(){
return new int[]{1,2,3,4};//匿名数组

}

Java对数组的支持只要是基本数据类型的数组,sort 方法都可以对其进行排序,内部使用双轴快速排序
数组排序:

java.util.Arrays.sort(数组名称);
char[] chars=new char[]{'n','i','h','a','o'};
java.util.Arrays.sort(chars);
for(char temp:chars){
System.out.println(temp);
}

数组的部分拷贝:

System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);

数组的全拷贝:(Java类集:Java动态数组动态扩容实现)
数组类型[] 数组名=java.util.Arrays.copyOf(源数组名称,新数组长度);
若只想拷贝源数组的前n个数据,则将新数组长度定义为n。

int[] data2=new int[]{1,2,3,4,5,6};
int[] newArray=java.util.Arrays.copyOf(data2,data2.length+2);//{1,2,3,4,5,6,0,0}
int[] newArray2=java.util.Arrays.copyOf(data2,3);///{1,2,3}

对象数组
对象数组动态初始化:

类名称[] 对象数组名称 = new 类名称[长度];

对象数组静态初识化:

类名称[] 对象数组名称 = new 对象名称[]{
new 对象名称(值),
new 对象名称(值)
....
};
}

foreach语句

for(数据类型 变量名:数组名){
//循环体
}
String langusges[] = new String[]{"汉语","德语","法语","英语"};
for(String lang:langusges){

System.out.println(lang);
}

使用foreach语句循环时,泵通过循环变量改变数组或集合元素的值。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: