一、理解“万事万物皆对象”。
1.在java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。
2.涉及到java语言与前端html、后端的数据库交互时,前后端的结构在java层面交互时,都体现为类、对象。
二、匿名对象
1.理解:我们创建的对象,没有显式的赋给一个变量名。即是匿名对象。
2.特征:匿名对象只能调用一次。
3.使用场景:
格式:new People . eat();通过People的匿名对象调用eat方法
适合场景:当一个方法中形参是一个我们所创建的类的变量时,可以直接通过sleep.show(new People());快速导入该类的实例赋值给形参。
三、再谈方法:
1.方法的重载:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
2.重载的特点:
与返回值无关,只看参数列表,且参数列表必须不同。(参数个数或者参数类型)调用时,根据方法的参数列表的不同来区别调用的是哪个方法。
3.可变个数形参的方法:
javase5.0中新增了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。
*具体使用:
3.1可变个数形参的格式:数据类型...变量名
public void show(String ... strs){ }
3.2当调用可变个数形参的方法时,传入的参数个数可以是:0个、1个、2个...
3.3可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载。
3.4但是注意,可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。其实二者功能相同,只不数组是5.0之前用来传可变参数的。代码如下:
public void show(String[] strs){ }
3.5可变个数形参在方法的形参中,必须声明在末尾
3.6可变个数形参在方法的形参中,最多只能声明一个可变形参。
4.方法参数的值传递机制:
关于变量的赋值:
如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。
方法的形参的传递机制:值传递
1.值传递机制:
*如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
这个是什么意思呢?请看下图:
在main和swap方法中,m和n都是局部变量,前面提到过,凡是局部变量都是加载在栈中的,于是就变成上图所示情况,所以之后在main中打印m,n其实打印的是main中本来的m,n。
*如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
这个又是什么意思呢?请看下图:
5.递归方法:
5.1方法递归包含了一种隐式的循环,它会重复执行某段代码,但是这种重复执行无须循环控制。
5.2递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。
末尾一道有意思的题目:
int[] arr = new int[]{1,2,3,4}; System.out.println(arr);//地址值 char[] arr1 = new char[]{'a','b','c'}; System.out.println(arr1);
打印后会发现,第一个打印的是一个地址值,第二个打印的却是a,b,c。
这是为什么呢?
原来在println方法中,第一个调用的是println(Objiect)方法,而println有一个专门的println(char【】)方法,第二个调用的是这个,所以打印的结果不同。