Java 方法和数组
1、方法:(C语言中是函数)
格式:
**修饰符** 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
修饰符有 “public static”等 函数调用不必预先声明。
方法重载(同C++函数重载) 在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
2、java内存分配
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区(存方法的内存区)
D:本地方法区(系统相关)
E:寄存器(CPU使用)
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址
每一个变量都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收。
内存分配具体后续再学。
3、数组与C语言大有不同:
3.1 一维数组
定义格式 (与C语言不同)
A:数据类型[] 数组名;
B:数据类型 数组名[];
数组的初始化:
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3];
或者 int[] arr; arr = new int[5];
B:静态初始化
给出值,系统决定长度
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
System.out.println(arr);//输出的是数组地址值
System.out.println(arr[0]);//输出的是数组中第一个元素值
System,arraycopy(source,0,dest,0,x);//复制源数组从下标0的x个元素到目标数组,从目标数组的下标0所对应的位置开始存取。
Arrays.sort(a);//数组的排序方法
数组的大小为: 数组名.length
3.2、二维数组
(1)元素是一维数组的数组。
(2)格式:
A:数据类型[][] 数组名 = new 数据类型[m][n];
B:数据类型[][] 数组名 = new 数据类型[m][];
C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
D:数据类型[][] 数组名 = {{...},{...},{...}};
(3)数组名.length //取得数组的行数
数组名[行的索引].length //取得特定行元素的个数
3.3 数组的传递与返回
class ArgsDemo {
public static void main(String[] args) {
int[] arr = {
1,
2,
3,
4,
5};
int[] arr1 =
new int[
5];
arr1=chandi(arr);
System.
out.println(
"主函数里arr1数组值为");
for(
int x=
0;x<arr1.length;x++){
System.
out.print(arr1[x]+
" ");
}
System.
out.println();
System.
out.println(
"主函数里arr数组值为");
for(
int x=
0;x<arr.length;x++){
System.
out.print(arr[x]+
" ");
}
}
public static int[]
chandi(
int[] arr) {
for(
int x=
0; x<arr.length; x++) {
if(arr[x]%
2==
0) {
arr[x]*=
2;
}
}
System.
out.println(
"调用函数里数组值为");
for(
int x=
0;x<arr.length;x++){
System.
out.print(arr[x]+
" ");
}
System.
out.println();
return arr;
}
}
注意其中的数组传递 ,用数组名。数组接收,形参是相同的数组类型。方法返回值是相同的数组类型。数组传递后,被修改,原数组的值也会变化。二维数组同理。
4、java数组思考
JAVA里数组的内存分配是在堆里面的,必须用new来分配,而C++里面是在栈里面分配的,定义的时候会自动分配。
数组本身就是对象(java的面向对象),Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
所以java在实例化对象时才分配空间。 在数组声明时指定长度不合法。比如int[5] arr;
Java有数组下标检查,在运行时,当访问超出索引范围时,将产生ArrayIndexOutOfBoundsException运行时异常。
转载请注明原文地址: https://ju.6miu.com/read-970374.html