目录
一、成员方法
二、方法调用机制
三、方法的妙用
四、方法注意事项
4.1、访问修饰符(控制方法使用范围)
4.2、返回数据类型
4.3、方法名
4.4、形参列表
4.5、方法体
4.6、方法的调用
五、成员方法传参机制
5.1、基本数据类型传参
5.2、引用类型传参
六、方法练习
一、成员方法
访问修饰符 返回数据类型 方法名(形参列表){
语句;
return 返回值;
}
1、参数列表:表示成员方法输入
2、返回数据类型:表示成员方法输出,void:表示没有返回值
3、方法主体:表示为了实现某一功能代码块
4、return 语句不是必须的,有的方法不一定有返回值
参考示例代码:
public class Method1 {
public static void main(String[] args) {
//使用方法
/**
* 1、当类里的方法写好后,不去调用是没有效果的
* 2、调用方法前需要先创建对象,再调用方法
*/
Person person = new Person();
person.speak(); //调用方法
person.count();
person.count1(100); //调用方法同时将 n = 100
int i = person.count2(10, 20);
System.out.println(i);
}
}
class Person{
String name;
int age;
//方法(成员方法)
//public:表示方法公开
//void:表示没有返回值
//speak:表示方法名
//():表示形参列表
//{}:方法体,要执行的代码
//System.out.println("这是一个人");:该方法输出的内容
public void speak(){
System.out.println("这是一个人");
}
//计算1到1000的值
public void count(){
int num = 0;
for (int i = 1; i <= 1000 ; i++) {
num += i;
}
System.out.println("num = " + num);
}
//(int n):当前有一个形参
public void count1(int n){
int num = 0;
for (int i = 1; i <= n ; i++) {
num += i;
}
System.out.println("num = " + num);
}
/**
* 1、int:表示方法执行后,返回一个int值
* 2、return res;:表示把res的值返回
*/
public int count2(int num1,int num2){
int res = num1 + num2;
return res;
}
}
二、方法调用机制
三、方法的妙用
不使用方法遍历三次数组:
public class Method2 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,3,4,6};
for (int i = 0; i <arr.length ; i++) {
System.out.println("arr[i] = " + arr[i]);
}
System.out.println("--------------");
for (int i = 0; i <arr.length ; i++) {
System.out.println("arr[i] = " + arr[i]);
}
System.out.println("--------------");
for (int i = 0; i <arr.length ; i++) {
System.out.println("arr[i] = " + arr[i]);
}
}
}
代码冗余,可读性差,维护麻烦。
使用方法来进行遍历:
public class Method2 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,3,4,6};
MyTools myTools = new MyTools();
for (int i = 0; i < 3 ; i++) {
System.out.println("-------");
myTools.printArr(arr);//使用方法遍历三次
}
}
}
class MyTools{
public void printArr(int[] arr){
for (int i = 0; i <arr.length ; i++) {
System.out.println("arr[i] = " + arr[i]);
}
}
}
1、提高了代码的复用性
2、将实现的细节封装起来,供其他用户调用就行。
四、方法注意事项
4.1、访问修饰符(控制方法使用范围)
当不写访问修饰符时使用默认修饰符,主要有四种(public,protected,默认,private)
4.2、返回数据类型
1、一个方法最多有一个返回值,当要返回多个结果,使用数组。
2、返回类型可以为任意类型,包括基本类型或引用类型(数组,对象)
示例代码:
public class Method3 {
public static void main(String[] args) {
AA aa = new AA();
int[] arr = aa.getArr(2, 3);
System.out.println("两数之和:" +arr[0]);
System.out.println("两数之差:" +arr[1]);
}
}
class AA{
public int[] getArr(int num1,int num2){
//创建数组
int[] arr = new int[2];
arr[0] = num1 + num2;
arr[1] = num1 - num2;
return arr;
}
}
3、方法要求有返回数据类型,方法体中最后的执行语句必须为return值,并且要求返回值类型必须和return的值类型一致或兼容。
示例代码:
public double a(){
int a = 1;
return a; //这里会进行自动类型转换
}
4、方法是void,方法体中可以没有return语句 或者 只写return。
示例代码:
public void b(){
return; //这里不能返回数据类型
}
4.3、方法名
1、遵循驼峰命名法,最好见名知意。
4.4、形参列表
1、一个方法可以有零个参数,也可以有多个参数,中间用逗号隔开。
2、参数类型可以是任意类型,包含基本类型或引用类型。
3、调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数。
4、方法定义时的参数为形式参数又称形参,方法调用时传入的参数又称实际参数又称实参,实参和形参的类型要一致或兼容即个数、顺序必须一致。
4.5、方法体
完成功能的具体语句,可以是输入、输出、变量、运算、分支、循环、方法调用,但不允许方法里面再定义方法。
示例代码:
public void c(){
public void d(){ //编译就报错
}
}
4.6、方法的调用
1、同一个类中的方法调用,直接调用就行。
示例代码:
public class Method4 {
public static void main(String[] args) {
A a = new A();
a.a2();
}
}
class A{
public void a1(){
System.out.println("a1方法被调用");
}
public void a2(){
//在本类中直接调用
a1();
System.out.println("a2方法执行");
}
}
2、跨类中的方法A类调用B类的方法,需要通过对象名调用。
示例代码:
public class Method4 {
public static void main(String[] args) {
B b = new B();
b.b1();
}
}
class A{
public void a1(){
System.out.println("a1方法被调用");
}
}
class B{
public void b1(){
//先创建B对象,再调用方法
A a = new A();
a.a1();
System.out.println("b1方法调用");
}
}
五、成员方法传参机制
5.1、基本数据类型传参
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参。
示例代码:
public class Method7 {
public static void main(String[] args) {
int a = 1;
int b = 2;
EE ee = new EE();
ee.swap(a,b);
System.out.println("main方法中的值a=\t" + a + "b=\t" + b);//a=1,b=2
}
}
class EE{
public void swap(int a,int b){
System.out.println("a和b交换前的值a=\t"+ a +"b=\t" + b);//a=1,b=2
//完成a和b的值交换
int tmp =a;
a = b;
b = tmp;
System.out.println("a和b交换后的值a=\t"+ a +"b=\t" + b);//a=2,b=1
}
}
5.2、引用类型传参
引用数据类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。
示例代码:
public class Method8 {
public static void main(String[] args) {
Persons persons = new Persons();
persons.name = "tom";
persons.age = 45;
UpdatePerson updatePerson = new UpdatePerson();
updatePerson.Update(persons);
System.out.println("main方法中的年龄为:" + persons.age);
}
}
class Persons{
String name;
int age;
}
class UpdatePerson{
public void Update(Persons persons){
persons.age = 100;//修改对象属性
}
}
六、方法练习
6.1、编写一个类,有一个方法判断一个数是奇数还是偶数,返回Boolean。
示例代码:
public class Method5 {
public static void main(String[] args) {
CC cc = new CC();
boolean oud = cc.isOud(5);
if (oud == true){
System.out.println("这是一个奇数");
}else {
System.out.println("这是一个偶数");
}
}
}
class CC{
public boolean isOud(int num){
// if (num % 2 != 0){
// return true;
// } else {
// return false;
// }
//使用三元运算符
//return num % 2 != 0 ? true : false;
return num % 2 != 0;
}
}
6.2、根据行、列、字符打印对应行数和列数的字符。
示例代码:
public class Method6 {
public static void main(String[] args) {
DD dd = new DD();
dd.printChar(4,4,'#');
}
}
class DD{
public void printChar(int num1,int num2,char c){
for (int i = 1; i <=num1 ; i++) {
for (int j = 1; j <=num2 ; j++) {
System.out.print(c);
}
System.out.println();
}
}
}