方法
在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语言中的区别,期待大佬的指正,创作不易期待各位大佬的一键三连(收藏,关注,点赞)。