《java基础内容复习五》方法的重载重写作用、栈堆内存、数组格式代码、递归简化代码实现、数据类型初始化默认值、jvm内存图划分

一、方法的重载


1、满足条件之一:方法名称相同、参数列表(类型)不同或个数不同,与返回值与修饰符无关
2、作用:多用于相似功能,减少名称的使用个数 使用方法的重载 jdk例子:println() 打印

package qf22020212;

public class Demo02 {
    
    public static void main(String[] args) {
        add1(1, 2);
        System.out.println(add1(1, 2, 4));
        System.out.println(add1(1.0, 2.0));
    }

    public static void add1(int a, int b) {
        System.out.println(a + b);
    }

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

    public static double add1(double a, double b) {
        return a + b;
    }
}

二、方法的重写


1、满足条件:方法名和参数列表必须相同、返回值、返回修饰符有关,即内容可以改变。 核心重写!
2、作用:其子类的使用父类的方法时,抽取共性方法,同时想添加点自己的东西,这时可以使用重写。如果想使用回父类的方法,使用super()调用父类原方法

package qf22020212;

public class Demo05 {
    public static void main(String[] args) {
        Animal animal1 = new Cat();
        Animal animal2 = new Dog();
        animal1.run(5);
        animal2.run(10);
    }
}

class Animal {
    public void run(int m) {
        System.out.println("走" + m + "米");
    }
}

class Cat extends Animal {
    @Override
    public void run(int m) {
        System.out.println("猫在走" + m + "米");
    }
}

class Dog extends Animal {
    @Override
    public void run(int m) {
        //调用父类的原方法
        super.run(m);
    }
}

3、注意点:
A.子类重写的方法返回值类型,只能是返回值类型本身以及其子类,不能超出父类型的范围
代码错误示范:

class Animal06{
    public String fun(){
        return "你好";
    }
}
class Cat06 extends Animal06{

    @Override
    public ~~Object~~  fun() {
        return super.fun();
    }
}

B.子类的访问修饰符不能严格于父类的访问修饰符

class Animal06{
    protected String fun(){
        return "你好";
    }
}
class Cat06 extends Animal06{

    @Override
    ~~private~~  String fun() {
        return super.fun();
    }
}

三、栈内存

package qf22020212;

public class Demo03 {
    public static void main(String[] args) {
        int m = add(20, 30);
        System.out.println(m);
    }

    public static int add(int n, int b) {
        return n + b;
    }
}

栈内存图

四、数组


1、概念:为什么使用数组,需要容器来存储相同数据类型的数据,数组是将数据进行有规律的进行存储,所以很容易赋值取值。
2、动态初始化格式:数组数据类型 [] 名称(内存地址) = new 数组数据类型[长度(开辟的内存空间长度)];
3、赋值取值方式:名称(内存地址)[索引/下标];
4、代码实现:

package qf22020212;

public class Demo04 {
    public static void main(String[] args) {
        int[] arr = new int[3];
        //数组的下标/索引是从零开始的
        arr[0] = 1;//赋值
        arr[1] = 2;
        arr[2] = 3;
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

5、数组的静态初始化:
A.格式1:int[] arr = new int[]{1,2,4,5};
B.格式2:int[] arr = {1,2,4,5};
静态初始化不能分开写如:
int[] arr;
arr = {1,2,4,5}(错误)

五、递归调用


1、含义:就是自己调用自己,设置某个结束条件

package qf22020212;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(new Demo01().add(100));
    }
    public int add(int n) {
        //三目运算符结合递归调用,实现简化1加到100
        return n == 1 ? 1 : n + add(n - 1);
    }
}

六、数据类型初始化默认值

1、整数类型:byte、short、int、long 默认都为0
2、浮点类型:float、double 默认都为0.0
3、布尔类型:boolean 默认为false
4、字符类型:char 默认为 ’ ’ 为空格字符
5、引用类型默认为:null 如:String

七、jvm内存划分

1、内存:编写的java的源代码文件是存储硬盘中,运行java的程序是在内存中硬盘中的数据是永久保存,内存中的数据都是临时保存
2、jvm 将内存划分为五块
A.:所有局部变量都是存在栈内存中,所有的方法在执行的时候,都会进栈,在栈内开辟内存空间
B.所有new的局部变量都会在堆内存中开辟空间 例如 new 对象、new数组
C.方法区所有的字节码文件claass类加载信息,静态的资源都是存储方法区中的
D.本地方法区:调用本地方法,java使用native的带调用c与c++的方法
例子:public native int hashCode();
E.程序计算器:与cpu有关,控制的程序的执行,控制具体的代码执行
图:
jvm内存划分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT阿生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值