方法的类型
1、如何声明
【修饰符】 返回值类型 方法名(【形参列表】){
方法体:实现代码的功能
}
返回值类型:
(1)void:代表无返回值
(2)非void:可以是任意的JAVA数据类型,包括8种基本数据类型、所有的引用数据类型(数组,类)
【形参列表】:
(1)():无参
(2)(形参列表):有参
2、调用
(1)在本类中,同一个级别,直接调用
方法名();
(2)在其他类中,需要通过:“对象名.方法”
对象名.方法()
一:无参无返回值的方法
1、声明
【修饰符】 void 方法名(){
方法体
}
2、调用
在其他类中:对象名.方法();
class NoParamNoReturnValue{
public static void mian(String[] args){
Student stu=new Student();
stu.name="V";
stu.age=25;
stu.score=100;
stu.printInfo();//无返回值是单独一个语句
}
}
class Student{
//属性
String name;
int age;
int score;
//方法 省略修饰符
//1、声明一个方法,可以打印当前学生的信息
void printInfo(){
System.out.println("姓名:"+name+"年龄"+age+"成绩"+score);
}
}
二、无参有返回值
1、声明格式
【修饰符】 非void的返回值方法 方法名(){
}
class NoParamNoReturnValue{
public static void mian(String[] args){
//1、创建对象
Account a =new Account();
a.id='19951230';
a.balance=1995;
//调用a的printInfo()
a.printInfo()
//a的月利率
d= a.getMonthRate();//接收返回值。或者打印
}
class Account{
String id;
double balance;
double rate=0.035;
void printInfo(){
System.out.println("账户:"+id+"余额"+balance+"年利率"+rate);
}
double getMonthRate(){
return rate/12;
}
}
三、有参无返回值的方法
1、声明
【修饰符】void 方法名(形参列表){
方法体
}
形参列表的格式:
(数据类类型 形参名)
(数据类型1 形参名1,数据类型2 形参名2,…)
2、调用格式
(1)本类同级别
方法名(实参列表)
(2)其他类中
对象名。方法名(实参列表)
3、两个名词
(1)形参列表:声明时()中
(2)实参列表:调用时()中
void printRectangle(int n,int m,char x){
}
tool.printRecangle(3,5,'%');
类也是引用对象
class MyDates{
int year;
int month;
int day;
}
class Cityzen{
Cityzen c =new Cityzen();
c.birthday=new MyDates();//MyDates是引用对象
c.birthday.year=1995;
c.birthday.month=12;
c.birthday.day=30;
}
方法的实参传递机制
1、形参是基本数据类型
实参赋值给形参是数据值,形参值修改不影响实参,因为实参是“copy”复制了一份数据给形参
2、形参是引用数据类型
行参是引用数据类型,实参赋值给形参的是地址值,如果形参修改了对象的属性值,那么实参对象的属性值也会修改
实参传给形参的是地址值,形参根据地址值找到堆里的值,然后方法中修改了半径的值,运行完后方法的内存释放掉,但此时半径的值已经修改了。
陷阱:在方法中加一句 c=new Circle();
结果圆的半径没有改变
本来调用了方法之后,应该指向半径radius=1.0,但是在方法中新建了一个对象就会开辟一个新的内存空间默认值为0.0,扩大两倍还是0.0(执行完释放)再回到主方法中找到radius,值还是1.0
方法重载
再同一类中,出现了两个或多个方法名相同,形参列表不同,称为方法的重载。
形参列表不同:形参的个数,数据类型不同
public static double max(int a,int b){
}//不行和前面的形参列表一样
且方法的重载和返回值类型无关,至于形参列表有关
可变参数
变量分类
数组存放的数据类型