在方法前有一语句块,块决定了局部变量的作用域,块中的整个程序代码,作为一个整体,是要被一起执行的。
方法就是一段用来完成特定功能的代码片段,类似于其他语言的函数。面向对象中,整个程序的基本单位是类,方法从属于类和对象。
方法的声明格式:
【修饰符1,修饰符2】返回值类型 方法名(形参列表){
Java语句
}
方法的调用:
对象名.方法名(实参列表)
方法的详情说明:
1、形式参数:在方法声明时用于接收外界传入的数据。
2、实参:调用函数时实际传给方法的数据。
3、返回值:方法在执行完毕后返还给调用他的环境变量的数据。
4、返回值类型:事先约定的返回值数据类型,如果没有返回值,必须显示就指定为void。
测试代码:
public static void main(String[] args) {
//通过对象调用普通方法
Test1 t1=new Test1();
t1.printStudent();
int t2=t1.score(60,75,44);
System.out.println(t2);
}
void printStudent(){
System.out.println("张三");
System.out.println("李四");
System.out.println("王二麻子");
}
int score(int a,int a1,int a2){
int z=a+a1+a2;
System.out.println(z);
return z;
}
方法的重载:
实际是完全不同的方法,只是名称相同而已。
构成方法重载的条件:
形参类型,个数,顺序不同。
测试代码:
public static void main(String[] args) {
System.out.println(score(70,80));
System.out.println(score(70,80,60));
System.out.println(score(70,34,67));
}
public static int score(int a,int b){
int z =a+b;
return z;
}
//参数数目不同的重载
public static int score(int a,int b,int c){
int z =a+b+c;
return z;
}
//参数类型不同,构成的重载
public static double score(double a,int b,int c){
double z =a+b+c;
return z;
}
/*
编译错误:只有参数名称不同,不构成重载
public static int score(int b,int b1,int c){
int z =b1+b+c;
return z;
}
编译错误:返回值不同,不构成方法重载
public static double score(int a,int b,int c){
int z =a+b+c;
return z;
}
*/
递归结构:
基本思想:自己调用自己
递归是一种很简单的解决问题的方法,递归结构包括两个部分:
1、定义递归头,什么时候不掉用自身方法,如果没有头则陷入死循环,这也就是递归的结束条件。
2、递归体,什么时候调用自身方法。
测试代码:
public static void main(String[] args) {
//递归求阶乘
System.out.println(factorial(5));
}
static long factorial(int n) {
if (n == 1) {
return 1;
} else {
return n*factorial(n-1);
}
}
面向过程以及面向对象:
面向过程将思考的步骤对应成方法,适合简单的任务,不需要协作的任务,当思考比较复杂的事物,需要很多协作才能完成面向对象的思想就应运而生。
这两种都是解决问题的思维方式,都是代码组织的方式,解决复杂问题宏观上是面向对象,微观处理上仍然是面向过程。
对象和类的概念:
类我们叫做class,对象我们叫做object,instance,以后我们说某个类的对象,某个类的实例是一个意思。
一个类中通常有两个东西,一个是属性,一个是方法。
测试代码:
public class Student {
//属性
String name;
int age;
Id as;
//方法
void printf(){
name ="张三";
age =15;
System.out.println(name+age+as.id);
}
public static void main(String[] args) {
Student stu =new Student();//创建一个类,调用Student类的一个构造方法
Id a=new Id();
a.id=123;
stu.as=a;
stu.printf();
}
}
class Id{
int id;
}