java入门5-方法和数组

    xiaoxiao2021-12-14  21

    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

    最新回复(0)