再谈方法之1:方法的重载(overload)
1.定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。满足这样特征的多个方法,彼此之间构成方法的重载。
2.总结为:“两同一不同”
两同:同一个类、相同的方法名
一不同:参数列表不同。①参数个数不同②数类型不同
注意:方法的重载与形参的名、权限修饰符、返回值类型都没有关系。
3.如何判断两个方法是相同的呢?(换句话说,编译器是如何确定调用的某个具体的方法呢?)如何判断两个方法是相同的呢?方法名相同,且形参列表相同。(形参列表相同指的是参数个数和类型都相同,与形参名要求:在一个类中,允许存在多个相同名字的方法,只要他们的形参列表不同即可。编译器是如何确定调用的某个具体的方法呢?先通过方法名确定了一波重载的方法,进而通过不同的形参列表,确定具体5.在同一个类中不允许定义两个相同的方法。
再谈方法之2:可变个数形参的方法(jdk5.0)
1·使用场景
在调用方法时,可能会出现方法形参的类型是确定的,但是参数的个数不确定。此时,我们就可以使用可变个数形参的方
2.格式:(参数类型...参数名)
3.说明:
①可变个数形参的方法在调用时,针对于可变的形参赋的实参的个数可以为:0个、1个或多个
②可变个数形参的方法与同一个类中,同名的多个方法之间可以构成重载
③特例:可变个数形参的方法与同一个类中方法名相同,且与可变个数形参的类型相同的数组参数不构成重载。
④可变个数的形参必须声明在形参列表的最后
⑤可变个数的形参最多在一个方法的形参列表中出现一次
再谈方法之3:方法的值传递机制
1.(复习)对于方法内声明的局部变量来说:如果出现赋值操作
>如果是基本数据类型的变量,则将此变量保存的数据值传递出去。
>如果是引用数据类型的变量,则将此变量保存的地址值传递出去。
2.方法的参数的传递机制:值传递机制
2.1 概念(复习)
形参:在定义方法时,方法名后面括号()中声明的变量称为形式参数,简称形参。
实参:在调用方法时,方法名后面括号()中的使用的值/变量/表达式称为实际参数,简称实参。
2.2 规则:实参给形参赋值的过程
>如果形参是基本数据类型的变量,则将实参保存的数据值赋给形参。
>如果形参是引用数据类型的变量,则将实参保存的地址值赋给形参。
一个例子:
//排序前遍历
for (int i=0;i< students.length; i++) {System.out.println(students[i].show());}
System.out.println("********************");
for (int i=(int i = 0] i < studIi < students.length - 1; i++) {
for (int j = 0; j < students.length - 1 -i; j++) {
core){if(students[j].score > students[j+ 1].score){
//错误的,不满足实际需求!
int temp = studentsts[j].j].score;
students[j].scorej].score = students[j + 1].score;
students[j+1].scc[j +1].score = temp;
//正确的
Student temp = stud= students[j]
students[j] = studentsents[j ++1];
students[j + 1] = temp;1] =temp;}}}
再谈方法之4:递归方法
1.何为递归方法?方法自己调用自己的现象就称为递归。
2.递归方法分类:直接递归、间接递归
3.使用说明:
-递归方法包含了一种“隐式的循环”。
-递归方法会重复执行某段代码,但这种重复执行无须循环控制。
-递归一定要向“已知方向”递归,否则这种递归就变成了无穷递归,停不下来,类似于“死循环”。最终发生`栈内存溢出”。
注意:
1.递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环`慢的多”,
所以在使用递归时要慎重。
2.在要求高性能的情况下尽量避免使用递归,递归调用既花时间又`耗内存”。考虑使用循环迭代
一、package关键字的使用
1.说明
- package:包
-package用于指明该文件中定义的类、接口等结构所在的包
-一个源文件只能有一个声明包的package语句
- package语句作为Java源文件的第一条语句出现。若缺省该语句,则指定为无名包。
-包名,属于标识符,满足标识符命名的规则和规范(全部小写)、见名知意
-包通常使用所在公司域名的倒置:com.atguigu.xxx。
-大家取包名时不要使用"`java.xx`"包
-包对应于文件系统的目录,package语句中用“.”来指明包(目录)的层次,每.一次就表示一层文件目录。
-同一个包下可以声明多个结构(类、接口),但是不能定义同名的结构(类、接口)。不同的包下可以定义同名的结构
2.包的作用
-包可以包含类和子包,划分“项目层次”,便于管理
-帮助`管理大型软件`系统:将功能相近的类划分到同一个包中。比如:MVC的设计模式
-解决`类命名冲突”的问题
-控制`访问权限
3.JDK中主要的包
java.uing----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能
`java.net`----包含执行与网络相关的操作的类和接口。
java.io----包含能提供多种输入/输出功能的类。
java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。
`java.text----包含了一些java格式化相关的类
`java.sql"----包含了java进行JDBC数据库编程的相关类/接口
`java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用
二、import关键字的使用
-import:导入
- import语句来显式引入指定包下所需要的类。相当于`import语句告诉编译器到哪里去寻找这个类。
-import语句,声明在包的声相和类的声明之间。
-如果需要导入多个类或接口,那么就并列显式多个import语句即可
-如果使用`a.*`导入结构,表示可以导入a包下的所有的结构。举例:可以使用java.util.*的方式,一次性导入util
-如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。
-如果已经导入java.a包下的类,那么如果需要使用a包的子包下的类的话,仍然需要导入。
-如果在代码中使用不同包下的同名的类,那么就需要使用类的全类名的方式指明调用的是哪个类。
-(了解)'import static`组合的使用:调用指定类或接口下的静态的属性或方法
例如:
//Date可以使用import的方式指明
date = null;Date date
//使用全类名的方式
java.sql.Date date1 = newdate1 = newjava.sql.Date(121231231L);