java面向对象概念2

一、理解“万事万物皆对象”。

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【】)方法,第二个调用的是这个,所以打印的结果不同。

 

posted @ 2019-04-24 13:24  黑暗之魂DarkSouls  阅读(162)  评论(0编辑  收藏  举报