java学习笔记003

  • 方法
    • 方法就是一段代码片段,并且这段代码片段可以完成某个特定的功能,并且可以被重复的使用
    • 方法是定义在类体当中的,在一个类体当中可以定义多个方法,方法编写的位置没有先后顺序,可以随意
    • 方法体当中不能再定义方法
    • 方法体由java语句构成,方法体当中的代码遵守自上而下的顺序依次执行
    • 方法怎么定义,语法结构
      [修饰符列表] 返回值类型 方法名(形式参数列表){
          方法体;
      }
      
      • 修饰符列表
        • 可选项,不是必须的
          • 目前统一写成:public static
          • 方法的修饰符列表当中有static关键字的话,怎么调用这个方法
            • 类名.方法名(实际参数列表);
      • 返回值类型
        • 什么是返回值?
          • 一个方法是可以完成某个特定功能的,这个功能结束之后大多数都是需要返回最终执行结果,执行结果可能是一个具体存在的数据。而这个具体存在的数据就是返回值。
        • 返回值类型
          • 返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值的具体类型
          • 类型:
            • java任意一种类型都可以,包括基本数据类型和所有引用数据类型
            • 也可能这个方法执行结束之后不返回任何数据。java中规定,当一个方法执行结束之后不返回任何数据的话,返回值类型位置必须编写: void关键字
            • 返回值类型若不是void,表示这个方法执行结束之后必须返回一个具体的数值。当方法执行结束的时候没有返回任何数据的话编译器报错。
            • 返回值类型是void的时候。在方法体当中不能编写 return 值; 这样的语句。**但是要注意可以编写 return;这样的语句 **
            • 只要带有return关键字的语句执行,return语句所在的方法结束【不是JVM结束,是return所在的方法结束】
        • 方法名
          • 只要是合法的标识符就行
          • 方法名最好见名知意
          • 方法名最好是动词
          • 方法名首字母要求小写,后面每个单词首字母大写
        • 形参列表
          • 形参是局部变量 int a;double b
          • 形参的个数可以是0-N个
          • 多个形参之间用逗号隔开
          • 形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字
          • 实参和形参列表必须满足:
            • 数量相同
            • 类型对应相同
    • 方法怎么调用
      • 方法只定义不去调用时不会执行的。只有在调用的时候才会执行
      • 语法规则:《方法的修饰符列表当中有static》
        • 类名.方法名(实参列表);这是一条java语句,表示调用某个类的某个方法,传递这样的实参
      • 方法的修饰符列表当中有static关键字,完整的调用方式是:类名.方法名(实参列表)。有时类名可以省略,什么情况下省略呢?
        • 方法1和方法2在同一个类体中的时候,方法1调用方法2,类名可以省略不写
    • 深入return语句
      • 带有return关键字的java语句只要执行,所在的方法执行结束
      • 在同一个作用域当中,return语句下面不能编写任何代码,因为这些代码永远都执行不到,所以编译报错
    • (String[] args) : 形式参数列表,其中String[] 是一种引用数据类型,args是一个局部变量的变量名。所以以下只有args这个局部变量的变量名是随意的.
      在一个java源文件当中只定义一个class,比较清晰
    • note:
      • 方法的返回值类型不是void的时候
        • 返回值类型不是void的时候:要求方法必须百分百的执行“return 值;”这样的语句来完成值的返回,没有这个语句编译器会报错
        • 一个方法有返回值的时候,当我们调用这个方法的时候,方法返回了一个值。对于调用者来说,这个值可以选择接收,也可以选择不接收。
        • 调用方法,方法名后边要带括号
        • 在返回值类型是void的方法当中使用 return;语句。return;语句出现在返回值为void的方法当中主要是为了终止方法的执行
      • 返回值类型是void,不能返回值
    • 方法在执行过程当中,在JVM中的内存是如何分配的,内存是如何变化的?
      • 方法只定义,不调用,是不会执行的。并且在JVM中也不会给该方法分配“运行所属”的内存空间
      • 在JVM内存划分上有这样三块主要的内存空间
        • 方法区内存
        • 堆内存:主要存储局部变量
        • 栈内存
    • 关于“栈”数据结构
      • 栈:stack,是一个数据结构
      • 数据结构反映的是数据存储形态
      • 数据结构是独立的学科,不属于任何编程语言的范畴,只不过在大多数编程语言当中需要使用数据结构
      • 常见的数据结构
        • 数组
        • 队列
        • 链表
        • 二叉树
        • 哈希表/散列表
        • 。。。。。。。
      • 关于栈
        • 栈帧永远指向栈顶元素
        • 栈顶元素处于活跃状态,其他元素静止
        • 术语
          • 压栈/入栈 push
          • 弹栈/出栈 pop
        • 栈数据结构存储数据的特点:
          • 先进后出,后进先出
      • 方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?
        • 方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区当中。所以JVM中的三个主要的内存空间中方法区内存最先有数据,存放了代码片段
        • 代码片段虽然在方法区内存当中只有一份,但是可以被重复调用。每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配。
          【栈内存中分配方法运行的所属内存空间】
        • 方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,方法执行结束之后,会给该方法分配的内存空间全部释放,此时发生弹栈动作。
          • 压栈:分配空间
          • 出栈:释放该方法的内存空间
        • 局部变量在“方法体”中声明。局部变量运行阶段内存在栈中分配
      • 重点:方法调用的时候,在参数传递的时候,实际上传递的是变量中保存的那个“值”传过去了。
    • 方法重载机制
      • 不采用的弊端:
        • 调用方法时的不方便,程序原需要记忆更多的方法,才能完成调用
        • 代码不美观
      • 采用的好处
        • 功能虽然不同,但是相似,可以让程序员使用这些方法的时候像在使用同一个方法一样,这样程序员以后编写代码比较方便,也不需要记忆太多的方法名,代码也会美观。
        • 前提:功能相似的时候,方法名可以相同。但是,功能不同的时候,尽可能让这两个方法的名字不同
      • 方法重载
        • 方法重载:overload
        • 什么时候考虑使用方法重载
          • 功能相似的时候,方法名可以相同。但是,功能不同的时候,尽可能让这两个方法的名字不同
        • 什么条件满足之后构成方法重载
          • 在同一个类当中
          • 方法名相同
          • 参数列表不同,只要有一个
            • 数量不同
            • 类型不同
            • 顺序不同
        • 方法重载和什么有关系,和什么没有关系
          • 方法重载和方法名+参数列表有关系
          • 方法重载和返回值类型无关
          • 方法重载和修饰符列表无关
    • 方法递归调用
      • 什么是递归
        • 方法自身调用自身
      • 递归是很耗费栈内存的,递归算法可以不用的时候尽量别用
      • 会出现栈内存溢出错误— java.lang.stackoverflowerror。只有一个结果,就是JVM停止工作
      • 递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误
      • 递归即使有了结束条件,即使结束条件是正确的,也可能会发生栈内存溢出错误,因为递归的太深了
      • eg
        • 求和运算,阶乘运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__BC__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值