JAVA基础阶段面试题(01)

1、在JAVA中,如何跳出当前多重嵌套循环?

        可以使用带有标签的break语句来跳出多重嵌套循环:

 out:
 for (int i = 0; i < 5; i++) {
  for (int j = 0; j < 5; j++) {
      System.out.println("循环");
      break out;
  }
 }

2、JDK和JRE有什么区别?

        JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java开发中常用的两个概念,它们之间有以下区别:

        JDK(Java Development Kit):JDK是Java开发工具包,是开发一个java程序的最小环境。它包含了Java的开发工具,例如编译器(javac)、调试器(jdb)以及各种Java的类库等。JDK是面向Java开发人员的,提供了编写、编译、调试和运行Java程序所需的全部工具和库。

        JRE(Java Runtime Environment):JRE是Java运行环境,是运行一个java程序的最小环境。它包含了Java虚拟机(JVM)和Java类库,用于支持Java程序的运行。JRE适用于那些只需要运行Java程序而不需要进行Java开发的用户。

     

        简而言之,如果你需要编写和运行Java程序,你需要安装JDK;如果你只需要运行Java程序而不进行开发,那么只安装JRE即可。

3、=、==、和equls的区别

= :赋值运算符,用于将右侧的数值或引用,赋给左侧的变量。例如: 

int x = 10;

== :比较运算符,用于比较两个基本数据类型的值是否相等,或者比较两个对象引用是否指向同一块内存地址。对于基本数据类型,比较的是它们的数值;对于对象引用,比较的是它们在内存中的地址。例如:

 int a = 5;
 int b = 5;
 if (a == b) {
  System.out.println("a 等于 b");
 }

equals() :是 Object 类的一个方法,用于比较两个对象的内容是否相等。在Object 类中,equals() 方法的默认实现是使用== 运算符来比较两个对象的引用地址,但是许多类(如 String、Integer 等)会重写 equals() 方法,以便根据对象的内容进行比较。例如:

String str1 = new String("Hello");
 String str2 = new String("Hello");
 if (str1.equals(str2)) {
  System.out.println("str1 和 str2 的内容相等");
 }

总结一下:

        = 是赋值运算符;

        == 是比较运算符,对于基本数据类型比较值,对于对象引用比较地址;

        equals() 是用于比较对象内容的方法,一般需要根据具体的类来重写实现。

4、string是基础数据类型吗?基础的数据类型有哪些?

        在 Java 中,String 不是基本数据类型,而是引用数据类型。在Java中,基本数据类型有8种(整数类型4种,浮点类型2种,字符类型1种,布尔类型1种),即以下几种:

类型byteshortintlongfloatdoublecharboolean
占用字节数12484821
  • 整数类型:

        byte:8 位,有符号,取值范围为 -128 到 127。

        short:16 位,有符号,取值范围为 -32768 到 32767。

        int:32 位,有符号,取值范围为 -2147483648 到 2147483647。

        long:64 位,有符号,取值范围为 -9223372036854775808 到 9223372036854775807。

  • 浮点类型:

        float:32 位,单精度浮点数,取值范围为1.4E-45到3.4028235E38(16进制)。

        double:64 位,双精度浮点数,取值范围为4.9E-324到1.7976931348623157E308。

  • 字符类型:

        char:16 位,无符号整数,用于表示 Unicode 字符,取值范围为0到65535。

  • 布尔类型:

        boolean:用于表示真或假,只有两个取值:true 或 false。

5、如何实现数组和List之间的转换?

数组转 List

// 使用 Arrays 类的 asList() 方法
 String[] array = {"apple", "banana", "orange"};
 List<String> list = Arrays.asList(array);
 ​
 // 或者使用 ArrayList 的构造函数
 String[] array = {"apple", "banana", "orange"};
 List<String> list = new ArrayList<>(Arrays.asList(array));

List转数组

 // 使用 toArray() 方法
 List<String> list = new ArrayList<>();
 list.add("apple");
 list.add("banana");
 list.add("orange");
 String[] array = list.toArray(new String[0]);

注意

  • 当将数组转换为 List 时,使用 Arrays.asList() 可以直接将数组转换为固定长度的 List。如果使用 ArrayList 的构造函数,会创建一个可变长度的 List。

  • 当将 List 转换为数组时,需要使用 toArray() 方法,并传入一个指定类型和长度的空数组作为参数。如果传入的数组长度小于 List 的大小,将创建一个新的数组来存储元素。

6、Java 中操作字符串都有哪些类?它们之间有什么区别?

String 类

  • String 类是 Java 中最常用的字符串类。

  • String 对象是不可变的,一旦创建,就不能被修改。每次对字符串进行修改时,都会创建一个新的 String 对象。

  • String 类提供了许多用于操作字符串的方法,如拼接、截取、查找、替换等。

StringBuilder 类

  • StringBuilder 是可变的字符串类,可以进行动态的字符串操作。

  • StringBuilder 对象可以直接修改,而不需要创建新的对象。

  • StringBuilder 类提供了许多用于修改字符串的方法,如拼接、插入、删除、反转等。

StringBuffer 类

  • StringBuffer 也是可变的字符串类,与 StringBuilder 类似,但是它是线程安全的。

  • 当多个线程需要共享一个字符串缓冲区时,应使用 StringBuffer。

  • StringBuffer 类提供了与 StringBuilder 类相似的方法,用于修改字符串。

主要区别

  • String 是不可变的,任何对字符串的修改都会创建一个新的对象;StringBuilder 和 StringBuffer 是可变的,可以直接修改字符串内容。

  • StringBuilder 是非线程安全的,适用于单线程环境;StringBuffer 是线程安全的,适用于多线程环境。

  • StringBuilder 的性能通常优于 StringBuffer,但后者是线程安全的。

        选择使用哪个类取决于你的需求。如果需要频繁修改字符串内容且在单线程环境下,建议使用 StringBuilder。如果需要在多线程环境下共享字符串缓冲区,应使用 StringBuffer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值