方法个人笔记

方法

   语法机制:[修饰符列表] 返回值类型 方法名(形参列表){
                            方法体;
	  }

   修饰符列表先统一写成:public static
   
   返回值类型 :1.基本数据类型
                 2.引用数据类型

   什么叫返回值:方法结束后的结果,一般会是一个数据。
   方法就是为了完成某个特定的结果。

1.3 当一个方法结束 不返回任何类型时,也不能为空,用void。
1.4 方法必须调用才能执行。
	类名.方法名(实参列表);

计算两个int类型的 商。

public static int Shang(int a,int b){
	int jieguo = a/b;
	return jieguo;//或者直接 return a/b;
}

    无需返回值可以这样写
public static void divided(int x,int y){
	System.out.println(x/y);
}

main 方法中调用。

类名.divided(10,20);
实参和形参 类型和个数 一一对应。

 1.5 接收返回值
     当一个方法有返回值时,也可以不接收,但是没有意义。
 返回后内存马上释放,因为没有接收。

 public class PrintTest{
	public static void main(String[] args){
		print();
	
	}


 public static void print(){
	System.out.println("输出一个语句");
 }
}

方法位于同一个类下,调用时 类名可以省略。
但是 不同的类,

注意:调用程序 不一定得在main 方法中,其他方法也可以调用。

public class Test{
public static void main(String[] args){
	m();
}


public static void m(){
	n();
}

public static void n(){
	m();
}

public static void l(){
	m();
	n();
	l();
	return;
}

}

方法体中 代码执行顺序 依次执行,自上而下。main方法其实也只是一种普通的方法。
只不过main 方法是jvm中的,作为程序的入口。

2.break 和 return 的区别。

public class ForTest{
	public static void main(String[] args){
		for(int i = 1;i <= 10;i++){
			if(i == 3){
			break;//终止for循环
			return ;// 终止的是方法,执行了的话程序结束,不会输出“cao”。
			}
		System.out.println(i);
		}
	System.out.println("cao");
	}
}

break 语句 只能使用在 switch 分支 还有循环中。

3.public static int m(){
boolean flag = true;
if(flag){
return 1;
}
}
编译器只负责编译,编译器只知道 flag 是boolean 类型,不能确定flag
是真是假,故而认为缺少返回语句。编译器不负责运行。

可以修改为 :if(flag){
             return 1 ;
	     }else{
	     return 0;
	     }
因为带有else 分支的一定会保证 有个·语句执行。

也可以修改为:if(flag){
		return 1;
		}
		return 0;

	也可以使用三目运算符
	return flag ? 1:0 ;

return 语句一旦执行 方法结束。
所以在同一个作用域下 return 语句下方 不可以写代码。

****4、
public class MethodTest{
public static void main(String[] args){

int f = m(true);
System.out.println(f);
}
public static int m(boolean flag){
	return flag ? 1 : 0;
}

}

5、jvm 三块主要内存区:堆 栈 方法区

1.方法区:类加载器(classloader)将硬盘中的xxx.class字节码文件装载到jvm
当中的时候,会将字节码文件存放到方法区中。

也就是方法区存放的是 代码片段。

因为类 需要加载,所以方法区最先有数据。

2.方法:在调用时会在 栈(stack)内存中分配空间。

数据结构 通常 是指存储数据的容器。
一种非常经典的数据结构(stack)。

压栈(push)
出栈(pop)

栈顶元素(栈帧 永远指向栈顶元素):处于栈顶部元素 具有活跃权。
先进后出

内存变化:
程序:
     public class StackTest{
     	public static void main(String[] args){
	int a = 1;
	m1(a);
	m2(a);
	m3(a);
	
	}

	public static void m1(int a){
	System.out.println();
	m2(a);
	System.out.println();
	}
	
	public static void m2(int a){
	System.out.println();
	m3a(a);
	System.out.println();
	}
	
	public static void m3(int a){
	System.out.println(1);
	System.out.println(2);
	
	}
     }

     局部变量只在方法体中 有效。方法结束后 局部变量的内存就释放了。也就是弹栈。

     注意:方法不调用是不会在栈内存中开辟空间的,调用就是压栈。

     栈存储了方法运行所需要的空间,还会存储方法的局部变量。

     复习:
     方法是为了完成某个特定功能并且可以重复利用的代码块。
     方法出现让代码有了很强的复用性。

     一个方法就是一个独立的功能。
     栈:栈帧 永远指向栈顶元素(具有活跃权)

     编写一个方法,求整数n 的阶乘。

     int a = jiecjeng(5);

     public static int jieCheng(int n){
     	int jieguo = 1;
	for(i = 1;i <= n;i++){
		jieguo = jieguo*i;
		
	}
	return jieguo;
		
     }

     public static int jieCheng(int n){
     	int result = 1;
	for(i=n;i>1;i--){
		result*=n;
	}
	return result;
     }

     编写一个方法,输出大于某个正整数n的最小质数。

     思路:给正整数n 从1 开始往上加,如果刚好加到那个数 是除了1 和 他本身
     都么有其他 因子的数字,则 return 返回。

     
     

     public static int max(int n){
     	if(n==1){
		return 2;
	}else if(n!=1){
		for(i = 1;i<n;i++){
			for(j=2;j<n;j++){
			if((i+n)%j!=0){
				return (i+n);
			}

			}
		}
		
	}

	}
	
     }

     定义一个方法,判断他是否为质数。

     public static boolean isZhiShu(int num){
	for(i = 2;i < num;i++){
		if(num%i==0){
		return false;
		}
	}
	return true;
     }


     public static void printMinZhiShu(int n){

     	while(true){
	 n++;
	 boolean flag = isZhiShu(n);
	 if(flag){
		System.out.println(n);
		break;
	 }
	
	}

     }

6、调用一个求和方法

public class Sum{
	public static void main(String[] args){
		System.out.println(sum(10,20));
	}

	public static int sum(int a,int b){
		return a+b;
	}
}


boolean flag = m();
if(flag){
	System.out.println("真的");
}

if(m()){
	System.out.println("真的");

}
     这两种方法其实是一样的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值