Java基础面试题总结

c#小王子 c#小王子 2022-01-27 493 Java

Java 有哪些特点


并发性的 : 你可以在其中执⾏许多语句,⽽不必⼀次执⾏它

⾯向对象的 :基于类和⾯向对象的编程语⾔。

独⽴性的 : ⽀持⼀次编写,到处运⾏的独⽴编程语⾔,即编译后的代码可以在⽀持 Java 的所有平台上运⾏。


Java基础面试题总结


Java 的特性


Java 的特性有如下这⼏点


简单 ,Java 会让你的⼯作变得更加轻松,使你把关注点放在主要业务逻辑上,⽽不必关⼼指针、运算符重载、内存回收等与主要业务⽆关的功能。


便携性 ,Java 是平台⽆关性的,这意味着在⼀个平台上编写的任何应⽤程序都可以轻松移植到另⼀个平台上。


安全性 , 编译后会将所有的代码转换为字节码,⼈类⽆法读取。它使开发⽆病毒,⽆篡改的系统/应⽤成为可能。


动态性 ,它具有适应不断变化的环境的能⼒,它能够⽀持动态内存分配,从⽽减少了内存浪费,提⾼了应⽤程序的性能。


分布式 ,Java 提供的功能有助于创建分布式应⽤。使⽤ 远程⽅法调⽤(RMI) ,程序可以通过⽹络调⽤另⼀个程序的⽅法并获取输出。您可以通过从互联⽹上的任何计算机上调⽤⽅法来访问⽂件。这是⾰命性的⼀个特点,对于当今的互联⽹来说太重要了。


健壮性 ,Java 有强⼤的内存管理功能,在编译和运⾏时检查代码,它有助于消除错误。


⾼性能 ,Java 最⿊的科技就是字节码编程,Java 代码编译成的字节码可以轻松转换为本地机器代码。通过 JIT 即时编译器来实现⾼性能。


解释性 ,Java 被编译成字节码,由 Java 运⾏时环境解释。


多线程性 ,Java⽀持多个执⾏线程(也称为轻量级进程),包括⼀组同步原语。这使得使⽤线程编程更加容易,Java 通过管程模型来实现线程安全性。


描述⼀下值传递和引⽤传递的区别


要想真正理解的话,可以参考这篇⽂章 : https://www.zhihu.com/question/31203609


简单理解的话就是


值传递 是指在调⽤函数时将实际参数复制⼀份到函数中,这样的话如果函数对其传递过来的形式参数进⾏修改,将不会影响到实际参数


引⽤传递 是指在调⽤函数时将对象的地址直接传递到函数中,如果在对形式参数进⾏修改,将影响到实际参数的值。


== 和 equals 区别是什么

== 是 Java 中⼀种操作符,它有两种⽐较⽅式

对于 基本数据类型 来说, == 判断的是两边的 是否相等

对于 引⽤类型 来说, == 判断的是两边的 引⽤ 是否相等,也就是判断两个对象是否指向了同⼀

块内存区域。


public class DoubleCompareAndEquals {
 Person person1 = new Person(24,"boy");
 Person person2 = new Person(24,"girl");
 int c = 10;
 private void doubleCompare(){
 int a = 10;
 int b = 10;
 System.out.println(a == b);
 System.out.println(a == c);
 System.out.println(person1.getId() == person2.getId());
 }
} 
private void equals(){
 System.out.println(person1.getName().equals(person2.getName()));
} 

4equals 是 Java 中所有对象的⽗类,即 Object 类定义的⼀个⽅法。它只能⽐较对象,它表示的是引⽤双⽅的值是否相等。所以记住,并不是说 == ⽐较的就是引⽤是否相等,equals ⽐较的就是值,这需要区分来说的。


equals ⽤作对象之间的⽐较具有如下特性

⾃反性 :对于任何⾮空引⽤ x 来说,x.equals(x) 应该返回 true。

对称性 :对于任何⾮空引⽤ x 和 y 来说,若x.equals(y)为 true,则y.equals(x)也为 true。

传递性 :对于任何⾮空引⽤的值来说,有三个值,x、y 和 z,如果x.equals(y) 返回true,y.equals(z) 返回true,那么x.equals(z) 也应该返回true。

⼀致性 :对于任何⾮空引⽤ x 和 y 来说,如果 x.equals(y) 相等的话,那么它们必须始终相等。

⾮空性 :对于任何⾮空引⽤的值 x 来说,x.equals(null) 必须返回 false。


String 中的 equals 是如何重写的

String 代表的是 Java 中的 字符串 ,String 类⽐较特殊,它整个类都是被 final 修饰的,也就是说,String 不能被任何类继承,任何 修改 String 字符串的⽅法都是创建了⼀个新的字符串。


equals ⽅法是 Object 类定义的⽅法,Object 是所有类的⽗类,当然也包括 String,String 重写了equals ⽅法,下⾯我们来看看是怎么重写的

⾸先会判断要⽐较的两个字符串它们的 引⽤ 是否相等。如果引⽤相等的话,直接返回 true ,不相等的话继续下⾯的判断。然后再判断被⽐较的对象是否是 String 的实例,如果不是的话直接返回 false,如果是的话,再⽐较两个字符串的⻓度是否相等,如果⻓度不想等的话也就没有⽐较的必要了;⻓度如果相同,会⽐较字符串中的每个 字符 是否相等,⼀旦有⼀个字符不相等,就会直接返回 false。


下⾯是它的流程图



这⾥再提示⼀下,你可能有疑惑什么时候是


if (this == anObject) {
 return true; 
} 


这个判断语句如何才能返回 true?因为都是字符串啊,字符串⽐较的不都是堆空间吗,猛然⼀看发现好像永远也不会⾛,但是你忘记了 String.intern() ⽅法,它表示的概念在不同的 JDK 版本有不同的区分


在 JDK1.7 及以后调⽤ intern ⽅法是判断运⾏时常量池中是否有指定的字符串,如果没有的话,就把字符串添加到常量池中,并返回常量池中的对象。


验证过程如下:


private void StringOverrideEquals(){
 String s1 = "aaa";
 String s2 = "aa" + new String("a");
 String s3 = new String("aaa");
 System.out.println(s1.intern().equals(s1));
 System.out.println(s1.intern().equals(s2));
 System.out.println(s3.intern().equals(s1));
} 


⾸先 s1.intern.equals(s1) 这个⽆论如何都返回 true,因为 s1 字符串创建出来就已经在常量池中存在了。


然后第⼆条语句返回 false,因为 s1 返回的是常量池中的对象,⽽ s2 返回的是堆中的对象第三条语句 s3.intern.equals(s1),返回 true ,因为 s3 对象虽然在堆中创建了⼀个对象,但是 s3中的 "aaa" 返回的是常量池中的对象。


【下载地址】

百度网盘链接:https://pan.baidu.com/s/1zEu3rPYmBSd3bUT5NlXpIg

提取码:4iae


相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 1778

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1564

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 1623

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 1706

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1822

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之