Java面试-基础篇Part*2

话不多说,我们直接上干货

  • Java的基本数据类型(面试率⭐⭐⭐   难度⭐)

Java有4类8种数据类型

一、整型

  1. byte:8位有符号整数,范围为-128到127。

  2. short:16位有符号整数,范围为-32768到32767。

  3. int :32位有符号整数,范围为-2147483648到2147483647。

  4. long:64位有符号整数,范围为-9223372036854775808到9223372036854775807。

二、浮点型

  1. float:32位浮点数,通常表示单精度浮点数。

  2. double:64位浮点数,通常表示双精度浮点数。

三、字符型

  1. char:16位Unicode字符,表示一个字符。

四、布尔型

  1. boolean:布尔类型,只有两个值:true和false。

  • 枚举类型(面试率⭐⭐⭐   难度⭐⭐)

一、什么是枚举类型

枚举类型是一种特殊的数据类型,用于表示一组具有特定顺序的有限数目的情况或值。枚举类型的值是确定的,而且是唯一的。枚举类型的定义通常包含一系列枚举值,每个枚举值都有一个唯一的标识符。在许多编程语言中,都可以使用关键字enum来定义枚举类型。例如:

enum Color {
    RED,
    GREEN,
    BLUE
}

上面的代码定义了一个名为Color的枚举类型,包含了三个枚举值:RED、GREEN和BLUE。可以使用枚举类型的枚举值作为常量使用,也可以将枚举类型赋值给变量。例如:

Color c1 = Color.RED;
Color c2 = Color.GREEN;

枚举类型在编程中常用于表示一组相关的固定值,可以提高代码的可读性和可维护性。

二、枚举和类的区别

枚举和类直接的关系
枚举
定义方式使用enum关键字进行声明使用class关键字进行声明
继承关系不能继承可以继承其他类
实例化枚举常量是枚举类型的实例可以创建类的实例对象
可修改性枚举常量是不可修改的类的属性和状态可以被修改
字段可以有自己的字段可以有自己的字段
方法可以有自己的方法可以有自己的方法
唯一性每个枚举常量是唯一的可以创建多个类的实例对象
比较使用‘==’进行比较可以通过重写equals()方法进行比较
用途表示一组相关的常量封装数据和行为,实现复杂的功能

总结:枚举和类是两种不同的概念,枚举用于表示一组相关的固定值,而类用于表示对象的属性和行为。它们的使用场景和功能都有所不同

三、枚举可以修改吗?

枚举类型在定义后是不可以修改的,但是可以添加新的枚举值。可以通过enum关键字重新定义枚举类型,并添加新的枚举值,也可以使用addEnumConstant方法动态地添加枚举值。例如:

public enum Color {
    RED, GREEN, BLUE;
}

Color.newEnumConstant("YELLOW") = Color.YELLOW;

以上代码定义了一个枚举类型Color,包含了RED、GREEN和BLUE三个枚举值。然后使用newEnumConstant方法动态地添加了一个新的枚举值YELLOW。

  • == 和 equals(面试率⭐⭐⭐   难度⭐)

一、== 和 equals的区别?

在Java中,==操作符用于比较两个对象的引用是否相同,即比较的是对象的内存地址。而equals()方法用于比较两个对象的内容是否相同。默认情况下,对于Object类来说,==操作符和equals()方法是等价的,但是很多类都会重写equals()方法来定义自己的比较规则,因此在使用时需要注意。  需要注意的是,对于基本数据类型,==操作符比较的是值,而不是引用。

String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");

System.out.println(str1 == str2); // true,因为str1和str2是常量,使用同一个引用
System.out.println(str1 == str3); // false,因为str1和str3是不同的引用,指向不同的对象
System.out.println(str1.equals(str2)); // true,因为str1和str2的内容相同
System.out.println(str1.equals(str3)); // true,因为str1和str3的内容相同

在代码中,首先创建了三个字符串对象,其中str1和str2是常量,使用同一个引用,所以相等;str3是通过new关键字创建的,所以是一个新的引用,不相等。但是因为equals方法是重载的,所以两个字符串对象的内容相同,equals方法返回true。因此,==操作符比较的是引用,而equals方法比较的是对象的内容。

二、字符串比较是用equals还是==?为什么?

字符串比较应该使用equals方法,而不是使用==操作符。  ==操作符比较的是两个字符串对象的引用是否相同,即是否指向同一个内存地址;而equals方法比较的是两个字符串对象的内容是否相同。  当我们想要比较两个字符串是否相等时,应该使用equals方法,因为只有内容相同才被认为是相等的字符串。而引用相同的字符串并不一定意味着内容相同。  以下是使用equals方法比较字符串的示例代码:

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1.equals(str2));  // 输出true,因为str1和str2的内容相同
System.out.println(str1.equals(str3));  // 输出true,因为str1和str3的内容相同
System.out.println(str2.equals(str3));  // 输出true,因为str2和str3的内容相同

System.out.println(str1 == str2);  // 输出true,因为str1和str2是常量,使用同一个引用
System.out.println(str1 == str3);  // 输出false,因为str1和str3是不同的引用,指向不同的对象

所以,对于字符串比较,应该使用equals方法。

  • this 和 super有什么区别(面试率⭐⭐   难度⭐⭐)

this和super都是Java中的关键字,用于引用类的成员变量或调用成员方法,但它们的使用场景和作用有所不同。  

1. this关键字:

- 用于引用当前对象的成员变量或调用当前对象的成员方法。

- 在成员方法中,this用于区分当前对象的成员变量和局部变量,或者区分同一个类的两个成员方法的参数。

- 在构造函数中,this用于调用当前对象的同名构造函数,用于在同一个对象的构造过程中进行调用。

- 当成员方法为静态方法时,无法使用this关键字,因为静态方法没有对象意识,无法访问非静态成员变量和调用非静态方法。

 2. super关键字:

- 用于引用父类的成员变量或调用父类的成员方法。

- 在子类的构造函数中,super用于调用父类的同名构造函数,用于在子类的构造过程中进行调用父类的构造函数。

- 在子类的成员方法中,super用于调用父类的成员方法或重写父类的方法。  

总结:

- this用于引用当前对象的成员变量或调用当前对象的成员方法,super用于引用父类的成员变量或调用父类的成员方法。

- this用于区分同一个对象的成员变量和局部变量,super用于调用父类的构造函数和成员方法。

- 当成员方法为静态方法时,无法使用this关键字,super必须在子类的方法中使用。

- this和super必须在类的成员方法中使用,而在构造函数中必须作为第一个词使用。

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public class Student extends Person {
    private String major;

    public Student(String name, String major) {
        super(name);
        this.major = major;
    }

    @Override
    public String getName() {
        return super.getName();
    }

    public String getMajor() {
        return major;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值