Java面试题全集(持续更新)

3.1、idea

在这里插入图片描述

3.11、idea常用快捷键
  • Ctrl-N 再键入类的名字可以快速地在编辑器里打开任何一个类
  • Ctrl-Shift-N 打开工程中的普通文件
  • Ctrl-D 复制当前行
  • Ctrl-Y 删除当前行
  • Ctrl-F 查找
  • Ctrl-R 替换
  • Ctrl+P 显示方法的参数信息
  • Ctrl+Alt+V 自动创建变量
  • Ctrl+Alt+L 格式化代码
  • ALT+INSERT 生成get/set
3.12、idea常见问题
  • idea项目所需要的依赖下载过程中,有下载动作,但是下载失败

    • 有下载动作
      在这里插入图片描述

    • 下载失败
      在这里插入图片描述

    • 原因

      • 在依赖坐标没有错误的情况下,一般是网速导致的。
    • 解决办法

      • 反复重试,或到本地仓库将临时文件删除再试。一般在公司开发网速正常很少碰到。
  • idea项目所需要的依赖下载过程中,无下载动作,直接下载失败

    • 解决办法
      • 一般是当前idea版本和所使用的maven版本不兼容导致的,可尝试更换maven版本。

3.2、Java

3.2.1、Java中的基本数据类型

​ 自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean.

​ 整型:byte, short, int, long

​ 字符型:char

​ 浮点型:float, double

​ 布尔型:boolean

3.2.1.1、整形

​ Java中最小的计算单元为字节,1字节=8位(bit),Java中整型数据属于有符号数,即第一个bit位为0表示正整数,第一个bit位为1表示负整数。

  • byte
    • byte属于Java中的整型,长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类Byte.
  • short
    • short属于Java中的整型,长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),变量初始化默认值为0,包装类Short.
  • int
    • int属于Java中的整型,长度为4字节32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),变量初始化默认值为0,包装类Integer
  • long
    • long属于Java中的整型,长度为8字节64bit,取值-2^63 (-9,223,372,036,854,775,808‬)到 2^63-1(9,223,372,036,854,775,8087),变量初始化默认值为0或0L,包装类Long
3.2.1.2、浮点型
  • float
    • float属于Java中的浮点型,也叫单精度浮点型,长度为4字节32bit,变量初始化默认值0.0f,包装类Float
  • double
    • double属于Java中的浮点型,也叫双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类Double
3.2.1.3、字符型
  • char
    • char属于java中的字符型,占2字节16bit,可以赋值单字符以及整型数值, 变量初始化无默认值,包装类Character。
3.2.1.4、布尔型
  • boolean
    • 在JVM中并没有提供boolean专用的字节码指令,而boolean类型数据在经过编译后在JVM中会通过int类型来表示,此时boolean数据4字节32位,而boolean数组将会被编码成Java虚拟机的byte数组,此时每个boolean数据1字节占8bit.
3.2.2、String、Stringbulider、StringBuffer

​ String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。

​ String能被继承吗?为什么?
不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”abc”(直接赋一个字面量);其实和String str=new String(“abc”)(通过构造器构造)还是有差异的。

  • String str="hello world"和String str=new String(“hello world”) 的区别?

想必大家对上面2个语句都不陌生,在平时写代码的过程中也经常遇到,那么它们到底有什么区别和联系呢?

public class Main {

public static void main(String[] args) {
    String str1 = "hello world";
    String str2 = new String("hello world");
    String str3 = "hello world";
    String str4 = new String("hello world");
     
    System.out.println(str1==str2);
    System.out.println(str1==str3);
    System.out.println(str2==str4);
}

}

这段代码的输出结果为:

在这里插入图片描述

​ 这个结果和你的答案是一致的吗?为什么是这样的结果呢?

​ String str1 = “hello world”;和String str3 = “hello world”; 都在编译期间生成了 字面常量和符号引用,运行期间字面常量"hello world"被存储在运行时常量池(当然只保存了一份)。通过这种方式来将String对象跟引用绑定的话,JVM执行引擎会先在运行时常量池查找是否存在相同的字面常量,如果存在,则直接将引用指向已经存在的字面常量;否则在运行时常量池开辟一个空间来存储该字面常量,并将引用指向该字面常量。

​ 通过new关键字来生成对象是在堆区进行的,而在堆区进行对象生成的过程是不会去检测该对象是否已经存在的。因此通过new来创建对象,创建出的一定是不同的对象。

  • String、StringBuffer以及StringBuilder的区别?

    既然在Java中已经存在了String类,那为什么还需要StringBuilder和StringBuffer类呢?一起来看下面的代码

    public class Main {

    public static void main(String[] args) {
        String string = "";
        for(int i=0;i<10000;i++){
            string += "hello";
        }
    }
    

    }

以上代码在底层,每次循环会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象。也就是说这个循环执行完毕new出了10000个对象,试想一下,如果这些对象没有被回收,会造成多大的内存资源浪费。

  • 再看下面这段代码:

    public class Main {

    public static void main(String[] a
  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值