1.方法概述
语法结构:
[修饰符列表] 返回值类型 方法名 (形式参数列表){
方法体
}
解释:
1,” [修饰符列表] 返回值类型方法名 (形式参数列表) “ 合起来称之为“方法的声明”(少部分书籍博客也叫方法头)
2,” 方法名(形式参数列表)“ 合起来称之为 “方法的签名”
3,修饰符列表可以为空,非必须,但是现在默认为public static(后面再讲)
4,方法实现功能后,给出结果数据的数据类型,称之为返回值类型(returned value type)
1,返回值类型可以是基本数据类型,引用数据类型(String),和void(张三回答问题案例)
2,void只是代表没有返回值,但void本身就是一种返回值类型
3,若返回值类型不是void,代表这个方法必须有返回值,否则编译报错在方法体中用“return”关键字声明,格式为“return + 返回值”return后的返回值的数据类型,要和方法声明中的返回值类型保持一致
4,代码执行到return或者执行完最后一行代码,代表方法执行完毕
5,方法名的命名:[修饰符列表]返回值类型方法名(形式参数列表){方法体}
1,必须是合法的标识符
2,方法名最好“望文生义”
3,方法名最好是动词
4,方法名遵循首字母小写,其他单词的首字母大写的“小驼峰命名法”
6,方法中定义的要传入的,具体数据,称之为形式参数(formalparameters),简称“形参”
1,形参的作用域是方法内部,(这种变量称之为“局部变量”)
2,形参可以是基本数据类型,也可以是引用数据类型
3,形参的个数不受限,多个形参用逗号隔开
4,形参中起关键性作用的是,形参的数据类型。形参名只是一个标识符,不会影响方法调用
5,调用方法时,传入的具体数据称之为实际参数(actualparameters),简称“实参”
7,方法体必须写在方法代码块中,由大括号包裹起来
8,方法的本质(定义),是可以重复完成特定功能的代码块,是为了代码复用
注意事项:
1,方法不调用,不执行,各个方法之间是平行关系
2,方法要定义在类体中,方法不能嵌套,方法在类体中定义的顺序对方法调用没有影响
3,对于修饰符列表中有static的方法,调用方式是:方法名(实际参数列表);
4,调用一个有返回值的方法,实际上就是操作返回值。调用方法时,传入的实参列表和形式参数的列表必须数量相同,数据类型一一对应
5,调用方法时,传入的实参无需加数据类型
main方法详解:
1,public static表示“公开的,静态的”
2,void表示没有返回值
3,main是方法名,代表是主方法,程序的入口方法。自定义方法不要用这个名字
4,(String[] args)是形参列表,其中String[]是一种引用类型,数组(马上讲),args是一个形参名理论上来说,args可以在符合标识符命名的前提下可以任意写。但是不建议这么做
5,main方法是程序的入口
2.方法的重载
语法结构:
多个方法,具有相同的方法名,但是形参列表不同:
形参列表不同意味着:
1,形参数量不同
2,形参的数据类型不同
多个方法,具有相同的方法名,但是形参列表不同
3,形参的数据类型的顺序不同
2,形参的名字不同,是方法的“重复”,会报错。
因为决定形参列表的是形参的数据类型
3,方法重载只和方法的签名有关,和返回值类型无关,修饰符列表无关
/**
*
* 对于有返回值的方法来说,操作这个方法的调用,本质上是操纵方法返回的值
*
*/
public class Demo {
public static void main(String[] args) {
System.out.println(printString("HelloWorld!"));
System.out.println(printString("HelloWorld!")+"你好世界!");
}
//需求,我实现功能:打印字符串
public static String printString(String s){
return s;
}
}
/**
**方法的返回值问题**
* 1,方法不总是有返回值,我们用void去填入返回值的位置
* 2,方法的返回值类型能填入哪些东西?
* int这种基本数据类型可以
* String这种引用数据类型也可以
*
* 问题:printString这个方法是没有返回值类型吗?
* 不对,void只是没有返回值,但是void仍然是一种返回值类型
*/
public class Demo1 {
public static void main(String[] args) {
printString("Hello World!");
}
//需求直接打印字符串
public static void printString(String s) {
//打印
System.out.println(s);
}
}
/**
* @description: 传参的问题
**/
/**
* 实际参数要和形式参数一一对应,数据类型要对应,数量也要对应
* 对于有返回值的方法,调用方法的本质就是得到一个值,可以对值进行的操作,也可以直接把方法调用放到那个位置。包括,打印,运算
* 对于没有返回值的方法,调用方式只有一种,test();
*
*/
public class Demo2 {
public static void main(String[] args) {
//调用方法
/*double sum = sum(1, 1.0);
System.out.println(sum);
sum++;*/
test();
System.out.println();
}
public static double sum(int a, double b) {
return a + b;
}
public static void test(){
System.out.println("test");
}
}
/**
* @description: 使用方法的注意事项
**/
/**
* 注意事项:
* 1,方法不调用,不执行,各个方法之间是平行关系
* 2,方法要定义在类体中,方法不能嵌套,方法在类体中定义的顺序对方法调用没有影响
* 3,对于修饰符列表中有static的方法,调用方式是:方法名(实际参数列表);
* 4,调用一个有返回值的方法,实际上就是操作返回值
* 4,调用方法时,传入的实参列表和形式参数的列表必须数量相同,**数据类型一一对应**
* 5,调用方法时,传入的实参无需加数据类型
*
*/
public class Demo3 {
//我们已经用过很多次main方法了,但是没有进行过详细的了解
public static void main(String[] args) {
//public static 是修饰符列表 公共的,静态的
//void 没有返回值 不能确实
//main 方法的名字 不能改
//(String[] args) 形式参数列表
//其实这里有一个地方是可以修改的
//main是早在1.0时期,sun公司指定的规范
//曾经public static是可以去掉的,但是很快1.2时期,sun公司取消了这个设定
//在形参列表当中,真正关键的是数据类型
}
}