Java中的方法和面向对象

一.方法

简单介绍

Java中的方法有点类似于C语言中的函数,都是先定义后调用。一个程序中有且只能有一个主函数public static void main(String[] args){ },在主函数中可以调用方法。方法也可以进行递归操作,下面我们用递归计算阶乘。

案例一

public class testMethed{
	public static void main(String[] args){
	long d1=System.currentTimeMillis();
	System.out.printf("%d的阶乘是:%s%n",10,facterial(10));
	long d2=System.currentTimeMillis();
	System.out.printf("递归用时%d"+"ms",d2-d1);
	}
	 static long facterial(int n){
		 if(n==1)
			 return 1;
		 else{
			 return n*facterial(n-1);
		 }
	 }
}

代码中的long d1=System.currentTimeMillis();long d2=System.currentTimeMillis();是计算程序的运行时间。d1-d2的值是递归调用所用时间。
结果表明递归的运行时间要大于一般的循环,递归一般都要消耗很多的内存和时间,所以对于简单的问题我们一般不适用递归的方法。

案例二

public class testprime {
	public static void main(String[] args){
		int count=0;
		outer:for(int i=1;i<100;i++){
			for(int j=2;j<=i/2;j++){
				if(i%j==0)
					continue outer;				
			}
			count++;
			System.out.print(i+" ");
			if(count%5==0)
				System.out.println();
		}
	}

}

上面这个程序是计算1到100之间的质数,规定要求一行输出5个数字(这个案例和方法关系不大,主要是continue的用法)

二.面向对象

这里我们直接说一下面向对象中内存的分配
附上代码讲解

class computer{
		String brand;
} 

public class objects {
	int id;
	String name;
	int age;
	computer comp;
	void play(){
		System.out.print("i love play games");
	}
	void study(){
		System.out.print("i also love study");
	}

	public static void main(String[] args){
	objects stu=new objects();
	computer comp1 = new computer();
	comp1.brand = "lenove";
	stu.comp = comp1;
	stu.study();
	System.out.println("  "+comp1.brand);
	
	}
	
	
}

下面是整个程序的运行原理图
这是程序的内存图内存空间分为三部分:堆、栈、方法区
程序以main为入口, 整个main函数存储在栈中。
所有带new的都在堆中
定义的类在方法区中

程序开始时栈中的main函数各个变量的值都是null的,随后对变量赋的值都保存在堆中,从而栈中的变量指向堆中对应的值。方法区就是整个程序定义的所有的类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值