方法的重载
方法(函数)
方法的重载
构造方法的重载
注意:形参发生改变,对实参没有影响
函数的重载
§ 在同一个类中可以定义多个同名方法—方法名重载(overload)
publicclass PrintStream{
publicvoid print(int i) {……}
publicvoid print(float f) {……}
publicvoid print(String s) {……}
}
§ 重载方法的参数列表必须不同
§ 重载方法的返回值类型可以相同,也可以不同
§ 调用时根据方法的参数类型来区别。
print(3);print(1.2f);print(“hello!”);
this 关键字
this 关键字 :this 是对“调用当前方法的那个-当前对象”对象的引用
当前对象:当前方法所在的对象。
This 的用途:指代的是当前对象
1.在一般的方法中可以通过this 来引用当前对象的成员(方法、属性)
2.通过this ()调用重载的构造器。需要注意的是,通过此种方法调用重载的构造器的代码必须放在当前构造器的第一行。例如:
publicPerson(String n, inta, String s, String m){
this(n,a,s);
major=m;
}
是正确的、
publicPerson(String n, inta, String s, String m){
major=m;
this(n,a,s);
}
是错误的、
函数的参数传递(重要)
一、基本数据类型的参数传递
package com.atguigu.app;
public class PassValue {
public static voidmain(String [] args){
int x =5;
change(x);
System.out.println(x);
}
public static void change(inty){
y = 3;
}
} //x的值为5
对应的内存分析:
二、引用数据类型的参数传递(两种情况)
第一种情况:
package com.atguigu.app;
public class PassRef {
int x;
public static voidmain(String [] args){
PassRef obj = newPassRef();
obj.x = 5;
change(obj);
System.out.println(obj.x);
}
public static voidchange(PassRef obj){
obj.x = 3;
}
} //x的值是3
对应的内存分析:
第二种情况:(使用new一个新的对象)
packagecom.atguigu.app;
publicclass PassRef1 {
int x;
public static void main(String [] args){
PassRef obj = new PassRef();
obj.x = 5;
change(obj);
System.out.println(obj.x);
}
public static void change(PassRef obj){
obj = new PassRef();
obj.x = 3;
}
} //x的值是5
对应的内存分析:
软件包
包帮助管理大型软件系统:将语义近似的类组织到包中。
包可以包含类和子包。
package语句
package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:
package <顶层包名>[.<子包名>]*;
举例:pack\Test.java
packagep1; //指定类Test属于包p1
public class Test{
public void display(){
System.out.println("in method display()");
}
}
包对应于文件系统的目录,package语句中,用‘.’ 来指明包(目录)的层次;
包通常用小写单词,类名首字母通常大写。
import语句
为使用定义在不同包中的Java类,需用import语句来引入所需要的类。Import语句告诉编译器到哪里去寻找类。
语法格式:
import 包名[.子包名…]. <类名|*>
应用举例:
import p1.Test; //import p1.*;表示引入p1包中的所有类
public class TestPackage{
public static void main(String args[]){
Test t = new Test(); //Test类在p1包中定义
t.display();
}
}
JDK中主要的包介绍
1. java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
2. java.net----包含执行与网络相关的操作的类。
3. java.io----包含能提供多种输入/输出功能的类。
4. java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。