java中的方法

java中的方法


1、方法

  • 1.1 什么是方法?
    (method 在c语言中又被称为函数)就是可以重复利用完成某个特定功能的代码片段。

  • 1.2 定义

    • [] 中括号,里面的内容不是必须的,是可选的。
    • 语法机制:[修饰符列表] 返回值类型 方法名(形参列表){
      方法体;
      }
    • 修饰符列表先统一写成: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);
      }
      
      
      
      //当一个方法有返回值时,也可以不接收,但是没有意义。返回后内存马上释放,        因为没有接收。
      
       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、编译与运行

    • 编译器只负责编译,编译器只知道 flag 是boolean 类型,不能确定flag是真是假,故而认为缺少返回语句。编译器不负责运行。

    • public static int m(){
      	boolean flag = true;
      	if(flag){
      	return 1;
      	}
      }
      
    • return 语句一旦执行 方法结束。所以在同一个作用域下 return 语句下方 不可以写代码。

  • **4、jvm 三块主要内存区:堆 栈 方法区 **

    • 1.方法区:类加载器(classloader)将硬盘中的xxx.class字节码文件装载到jvm当中的时候,会将字节码文件存放到方法区中。也就是方法区存放的是 代码片段。因为类需要加载,所以方法区最先有数据。

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

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

      • 压栈(push)

      • 出栈(pop)

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

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

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

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


  • 5、方法重载

      • 1.整齐 美观

      • 2.功能相似,可以让方法名字相同

    • java 语言怎么进行方法区分?

      • 答:先从方法名区分,再从参数类型进行区分。
    • 3、什么时候使用重载?也就是功能相似,方法名相同,参数类型不同(注意要在同一个类中)

      • 答:同一个类中,如果功能1和功能2 相似,可以考虑 方法名一致。
      • 三个条件:1.同一个类
        2.功能相似
        3.参数列表不同
      • 注意:方法的返回值类型和重载无关。与修饰符列表也没有关系,只与参数列表相关。
      • 而且println 肯定重载了,参数类型随便传。
  • 6、方法递归

    • 递归没有结束条件的时候,会发生栈内存溢出。(stackoverflowerror)

    • 假设结束条件是对的,因为可能递归太深了,依然会炸栈。
      能用循环 尽量用循环,因为循环效率高,耗费内存小。可能会导致jvm退出。但极少情况下,有些程序不用递归无法实现。

    • //使用递归 方法 编写 1-n 的和。
      public static int sum(int n){
      	if(n == 1){
      	return 1;
      	}
      	return n + sum(n-1);
      }
      //使用递归的方法计算n 的阶乘。
      public static int result(int n){
      	if(n==1){
      	return 1;
      	}
      	return n * result(n-1);
      }
      

7、面向对象和面向过程的区别。

  • c 语言:完全面向过程(因果关系)。没有对象的概念,只有步骤。耦合度 :太高,
    扩展性 :太低。(关注的是步骤)

    • java: 完全面向对象。
    • 面向对象 就是将世界分成不同的单元,然后每一个单元都实现成对象,然后给个环境
      驱动一下,让对象之间协作起来形成一个系统。

    • OOA:分析
      OOD:设计
      OOP:编程 OO:面向对象

扩展性 :太低。(关注的是步骤)

    • java: 完全面向对象。
    • 面向对象 就是将世界分成不同的单元,然后每一个单元都实现成对象,然后给个环境
      驱动一下,让对象之间协作起来形成一个系统。

    • OOA:分析
      OOD:设计
      OOP:编程 OO:面向对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值