1.Java的方法
- Java方法是语句的集合,它们在一起执行一个功能,类似于其它语言的函数
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用 - 设计方法的原则:
方法的本意是功能块,就是实现某个功能的语句块的集合。
设计方法时,最好保持方法的原子性,一个方法只完成1个功能,有利于后期的扩展。 - Java定义一个方法包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
---
方法体
---
return 返回值;
}
- 方法包含一个方法头和一个方法体,一个方法的所有部分:
1、修饰符:
修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。2、返回值类型︰
方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值时,returnValueType是关键字void。3、方法名:
是方法的实际名称。方法名和参数表共同构成方法签名。4、参数类型:
参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量,参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
5、方法体:
方法体包含具体的语句,定义该方法的功能。
2.方法调用
- 调用方法: 对象名.方法名(实参列表)
- Java支持两种调用方法的方式,根据方法是否返回值来选择。
1、当方法返回一个值的时候,方法调用通常被当做一个值。
public static int max(double num1,double num2){
double result = 0;
if(num1<num2){
result = num2;
}else if (num1>num2){
result = num1;
}else{
System.out.println("相等");
return 0;
}
return (int)result;
}
int larger = max ( 30,40); //程序调用
2、如果方法返回值是void,方法调用一定是一条语句。
public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
}
System.out.print1n( "Hello,kuangshen! " );//程序调用
注意:java都是值传递
- 方法调用实例
public class C1FangFaFuXi {
//main方法
public static void main(String[] args) {
/**
* 调用其他类的 静态方法
*/
Man.panDing();
// Man.main();
/**
* 调用其他类的 非静态方法
* Man man; 声明
* man = new Man(); 创建新对象
*
* 实例化这个对象
* 对象类型 对象名 = 对象值
* Man man1 = new Man();
*/
Man man1 = new Man();
man1.panDing2();
/**
* 这里的 1 23 是实际参数
* 而 add 方法中的 a b 是 形式参数
* 并且 实际参数和形式承参数的类型要对应
*/
int a = C1FangFaFuXi.add(1,23);
System.out.println(a); // 24
int zhichuandi = 12;
C1FangFaFuXi.add(zhichuandi,12);
/**
* 这里的 zhichuandi 是12,这是因为java 是值传递
*/
System.out.println(zhichuandi); // 12
zhichuandi= C1FangFaFuXi.add(zhichuandi,12);
/**
* 将结果赋给了zhichuandi 因此结果改变
*/
System.out.println(zhichuandi); //24
Person person = new Person();
System.out.println(person.name); // null
C1FangFaFuXi.change(person);
System.out.println(person.name); //张麻子
}
/**
* 修饰符 返回值类型 方法名
* break是跳出循环
* return 是方法结束,并返回一个结果
*
* 在 静态方法中 无法 直接调用 非静态方法
* 这是因为,静态方法 是和类一起加载的
*/
public static void test(){
return;
}
/**
* 非静态方法 在 类实例化 之后才会存在
* @return
*/
public String test1(){
return "";
}
public static int add(int a,int b){
return a+b;
}
public static void change(Person person){
/**
* perosn是一个对象:指向的---> Perosn person = new Perosn();
* 这是一个具体的人,可以改变属性!
*/
person.name = "张麻子";
}
}
class Person{
/**
* 不初始化(也就是 不赋值)默认的值为 null
*/
String name;
}