面试-盛视科技股份有限公司湖北分公司

文章探讨了Java中的多态使用场景及其优缺点,区分了重载和重写的概念,以及MySQL中CHAR和VARCHAR的存储差异。此外,还介绍了Redis的五种数据类型和Java语言的基础特性。
摘要由CSDN通过智能技术生成

1.多态的使用场景和优缺点

// 定义动物类
class Animal {
    public void makeSound() {
        System.out.println("动物发出声音");
    }
}

// 定义狗类
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }
}

// 定义猫类
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵");
    }
}

public class Main {
    public static void main(String[] args) {
        // 使用多态,父类引用指向子类对象
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        
        // 调用相同的方法,会根据对象的实际类型调用对应的方法
        show(animal1); // 输出:汪汪汪
        show(animal2); // 输出:喵喵喵
    }
    public static void show(Animal p){
        p.makeSound();
     }
}

优点:便于扩展和维护
例如:

Person person = new Student();
person.work();  //  多态new出来的对象调用woek方法

但是当业务发生了变化时,我需要一个新对象【可以是老师、助教等,但是必须是Person的子类】 只需要修改 new Student();即可
缺点:不能使用子类的特定功能。

重载和重写的区别

在Java中,重载(overloading)和重写(overriding)是面向对象编程中两个重要的概念,它们有着不同的含义和用法。

重载(Overloading):
重载指的是在同一个类中定义多个方法,它们具有相同的方法名,但是参数列表不同(包括参数的类型、个数、顺序)。
编译器根据方法的参数列表来决定调用哪个版本的方法。
重载方法之间可以有不同的返回类型,但是不能仅仅通过返回类型的不同来重载方法。
重载方法可以发生在同一个类中,也可以发生在父类和子类之间。
示例:

同一个类中
public class OverloadExample {
    public void print(int num) {
        System.out.println("Printing integer: " + num);
    }

    public void print(String str) {
        System.out.println("Printing string: " + str);
    }
}


父类和子类之间
class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    public void sound(String bark) {
        System.out.println("Dog barks: " + bark);
    }
}

重写(Overriding):
重写指的是子类重新定义(覆盖)了父类中的某个方法,方法名、参数列表和返回类型必须与父类中被重写的方法完全相同。
重写发生在子类和父类之间,用于实现多态性。
在运行时,实际调用的是子类重写后的方法,而不是父类的方法。
示例:

class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

在这个示例中,Dog 类重写了 Animal 类的 sound() 方法。

总结:

重载用于实现同一类中的方法多态性,而重写用于子类和父类之间的方法多态性。
重载方法的决定在编译时进行,而重写方法的决定在运行时进行。
重载方法的方法签名(包括方法名和参数列表)必须不同,而重写方法的方法签名必须相同。
重写方法不能降低父类方法的访问权限,但可以提高它的访问权限,比如从 protected 提升到 public。

2.MySQL表中char和varchar的区别

1.存储方式:
●CHAR: 固定长度的字符类型。当你创建一 个CHAR 类型的列时,你需要指定它的长度,如果存储的字符
长度小于指定的长度,MySQL 会用空格来填充,直到达到指定的长度。
●VARCHAR :可变长度的字符类型。它只会存储实际的字符数据,不会填充额外的空格。
2.存储空间:
●CHAR :固定长度,无论存储的实际数据长度是多少,都会占用指定长度的存储空间。
●VARCHAR :可变长度,它会根据存储的实际数据长度来分配存储空间,实际存储的数据长度加上一个字节
用于存储长度信息。
3.性能影响:
●CHAR :由于它是固定长度的,对于定长的数据查询效率会更高一些,但是对于变长数据会浪费一 些存储
空间。
●VARCHAR: 由于它是可变长度的,对于变长的数据会更加节省存储空间,但是在查询时可能会稍微慢一
些。
4.选择:
●如果你的数据是固定长度的,或者长度变化不大,可以选择CHAR 类型。
●如果你的数据长度变化较大,或者大多数情况下存储的是较短的字符串,可以选择VARCHAR 类型。
总的来说,CHAR 适合存储定长数据,而VARCHAR 适给存储变长数据。

redis的五种常见数据类型

redis常用的五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合);
在这里插入图片描述

3.MySQL表中char和varchar的区别

在MySQL中,CHAR 和 VARCHAR 都是用来存储字符数据的数据类型,它们之间有一些区别:

  1. 存储方式:
    CHAR:固定长度的字符类型。当你创建一个 CHAR 类型的列时,你需要指定它的长度,如果存储的字符长度小于指定的长度,MySQL 会用空格来填充,直到达到指定的长度。
    VARCHAR:可变长度的字符类型。它只会存储实际的字符数据,不会填充额外的空格。

  2. 存储空间:
    CHAR:固定长度,无论存储的实际数据长度是多少,都会占用指定长度的存储空间。
    VARCHAR:可变长度,它会根据存储的实际数据长度来分配存储空间,实际存储的数据长度加上一个字节用于存储长度信息。

  3. 性能影响:
    CHAR:由于它是固定长度的,对于定长的数据查询效率会更高一些,但是对于变长数据会浪费一些存储空间。
    VARCHAR:由于它是可变长度的,对于变长的数据会更加节省存储空间,但是在查询时可能会稍微慢一些。

  4. 选择:
    如果你的数据是固定长度的,或者长度变化不大,可以选择 CHAR 类型。
    如果你的数据长度变化较大,或者大多数情况下存储的是较短的字符串,可以选择 VARCHAR 类型。
    总的来说,CHAR 适合存储定长数据,而 VARCHAR 适合存储变长数据。

4.讲讲你对java语言的理解

Java是一种高级编程语言,最初由Sun Microsystems于1995年发布。它是一种面向对象的语言,具有跨平台的特性,因此被广泛用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序和企业级应用程序。

以下是我对Java语言的一些理解:

  1. 面向对象(OO)特性:Java是一种纯面向对象的编程语言,支持封装、继承和多态等特性。这使得Java程序具有模块化、可维护性和可扩展性。
  2. 跨平台性:Java的“编写一次,到处运行”(Write Once, Run Anywhere,WORA)的特性使得Java程序可以在不同的操作系统上运行,只需要在目标平台上安装对应的Java虚拟机(JVM)即可。
  3. 内存管理:Java具有自动内存管理机制,即垃圾回收器会自动回收不再使用的内存,从而减少了内存泄漏和野指针等问题。
  4. 强类型语言:Java是一种强类型语言,所有变量在使用之前必须声明其类型,这有助于提高代码的可读性和稳定性。
  5. 异常处理:Java通过try-catch-finally语句提供了强大的异常处理机制,可以有效地处理程序中的异常情况,提高了程序的健壮性。
  6. 多线程支持:Java提供了多线程编程的支持,可以方便地创建和管理多个线程,实现并发执行,从而提高程序的性能和响应能力。
  7. 丰富的类库:Java提供了丰富的标准类库(Java API),包括用于网络通信、数据库连接、图形界面开发等方面的类和接口,开发人员可以直接使用这些类库来加速开发过程。
  8. 开发工具支持:Java拥有众多成熟的集成开发环境(IDE),如Eclipse、IntelliJ IDEA和NetBeans等,这些工具提供了强大的功能,如代码自动完成、调试、代码重构等,大大提高了开发效率。

总的来说,Java是一种功能强大、灵活性高、跨平台的编程语言,适用于各种类型的应用开发,是目前世界上最流行的编程语言之一。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值