J2SE学习笔记——第三章 Java面向对象

第三节 方法
3.1方法的定义及简单使用

public class people {
	/*
	 * 最简单的一个方法定义
	 */
	void speak() {
		System.out.println("我叫张三");
	}
    public static void main(String[] args) {
	people zhangsan=new people();
	zhangsan.speak();
}
}

/我叫张三/

public class people2 {
	//形参、入参
	void speak(String name) {
		System.out.println("我叫"+name);
	}
    public static void main(String[] args) {
	people2 zhangsan=new people2();
	zhangsan.speak("张三");
}
}

/我叫张三/

public class people3 {
	//形参、入参
	void speak(String name,int age,String...hobbies) {
		System.out.println("我叫"+name+",我今年"+age+"岁了");
		
		}
	
    public static void main(String[] args) {
	people3 zhangsan=new people3();
	zhangsan.speak("张三",23);
}
}

/我叫张三,我今年23岁了/

public class people4 {
	//返回类型
	int speak(String name,int age,String...hobbies) {
		System.out.println("我叫"+name+",我今年"+age+"岁了");
		System.out.print("我的爱好:");
		for(String hobby:hobbies) {
			System.out.print(hobby+" ");
		}
		//获取爱好的长度
		int totalHobbies=hobbies.length;
		return totalHobbies;
		
	}
    public static void main(String[] args) {
	people4 zhangsan=new people4();
	int n=zhangsan.speak("张三",23,"游泳","唱歌","跳舞");
	System.out.println("\n有"+n+"个爱好");
}
}

/我叫张三,我今年23岁了
我的爱好:游泳 唱歌 跳舞
有3个爱好
/

3.2方法的值传递和引用传递(重点)

/*
 * 三围类
 */
class SanWei{
	int b;//胸围
	int w;//腰围
	int h;//臀围
}
public class people5 {
	/*
	 * 报三围
	 * @param age 年龄
	 * @param sanwei
	 */
	void speak(int age,SanWei sanwei) {
		System.out.println("我今年"+age+"岁了,我的三围是:"+sanwei.b+","+sanwei.w+","+sanwei.h);
		age=24;
		sanwei.b=80;
	}
    public static void main(String[] args) {
    	people5 xiaoli=new people5();
    	int age=23;
    	SanWei sanwei=new SanWei();
    	sanwei.b=90;
    	sanwei.w=60;
    	sanwei.h=90;
    	//age传递的是值,sanweiz传递的是引用(地址),c里叫指针
    	xiaoli.speak(age,sanwei);
    	System.out.println(age);
    	System.out.println(sanwei.b);
    }
}

/我今年23岁了,我的三围是:90,60,90
23
80
/

3.3方法的重载
方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段。
定义:方法名称相同,但是参数的类型或者参数的个数不同。

public class Demo {
	int add(int a,int b) {
		System.out.print("方法一:");
		return a+b;
	}
	/*
	 * 方法的重载,参数个数不一样
	 */
	int add(int a,int b,int c) {
		System.out.print("方法二:");
		return a+b+c;
	}
	/*
	 * 方法的重载,参数的类型不一样
	 */
	int add(int a,String b) {
		System.out.print("方法三:");
		return a+Integer.parseInt(b);
	}
	public static void main(String[] args) {
		Demo demo=new Demo();
		System.out.println(demo.add(1, 2));
		System.out.println(demo.add(1,2,3));
		System.out.println(demo.add(1,"3"));
	}
}

/方法一:3
方法二:6
方法三:4
/

3.4 static静态方法与普通方法
static 方法:方法属于类本身; 调用方式:1,类名.方法;2,对象.方法
普通方法: 方法属于类的对象;调用方式:1,对象.方法

public class Demo2 {
	void fun1() {
		System.out.println("这是一个普通方法");
	}
	static void fun2() {
		System.out.println("这是一个静态方法");
	}
	public static void main(String[] args) {
		Demo2 demo2=new Demo2();
		//调用普通方法 对象,方法
		demo2.fun1();
		//调用静态方法 类名,方法
		Demo2.fun2();
		//调用静态方法 对象,方法
		demo2.fun2();
	}

}

/这是一个普通方法
这是一个静态方法
这是一个静态方法
/

3.5 递归方法

public class Demo3 {
	/*
	 * 非递归
	 */
	static long notDiGui(int n) {
		long result=1;
		for(int i=1;i<=n;i++) {
			result=result*i;
		}
		return result;
	}
	/*
	 * 递归
	 */
	static long diGui(int n) {
		if(n==1) {
			return 1;
		}
		return diGui(n-1)*n;
	}
	public static void main(String[] args) {
		System.out.println("非递归:"+Demo3.notDiGui(5));
		System.out.println("递归:"+Demo3.diGui(5));
	}
}

/非递归:120
递归:120
/

作业:
1,用递归实现斐波那契数列1、1、2、3、5、8、13、21、……
F(1) = 1, F(2) = 1
F(N) = F(N - 1) + F(N - 2)

public class Demo4 {
	static long diGui(int n) {
		if(n==1) {
			return 1;
		}
		if(n==2) {
			return 1;
		}
		return diGui(n-1)+diGui(n-2);
	}
	public static void main(String[] args) {
		System.out.println(Demo4.diGui(1));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值