前言
博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV17F411T7Ao
一、数组
数组的定义:
静态初始化:定义时直接赋值
例子:
数组的地址值:
直接使用数组类会得到类似于C中的指针,指向了数组开头的地址,首字母提示数组类型,后八位为十六进制的内存地址,很明显该地址为虚拟地址,由JVM来实现重定向。
数组的常用属性和方法:
Arrays.length - 表示数组中元素的数量。
Arrays.equals(Object[], Object[]) - 比较两个数组是否相等。
Arrays.binarySearch(int[] a, int key) - 对已经排序的数组执行二分查找。
Arrays.sort() - 可以对不同类型的数组进行排序。
Arrays.toString() - 返回数组内容的字符串表示形式。
动态初始化:先定义再赋值
静态与动态的区别
JAVA内存分配
指针但不全是
二、方法
什么是方法:
带参方法:
形参和实参:
带返回值方法:
注意事项:
方法的重载:
例子:
简而言之,就是可以把同一个方法根据传入值的个数不同,分别实现不同的代码内容,但本质的操作尽量一致以便阅读理解。
练习:
代码如下:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
System.out.println("enter 5 nums:");
for(int i = 0; i < 5; i++) {
arr[i] = sc.nextInt();
}
System.out.print("arr:");
for(int i:arr) {
System.out.print(" ");
System.out.print(i);
}
System.out.println("start:");
int start = sc.nextInt();
System.out.println("end:");
int end = sc.nextInt();
int[] copyArr = copyOfRange(arr, start, end);
System.out.printf("new arr:");
for(int i:copyArr) {
System.out.printf(" ");
System.out.print(i);
}
return;
}
public static int[] copyOfRange(int[] arr, int from, int end) {
int i = 0;
int j = 0;
for(int t:arr) {
if(t != from) {
i++;
}else {
break;
}
}
for(int t:arr) {
if(t != end) {
j++;
}else {
break;
}
}
int[] res = new int[j - i + 1];
for(int t = 0; t < res.length; t++){
res[t] = arr[i];
i++;
}
return res;
}
引用数据类型,类比于C中的指针。
这里很明显传递的是地址值,如果单纯的传递int 类型的arr[1]则不会有影响,有C基础就很好理解。
总结
方法的重载和形参实参算是重点,重学一次加深印象。
都是基础,比较简单,没啥问题。