这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。
如果你看过往期的问题,就会发现每一个都不简单。
这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(advanced)” 指的是试题难度,而不是说这些知识本身很深。 一般来说,“高级”问题会稍微难一点。
先思考一个简单的问题: 两个 Integer 包装类对象。 怎样比较它们的值是否相等,有哪些方法?
2024年10月31日
“==”、”equals()”、”hashCode()”这三个在Java编程找那个是不同而又有密切联系的概念。
2024年10月31日
String类覆盖了Object类的equals()方法,并提供了自己的实现,equals()方法是根据它们的内容比较两个字符串的相等性。
等于(相等)
例如,可以比较两个字符串的相等性,如下所示:
==操作符总是比较内存中两个对象的引用。str1 == str2和str1 == str3将返回false,因为str1,str2和str3是内存中三个不同String对象的引用。
2024年10月31日
首先这里总结一下在编写类时常常会碰到的一些关键字:
private,public,protected,default
关键字同一个包中的其他类不同包中的其他类子类自身privateNoNoNoYesprotectedYesNoYesYespublicYesYesYesYes无修饰(default)YesNoNoYes
2024年10月31日
Java 14预定于3月17日发布。那么,14版究竟有什么新功能,对于整天写代码、维护代码的Java开发者来说,哪些功能最有用呢?
作者 | Raoul-Gabriel Urma
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
第14版包含的JEP(Java Enhancement Proposals,Java增强提案)比12版和13版加起来还要多。在这篇文章中,我将主要讨论以下几点:
2024年10月31日
Java 的API(API: Application(应用) Programming(程序) Interface(接口))就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。
我们在每次查看类中的方法时,都打开源代码进行查看,这种方式过于麻烦。其实,我们可以通过查帮助文档的方式,来了解Java提供的API如何使用。如下图操作:查找Object类
2024年10月31日
Java中字符串比较特殊,它不是基本类型,直接使用 == 进行比较是否相等,大多时候不能达到预期结果,正确的方式是使用.equals()方法进行比较,接下来看代码演示,来理解:Java中如何比较字符串!
// 使用 == 符合预期的情况,原因:指向相同的内存地址
boolean bool = "val" == "val" ;
System.out.println(bool); // 输出:true
// 使用 == 符合预期的情况,原因:指向相同的内存地址
boolean bool = "val" == "v"+"al" ;
System.out.println(bool); // 输出:true
// 使用 == 不符合预期的情况,看着相同,但它们并不同,原因:指向不同的内存地址
boolean bool = new String("val") == "val";
System.out.println(bool); // 输出:false
// 使用 == 不符合预期的情况,看着相同,但它们并不同,原因:指向不同的内存地址
boolean bool = new String("val") == new String("val")
System.out.println(bool); // 输出:false
// 这个两值是相同的,原因:比较具体的值,值相同
boolean bool = new String("val").equals("val");
System.out.println(bool); // 输出:true
// 其他相同的情况
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one.equals(two); // true ,原因:比较具体的值,值相同
one.equals(three); // true ,原因:比较具体的值,值相同
one.equalsIgnoreCase(four); // true ,原因:忽略大小写,比较具体的值,值相同
2024年10月31日
该篇博客主要阐述
1、不需要覆盖equals的情景
2、需要覆盖equals的情景
3、对5条通用约定的理解
4、实现高质量equals的诀窍
5、注意点
一、不需要覆盖equals的情景
1、类的每个实例本质上都是唯一的
对于代表活动实体而不是值(value)的类来说确实如此,比如Thread
2024年10月31日
最近在面试许多工作3-5年应聘者的时候,发现了许多人都没有阅读过String源码,尤其是equals和==的区别的问题以及停留在表层听说层次,没有深入理解。
首先,我们看一下Java的最顶级的基类Object的源码。该源码中包含了12个方法,那我们在开发的过程中常用的方法有5个,线程类中常用的有5个。剩下的finalize已经在jdk9中被标记deprecated,registerNatives是加载本地方法用的,用C语言开发的,咱们也不常用。
2024年10月31日
字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。在Java中,比较字符串的常用方法有3个:equals()方法、equalsIgnoreCase()方法、compareTo()方法。下面详细介绍这3个方法的使用。
equals()方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回true,否则返回false。对于字符的大小写,也在检查的范围之内。equals()方法的语法格式如下: