JAVA文件运行及虚拟机内部构造
JAVA中,栈上的地址一般是拿不到的。
严格的来说,JAVA中只有按值传递。
什么叫方法:
重载满足的要求:
前提:在一个类中。
1.方法名字要相同。
2.参数列表不同(类型和个数)。
3.返回值不做要求。
递归:
将大问题化解为小问题的过程
说明:处理大问题的方式和处理小问题的方式是一样的。需要推导出一个递归公式。
递归公式:
1.调用自己本身。
2.有一个趋近于终止的条件。
递归错误:
错误:一般程序是不能帮你解决的,只能由程序员自己上手解决。
返回值的重要性:
为了支持链式表达式:可以将当前函数的返回值 作为另一个参数的 参数 或者 在另一个函数当中进行运算。
引用类型 引用 :引用实际上就是一个变量
用来存储地址
可变参数编程
传过来的数据 可以看做是一个数组。
局限性:int… array 传过来的一组数据 一定都是相同的数据类型。
面试问题:重载和重写的区别?
重载:重载表示同一个类可以有多个名称相同的方法,但这些方法的参数列表不能相同,与访问修饰符和返回值类型都是无关的。
重写:发生在父类和子类关系的类中,子类定义了与父类的完全相同的方法,只是方法体不同。注意定义中提到了继承(父类、子类)。所以,还有一个不同之处就是重写不在同一个类中,而重载在同一个类中发生。
数组的四种拷贝方法:
1.用for循环进行拷贝;
2.用Arrays.copyOf(array,array.length)进行拷贝;
3.System.arraycopy(array,0,array1,o,array.length)进行拷贝;
4.array.clone()//产生当前引用的一个副本;
指定片段拷贝:Arrays.copyOfRange(array,start,end);
深拷贝:通过引用不修改原助组的值。
浅拷贝:通过引用修改了原助组的值。
面试问题:
这四种拷贝方法是什么拷贝?
深拷贝。
二维数组命名方法:
int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
//默认为0
int[][] array2 = new int[2][3];
//列是可以省略的 行不可以省略 不规则的二维数组
int[][] array3 = new int[2][];
//
int[][] array4 = new int[][]{{1,2,3},{4,5,6}};
二维数组的长度:array.length。
二维数组每列的长度:array[i].length。
打印二位数组:
//foreach
for (int[] arr:array) {
for (int x : arr) {
System.out.print(x +" ");
}
//深度打印
String ret = Arrays.deepToString(array);
System.out.println(ret);