一、方法
1.方法的介绍
方法:函数、过程
封装一段特定的业务逻辑功能
尽可能独立,一个方法只干一件事
方法可以被反复调用多次
可以减少代码重复,有利于代码维护
何时用:假设有一个功能,在很多地方都得使用,就将功能封装到一个方法中
2.方法的定义
//无参无返回值
public static void say(){
System.out.println("大家好,我叫WKJ,今年38岁了");
}
//有参无返回值
public static void sayHi(String name){ //形参
System.out.println("大家好,我叫"+name+",今年38岁了");
}
//有参无返回值
public static void sayHello(String name,int age){ //形参
System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
}
//无参有返回值
public static double getNum(){
//有返回值的方法中,必须有return
//并且return后数据的类型还必须与返回值类型匹配
//return "abc"; //编译错误,返回值类型不匹配
return 8.88; //1)结束方法的执行 2)返回结果给调用方
}
//有参有返回值
public static int plus(int num1,int num2){
int num = num1+num2;
return num; //返回的是num里面的那个数
//return num1+num2; //返回的是num1与num2的和
}
//无参有返回值
public static int[] testArray(){
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = (int)(Math.random()*100);
}
return arr;
}
3.方法的调用
无返回值:方法名(有参传参);
public class MethodDemo {
public static void main(String[] args) {
say(); //调用say()方法
//sayHi(); //编译错误,有参则必须传参
//sayHi(250); //编译错误,参数类型必须匹配
sayHi("zhangsan"); //String name="zhangsan" //实参
sayHi("lisi"); //String name="lisi" //实参
sayHi("wangwu"); //String name="wangwu" //实参
sayHello("zhangsan",25); //实参 String name="zhangsan",int age=25
sayHello("lisi",24); //实参
}
}
有返回值:数据类型 变量 = 方法名(有参传参);
public class MethodDemo {
public static void main(String[] args) {
double a = getNum(); //getNum()的值就是return后的那个数
System.out.println(a); //8.88,模拟对返回值的后续操作
int b = plus(5,6); //plus(5,6)的值就是return后的那个数
System.out.println(b); //11,模拟对返回值的后续操作
int m=5,n=6;
int c = plus(m,n); //传递的是m和n里面的数
System.out.println(c); //11,模拟对返回值的后续操作
int[] d = testArray();
System.out.println(d.length); //10,模拟对返回值的后续操作
}
}
return:
return 值; //1)结束方法的执行 2)返回结果给调用方-------用在有返回值的方法中
return; //1)结束方法的执行------------------------------------用在无返回值的方法中
4.补充
1)形参:形式参数----定义方法时的参数叫做形参
实参:实际参数----调用方法时的参数叫做实参
2)
public static void main(String[] args){
say();
sayHi("zhangsan");
sayHello("zhangsan",25);
double a = getNum(); 输出a; //---模拟对返回值的后续操作
int b = plus(5,6); 输出b; //---模拟对返回值的后续操作
int m=5,n=6;
int c = plus(m,n); 输出c; //---模拟对返回值的后续操作
int[] d = testArray(); 输出d的长度; //---模拟对返回值的后续操作
}
public static void say(){ ... }
public static void sayHi(String name){ ... }
public static void sayHello(String name,int age){ ... }
public static double getNum(){ return 8.88; }
public static int plus(int num1,int num2){ return num1+num2; }
public static int[] testArray(){ int[] arr = ...; return arr; }
二、对象和类
1.类与对象
什么是类?什么是对象?
现实生活是由很多很多对象组成的,基于对象抽出了类
对象:软件中真实存在的单个的个体/东西
类:类型/类别,代表一类个体
类是对象的模板/模子,对象是类的具体的实例
类中可以包含:
对象的属性/特征/数据-----------------成员变量
对象的行为/动作/功能-----------------方法
一个类可以创建多个对象
2.类与对象的创建
如何创建类?如何创建对象?如何访问成员?
//学生类
public class Student {
//成员变量
String name;
int age;
String address;
//方法
void study(){
System.out.println(name+"在学习...");
}
void sayHi(){
System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
}
}
//学生类的测试类
public class StudentTest {
public static void main(String[] args) {
//创建一个学生对象
Student zs = new Student();
//给成员变量赋值
zs.name = "zhangsan";
zs.age = 25;
zs.address = "河北廊坊";
//调用方法
zs.study();
zs.sayHi();
Student ls = new Student();
ls.name = "lisi";
ls.age = 24;
ls.address = "黑龙江佳木斯";
ls.study();
ls.sayHi();
//1)创建了一个学生对象
//2)给所有成员变量赋默认值
Student ww = new Student();
ww.study();
ww.sayHi();
}
}
3.方法的重载
方法的重载(overload/overloading):大大方便用户的调用
发生在同一类中,方法名相同,参数列表不同
编译器在编译时会根据方法的签名自动绑定调用方法
//方法重载的演示
public class OverloadDemo {
public static void main(String[] args) {
Aoo o = new Aoo();
o.show();
o.show(25);
o.show("zhangsan");
o.show("zhangsan",25);
o.show(25,"zhangsan");
}
}
class Aoo{
void show(){}
void show(String name){}
void show(int age){}
void show(String name,int age){}
void show(int age,String name){}
//int show(){ return 1; } //编译错误,重载与返回值类型无关
//void show(String address){} //编译错误,重载与参数名称无关
}