java笔记

一、跳转语句

            Break
                在switch中,用于结束case分支
                 在循环中,用于结束循环,继续进行下一次循环
            Continue
                 跳过当前次循环,不执行循环体,继续进行下一次循环
            BreakOutfor
                 如果想要让break和continue操作对应的外层循环
                 需要对外层循环设置个名字,然后通过 break 名字 ; continue 名字; 来操作对应的循环
                名字可以随便取 

二、方法

    1.概念:一堆代码的集合,可用于完成一个特定的功能
        优点 : 代码复用,易维护,易扩展,灵活度提高
    
    2.方法声明:
        修饰符列表  返回值类型  方法名  (参数列表) { 方法体 }
            修饰符列表:可以有,可以没有,也可以有多个(需要用空格隔开),不区分顺序
                包括: public 、private、protected 只能写一个,也可以不写
                若用static修饰则为静态,不加就是成员
            返回值类型 : 可以写十一种数据类型中任意一种,如果没有返回值,则写void
            方法名:符合命名规则即可,小驼峰,强制与非强制
            参数列表 : 
         可以没有,可以有多个,多个用逗号隔开
          参数列表中的变量也是局部变量
            方法体 : 就是方法中的功能代码
        如果方法有返回值类型,则方法体内必须要有return语句,用于终止方法运行并返回结果
        返回值类型要与return后的返回值类型一致
        如果方法没有返回值类型,则return只能终止方法运行,不能返回数据
    3.方法分类
        成员方法 : 没有使用static修饰的方法
        静态方法 : 使用static修饰的方法
        构造方法 : 未接触
        例:
        // 无参无返回值的静态方法
         public static void m1(){
             System.out.println("m1方法执行了");
         }
            // 有参无返回值的静态方法
         public static void m2(int a){}
         // 多参无返回值的静态方法
         public static void m3(int a,int b , double c){}
         // 有返回值的静态方法
         public static int m4(int a,int b , double c){
             return 0;
         }
    4.方法调用
        静态方法 : 类名.方法名(参数)  同类中类名可以省略
        成员方法 : 对象.方法名(参数)
        方法不调用不执行,调用才会执行
    5.入参和出参
        形参 : 形容参数,方法声明时,指定的参数列表,称为形参
        实参 : 实际参数,调用方法时,传入的具体数据
        入参:传入的数据
        出参:传出的数据,即返回值
    6.方法重载
        定义:方法名相同,参数列表不同(个数不同、类型不同)、
        优点:功能相同,名字相同,方便记忆,代码美观
        例:
        public static void sum(double a, double b) {
            System.out.println(a + b);
        }
        public static void sum(long a, long b) {
            System.out.println(a + b);
        }
    7.方法调用时类型转换
        由低到高自动转换,例如,int会自动转换为long,且就近转换

三、内存分析
    

静态区/方法区
         用来保存运行时的class文件及静态属性和方法
         VM栈:是以栈数据结构为模型,开辟的一块空间
            先进后出
              栈帧 : 在栈内存中保存的数据空间
                例:如果VM栈就是弹夹的话, 栈帧就是弹夹中的每一个子弹
            栈底元素 : 第一个放入栈空间的栈帧
            栈顶元素 : 最后一个放入栈空间的栈帧
            压栈 : 把栈帧放到栈空间的过程,叫压栈
            弹栈 : 把栈帧在栈空间中弹出的过程,叫弹栈

            用于执行方法,每一个方法调用,就是一个栈帧
                 一般 main方法为栈底元素
            //main方法中只有
            public static void main(String[] args) {}
            方法调用就等于压栈,方法执行完成就等于弹栈
        堆内存:用于保存对象的(包括成员属性)
        本地方法栈:和VM栈一样,只不过用于执行本地方法

四、递归
     

 概念 : 递归就是在方法中调用当前方法,需要终止条件
      直接递归 : 当前方法中对自身方法进行调用
      间接递归 : A调用B,B调用A,A和B是两个方法
    经典错误:
    java.lang.StackOverflowError : 栈内存溢出,一般是因为一直压栈并没有弹栈导致,
        错误原因:无终止条件出现死循环或者压栈过多导致
    递归比较消耗内存且效率较低,当循环无法做到的时候就用递归
        例如树状结构或文件夹的嵌套关系,需要获取某文件夹下的所有文件(包含子文件)
    经典题型:斐波那契数列
        前两位是1 , 后续每一位都等于前两位的和
        1  1  2  3  5  8  13  21  34  55  89 ....
        出题方式:有一对兔子,从第三个开始,每个月生一对兔子,新生的兔子也是从第三个月开始,每个月生一对兔子
        ,问,15个月后,有多少对兔子
        public static int test(int n){//n在这个题中是月数
            count++;
            if (n == 1 || n == 2) {
                return 1;
            }else{
                return test(n-1) + test(n-2);
            }
        } 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值