Java基础之方法与数组

方法

在Java中, 方法的定义包括方法的修饰符、返回类型、方法名、参数列表和方法体。方法既能够模块化的组织代码(当代码规模比较复杂的时候)。也做到代码被重复使用(一份代码可以在多个位置使用)。Java中的方法类似与C语言中的函数,具有C语言中函数的大部分功能,但是也有部分区别,下面我们进行解释。

方法的定义

public static 方法返回值 方法名称([参数类型 形参 ...]){
 方法体代码;
 [return 返回值];
}

方法的重载

Java支持方法重载,即在同一个类中可以定义多个同名方法参数列表必须不同,返回值类型并不影响。编译器会根据方法的参数列表来进行调用。在C语言中调函数时,调用不同的函数,要用不同的函数名,并重新定义函数,操作较为复杂,这就体现到了Java中方法的重载的优点了。

public class test {
    public static int add(int a,int b) {
        return a+b;
    }
    public static int add(int a,int b,int c,int d) {
        return a+b+c+d;
    }
    public static int add(int a,int b,int c) {
        return a+b+c;
    }
    public static double add(double a,double b) {
        return a+b;
    }
    public static void main(String[] args) {
        int a=1,b=2;
        System.out.println(add(a,b));
        System.out.println("-----------------");
        int c=3,d=4,e=5;
        System.out.println(add(c,d,e));
        System.out.println("-----------------");
        double f=6.0,g=7.0;
        System.out.println(add(f,g));
    }
}

数组

数组的定义

//动态初始化
数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
 
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 };

引用

引用类似C语言中的指针,创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址。 "引用" 本质上只是存了一个地址Java中当引用不指向的时候,引用指向null,而不能和C语言一样指向0。Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只是将数组的地址传入到函数形参中。这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大)。

引用在内存的案例

案例一:引用的指向,arr存的地址赋值给了arr2所以arr2也指向arr。

 案例二:这里我们可以出,两个引用可以指向同一个对象

案例三:这个案例可以看出并不是只要引用就能解决问题,这里arr1指向新建的一个数组,并部署原来的地址,然后方法调用后就释放了,所以并不会影响arr内的值。

Java数组中类的便利之处

1.for-each 遍历数组:是 for 循环的另外一种使用方式, 能够更方便的完成对数组的遍历

 public static void main(String[] args) {
        int[] array = {5,4,3,1,2};
        for (int x : array) {
            System.out.println(x);
        }
}

2.Arrays.toString(array):这个和C语言具有很大区别,C语言中想遍历需要运用一个for循环,而Java只需要调用方法就可以实现这一个功能。实例如下

public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.toString(array));
}

3.Arrays.equals(array1,array2):判断是否两个数组是否相同,返回类型为布尔类型

public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        int[] array1={1,2,3,4,5,6};
        boolean ret=Arrays.equals(array,array1);
        System.out.println(ret);
}

4.Arrays.binarySearch(array, key):用于二分查找,返回值为所找数据的索引,找不到就会返回负值

 public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.binarySearch(array, 3));
}

5.Arrays.sort(array)排序:这个主要进行升序进行排序

public static void main(String[] args) {
        int[] array = {5,4,3,1,2};
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
}

6.Arrays.copyOf(array,array.length):copyOf 是将数组进行了 深拷贝, 即又创建了一个数组对象, 拷贝原有 数组中的所有元素到新数组中。

int[] arr = {1,2,3,4,5,6};
        int[] newArr = Arrays.copyOf(arr, arr.length);
        System.out.println(Arrays.toString(newArr));
}

7.Arrays.copyOfRange(array,int,int):是拷贝某个范围,Arrays.toString(newArr)拷贝的是左闭右开。

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("newArr: " + Arrays.toString(newArr));
    }

二维数组

二维数组的定义

数据类型[ ][ ] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

 Java中二维数组的定义和C语言中的定义是有区别,定以方式有如下三种,arr[ ][ ]这里面的方括号是数据的类型,里面不能定义数组的行和列。第三种方式需要依次遍历填入数据。

public static void main(String[] args) {
        int arr[][]={{1,2,3},{4,5,6}};
        int arr2[][]=new int[][]{{1,2,3},{4,5,6}};
        int arr3[][]=new int[2][3];
}

理解二维数组是一个特殊的一维数组

在C语言中,总说二维数组是一个特殊的一维数组,在Java中也是这样只不过Java使这一现象更加具体化了。下面用图解和代码进行论述这一现象。从代码与运行后的结果可知Java中的数组的存储方式,类似与左一的这种情况,分为一块一块的。

不规则的二维数组

Java中存在不规则的二维数组,具体案例如下,二维数组的打印使用Arrays.deepToString(arr)。

注意两个块里面存的是地址,地址里面上面存的是数据,因此当仅出现int [][]arr=new int [2][];就会出现空指针异常的情况。

总结

本节主要介绍了,Java中数组和方法与C语言中的区别,期待大佬的指正,创作不易期待各位大佬的一键三连(收藏,关注,点赞)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值