2026/2/13 17:13:24
网站建设
项目流程
怎样用ps做网站,360优化大师旧版,网站数据库问题,怎么做网站的导航面试 Java 基础八股文十问十答第二十一期 作者#xff1a;程序员小白条#xff0c;个人博客 相信看了本文后#xff0c;对你的面试是有一定帮助的#xff01;关注专栏后就能收到持续更新#xff01;
⭐点赞⭐收藏⭐不迷路#xff01;⭐
1#xff09;Java语言有哪些特点…面试 Java 基础八股文十问十答第二十一期作者程序员小白条个人博客相信看了本文后对你的面试是有一定帮助的关注专栏后就能收到持续更新⭐点赞⭐收藏⭐不迷路⭐1Java语言有哪些特点Java语言具有以下特点面向对象OOJava是一种面向对象的编程语言支持封装、继承和多态等OO特性。跨平台性Java程序可以在不同的平台上运行只需安装对应平台的Java虚拟机JVM即可。健壮性Java具有内存管理、异常处理、类型检查等特性有助于编写健壮的程序。安全性Java提供了安全管理机制如类加载器、字节码验证器等防止恶意代码对系统造成损害。简单易学Java语法设计简洁清晰易于学习和使用。高性能通过即时编译器Just-In-Time CompilerJIT等技术Java程序可以实现较高的性能。多线程支持Java提供了多线程编程的支持方便编写并发程序。丰富的类库Java标准库提供了丰富的API涵盖了各种常用功能可大大提高开发效率。2面向对象和面向过程的区别面向对象编程OO把数据和操作数据的方法放在一起以对象的形式表示。以类和对象为基础强调封装、继承和多态。通过消息传递进行对象之间的通信。面向过程编程OP以过程为中心以功能为主导以函数为基本单位。强调解决问题的步骤和过程按照顺序执行。3八种基本数据类型的大小以及他们的封装类整型byte8位范围为-128到127。short16位范围为-32768到32767。int32位范围为-231到231-1。long64位范围为-263到263-1。浮点型float32位范围为1.4E-45到3.4E38。double64位范围为4.9E-324到1.8E308。字符型char16位Unicode字符范围为0到65535。布尔型boolean大小没有明确规定表示逻辑值只能取true或false。对应的封装类为ByteShortIntegerLongFloatDoubleCharacterBoolean4标识符的命名规则在Java中标识符是用来给变量、方法、类、包等命名的。标识符的命名规则如下可以包含的字符英文字母大小写均可数字但不能以数字开头下划线_美元符号$命名规范标识符不能是Java的关键字或保留字。标识符是区分大小写的。最好使用驼峰命名法camelCase规范即除第一个单词外其余单词首字母大写例如myVariableName。5instanceof 关键字的作用instanceof是Java中的一个关键字用于判断一个对象是否是某个类的实例或者实现了某个接口。语法object instanceof Class/Interface作用如果object是Class/Interface的实例返回true如果object不是Class/Interface的实例返回false。示例Object obj Hello; if (obj instanceof String) { System.out.println(obj is an instance of String); } else { System.out.println(obj is not an instance of String); }在上面的例子中obj instanceof String的结果为true因为obj是String类的实例。6Java自动装箱与拆箱Java提供了自动装箱autoboxing和自动拆箱unboxing功能用于在基本数据类型和对应的包装类之间进行转换。自动装箱将基本数据类型自动转换为对应的包装类对象。int num 10; Integer integerObj num; // 自动装箱等价于 Integer integerObj Integer.valueOf(num);自动拆箱将包装类对象自动转换为对应的基本数据类型。Integer integerObj 20; int num integerObj; // 自动拆箱等价于 int num integerObj.intValue();自动装箱和自动拆箱使得基本数据类型和包装类之间的转换更加方便编程时可以直接使用基本数据类型而在需要使用包装类的场景下会自动进行类型转换提高了代码的简洁性和可读性。7重载和重写的区别重载Overloading在同一个类中可以定义多个方法它们具有相同的名称但参数列表不同参数类型、参数个数或参数顺序。重载的方法根据参数列表的不同可以有不同的行为。重载是编译时多态性的一种表现。重写Overriding子类可以重新定义父类中的方法方法名、参数列表和返回类型都必须与父类中的方法相同。重写用于实现子类对父类的方法的改变实现运行时多态性。重写时子类方法的访问修饰符不能比父类方法的访问修饰符更严格。8equals与的区别操作符用于比较两个对象的内存地址即判断两个对象是否引用同一个内存地址。equalsequals()方法是Object类中的方法用于比较两个对象的内容是否相等默认行为是比较两个对象的内存地址。通常需要在类中重写equals()方法以便根据对象的内容进行比较。总结用于比较两个对象的引用是否相同而equals()用于比较两个对象的内容是否相同。9Hashcode的作用hashCode()方法是Object类中的方法用于返回对象的哈希码值32 位整数。哈希码值的作用主要体现在哈希表中例如在集合类中的实现如HashMap、HashSet等。在哈希表中hashCode()方法的作用是当对象存储到哈希表中时先根据对象的哈希码值找到对应的位置然后再根据equals()方法判断是否为同一对象。通过哈希码值进行快速定位可以大大提高查找、插入、删除等操作的效率。在自定义类中如果重写了equals()方法通常也需要同时重写hashCode()方法以保证对象的一致性即如果两个对象equals()返回true则它们的hashCode()应该相等。10String、StringBuffer 和 StringBuilder 的区别是什么?StringString类是不可变的即创建后不能修改其内容。每次对String类的操作都会产生一个新的String对象因此频繁的字符串操作会占用大量的内存和性能。StringBufferStringBuffer是可变的线程安全的适用于多线程环境下的字符串操作。StringBuffer的方法都是同步的因此在单线程环境下效率相对较低。StringBuilderStringBuilder也是可变的但不是线程安全的适用于单线程环境下的字符串操作。StringBuilder的方法都是非同步的因此在单线程环境下性能较好。选择使用哪个取决于具体的需求如果需要在单线程环境下进行大量的字符串操作建议使用StringBuilder。如果需要在多线程环境下进行字符串操作建议使用StringBuffer。如果字符串内容不会发生改变则可以使用String类因为它是不可变的更安全。前后端项目 Gitee Github 累计 3000 Star10W浏览量⭐点赞⭐收藏⭐不迷路⭐智能 AI 旅游推荐平台https://github.com/luoye6/vue3_tourism_frontend智能 AI 校园二手交易平台https://github.com/luoye6/vue3_trade_frontendGPT 智能图书馆https://github.com/luoye6/Vue_BookManageSystem