整理好了!2024年最常见 100 道 Java基础面试题(十三)

上一篇地址:整理好了!2024年最常见 100 道 Java基础面试题(十二)-CSDN博客

二十五、char 类型可以存储中文汉字吗?

在Java中,char类型用于存储字符,并且它是16位的,这使得它能够存储Unicode字符集中的大多数字符,包括中文汉字。

char 类型和Unicode

  1. Unicode字符集: Unicode是一个国际标准,它为世界上大多数的文字系统提供了一个唯一的码位。Unicode字符集包含了中文、日文、韩文等语言的字符,以及其他多种文字和符号。

  2. char 类型的容量: 由于char类型是16位的,它能够表示2^16,即65536个不同的字符。Unicode字符集中的基本多文种平面(BMP)包含了大多数常用字符,包括中文汉字,其码位完全在char类型的表示范围内。

  3. Java对Unicode的支持: Java在设计之初就支持Unicode字符集,特别是在JDK 1.2之后,Java平台全面支持Unicode,所有的字符处理都基于Unicode。

  4. 存储中文汉字: 中文汉字在Unicode字符集中通常占用一个码位,大多数中文汉字的码位在char类型的表示范围内。因此,Java中的char类型完全可以存储一个中文汉字。

示例

public class CharExample {
    public static void main(String[] args) {
        char chineseChar1 = '汉';
        char chineseChar2 = '字';
        System.out.println("Chinese characters: " + chineseChar1 + chineseChar2);
    }
}

在这个示例中,两个中文汉字“汉”和“字”都被存储在char类型的变量中,并且可以通过字符串连接的方式进行输出。

补充说明

虽然char类型可以存储中文汉字,但在某些情况下,特别是在处理包含多种语言文字的文本时,可能会遇到超出BMP的字符(如一些表情符号或较少使用的字符),这些字符在Unicode中的码位被称为“辅助平面”字符,它们需要通过一对char(称作代理对)来表示。Java的StringStringBuilderStringBuffer类都能够正确处理这些辅助平面字符。

总结

char类型在Java中是用于存储Unicode字符的,由于其16位的存储能力,完全可以存储中文汉字以及其他大多数语言的字符。Java对Unicode的全面支持使得处理国际化文本变得更加方便和一致。

二十六、重载和重写有什么区别?

在面向对象编程中,重载和重写是两个不同的概念,它们都与方法的实现和调用有关,但它们的含义和应用场景截然不同。

重载(Overloading)

  1. 定义: 重载是在同一类中定义多个同名方法,但它们的参数列表(参数的数量或类型)不同。

  2. 目的: 重载允许开发者为类创建多个行为相似但操作不同参数的方法。

  3. 应用场景

    • 不同数量的参数:如 public int calculate(int a, int b) 和 public int calculate(int a)
    • 不同类型的参数:如 public void print(Object obj) 和 public void print(String str)
    • 不同顺序的参数(配合可变参数):如 public int sum(int a, int b) 和 public int sum(int... numbers)
  4. 实现细节: 编译器在调用重载方法时,会根据方法签名(方法名和参数列表)来决定调用哪个方法。

重写(Overriding)

  1. 定义: 重写是子类中定义一个与父类中具有相同方法签名的方法。

  2. 目的: 重写允许子类改变从父类继承来的方法的行为。

  3. 应用场景: 当子类需要有与父类不同的行为时,子类可以重写父类的方法。

  4. 实现细节

    • 重写的方法必须具有相同的方法名和相同的参数列表。
    • 重写的方法不能有比父类方法更严格的访问权限(例如,不能将父类的公共方法重写为私有)。
    • 如果父类方法被声明为 final,则不能被重写。

主要区别

  • 作用范围:重载是编译时多态,作用于同一个类中;重写是运行时多态,作用于继承关系中的不同类。
  • 参数列表:重载要求方法必须有不同的参数列表;重写要求方法必须有相同的参数列表。
  • 返回类型:重载的方法可以有不同返回类型,但建议遵循一致的返回类型原则;重写的方法必须保持与被重写方法相同的返回类型。
  • 访问权限:重载的方法可以改变访问权限;重写的方法的访问权限不能比被重写方法的更严格。
  • 构造方法:不能重载构造方法(因为构造方法的名字是类名),但可以重写。

示例

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");
    }
}

class Test {
    public void display(int a) {
        System.out.println("One argument");
    }

    public void display(int a, int b) {
        System.out.println("Two arguments");
    }
}

在这个示例中,Dog 类重写了 Animal 类的 sound 方法,而 Test 类的 display 方法被重载了两次,分别接受一个和两个 int 参数。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值