`
方XiRui
  • 浏览: 20138 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

常见Java面试题 – 第一部分:非可变性(Immutability)和对象引用(Object refer )

阅读更多

 

资料来源:http://www.importnew.com/2217.html 

英文原文: Java Success,编译:ImportNew - 郑雯

ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一。请看此系列相关面试题。你可以从这里查看全部的Java面试系列。

一些比较核心的Java问题经常会用来考验面试者的Java基本知识功底。这篇文章列出来了一些在我的书里面没有的面试题,通过这些面试题读者也可以梳理一下Java基础知识点。

Q1.下面的代码片段会输出什么?

1
2
3
4
String s = " Hello ";
s += " World ";
s.trim( );
System.out.println(s);

A1.正确输出是” Hello  World “。

由于字符串前后都有空格,因为有些人可能会认为结果是”Hello World”。那么,这个题目想要考察的是什么呢?

1.  字符串对象(String Object)是非可变的(immutable),这个题目容易迷惑人的地方在s.trim( )这一行。

2.  理解对象引用和不可达对象会由垃圾回收器收集。

顺着这个题目,你觉得还可以考察哪些概念呢?

1.  例如,上面的代码中一共会生成几个字符串对象,什么时候这些对象会变成不可达对象从而被垃圾回收器回收。

2.  又比如,上面的代码的效率如何?

最好的解释方式是通过一个图表来说明,如下(图片见附件):

如果需要输出前后没有空格的”Hello World”,那么应该将s.trim( )再赋值给”s”。这个赋值操作可以让s指向新创建出来的字符串对象。

上面的代码也可以改写成如下方式:

1
2
3
StringBuilder sb = new StringBuilder(" Hello ");
sb.append(" World ");
System.out.println(sb.toString().trim( ));

StringBuilder不是一个线程安全的类,因此仅仅用作本地变量是没有问题的。如果你希望用作实例变量,那么可以选择线程安全的StringBuffer类。想知道字符串操作背后的原理吗?可以点击这里:String concatenation

 

 

  • 大小: 129.6 KB
分享到:
评论

相关推荐

    java常见笔试、面试题深度剖析

    ### Java常见笔试、面试题深度剖析之String相关 #### 背景介绍 在Java编程语言中,`String` 类型是最常用的数据类型之一。它不仅代表文本数据,还涉及到了许多重要的概念,如字符串池(String Pool)、不可变性...

    JAVA基础问题面试大全

    抽象是面向对象编程中的一个重要概念,指的是从现实世界的问题中提炼出关键特征,忽略掉非关键的细节,以便更好地关注问题的核心部分。在Java中,抽象可以通过抽象类(Abstract Class)和接口(Interface)来实现。 ...

    Java基础面试题(2012完整版)

    ### Java基础面试题知识点解析 #### 1. Java平台独立性 Java的设计核心之一就是“一次编写,到处运行”的理念,这得益于Java虚拟机(JVM)。开发人员编写的Java程序,无论在哪个平台上,只要该平台有相应的JVM,就...

    前端开源库-immutability-helper

    **前端开源库-immutability-helper** 是一个专为JavaScript开发者设计的工具库,它提供了一种高效、方便的方式来处理对象和数组的不变性。在JavaScript中,直接修改对象或数组通常会导致不可预测的行为,因为它们是...

    java笔试题大全

    ### Java笔试题大全知识点解析 #### 一、方法重写(Overriding)与方法重载(Overloading) **方法重写(Overriding)** 和 **方法重载(Overloading)** 是 Java 中非常重要的概念。 - **方法重写(Overriding):** 当子类...

    react-react面试题之对immutable的理解.zip

    在React开发中,数据的不可变性(Immutability)是一个重要的概念,它在优化性能、简化代码逻辑以及实现响应式更新中起着关键作用。本文将深入探讨React面试中常问到的“对Immutable的理解”这一主题。 一、什么是...

    8张图解java

    字符串在Java中是不可变的对象。一旦创建了一个字符串对象,其内容就不能改变。这种特性对于字符串非常重要,因为它提高了程序的安全性和效率。 **示例代码解析:** ```java String s = "abcd"; s = s.concat("ef...

    immutability-helper-extensions:扩展不变性助手

    安装带yarn : yarn add immutability-helper immutability-helper-extensions使用npm : npm i --save immutability-helper immutability-helper-extensions添加扩展要导入扩展,只需导入即可: const update = ...

    Laravel开发-immutability

    在Laravel框架中,开发往往涉及到数据库模型的操作,这些模型通常是Eloquent ORM(对象关系映射)的一部分。"Laravel开发-immutability"的主题聚焦于一个特定的Laravel包,该包旨在帮助开发者实现模型属性的不可变性...

    21-C-ImmutableObject-Code.zip

    在编程领域,不可变对象(Immutable Object)是一种重要的设计模式,尤其在多线程和并发环境中,它提供了安全性和性能优化。在这个初学者教程中,我们将深入探讨C#中的不可变对象,包括“内部不变性”和“观察不变性...

    immutability:使实例不可变(深度冻结)并进行版本控制

    这种将对象的身份作为一系列不可变快照的方法在很大程度上受到了2009年精彩演讲启发。 由。 概要 没有内存的不可变对象: 包括Immutability模块以使对象不可变(深度冻结)。 require "immutability" class User ...

    Java_SE应用部分-34

    `StringBuffer`设计用于提供一种可变的字符串解决方案,允许开发者在不创建新对象的情况下修改字符串内容。与`String`类中的“+”操作符不同,`StringBuffer`使用`append()`方法来添加内容,这不仅简化了代码,还...

    全面了解Kotlin2021大厂Android高级面试题及答案

    ### Kotlin 2021 大厂 Android 高级面试题及答案解析 #### 基础知识点概览 在本篇文章中,我们将深入探讨Kotlin语言的一些关键特性及其在Android开发中的应用。通过理解这些核心概念,可以帮助开发者更好地准备与...

    Practical Java(简体中文)

    **封装**确保了数据的安全性和模块化,通过隐藏内部实现细节,Java允许开发者创建高度抽象的数据类型,从而提高代码的可维护性和安全性。**继承**则允许子类继承父类的属性和方法,促进了代码重用,减少了冗余,增强...

    2021年100道春招面试题.docx

    面试题精华 在这篇文章中,我们将剖析 2021 年春招面试题中的重要知识点,从函数式编程到微服务架构,涵盖了广泛的IT领域。 函数式编程 函数式编程是一种编程范式,它强调使用纯函数、不可变数据结构和递归来编写...

    java并发编程 英文版

    4. 不可变性(Immutability):讲解了对象不可变性是如何简化并发程序设计,以及如何利用不可变对象来保证线程安全。 5. 锁(Locking):介绍了使用锁来同步对共享资源的访问,防止竞态条件和数据不一致。 6. 状态...

    Java经典试题及答案

    与 `&` 不同的是,`&&` 具有短路特性,即当第一个表达式为 `false` 时,第二个表达式不会被评估。 #### 五、HashMap 和 Hashtable 的区别 - `HashMap` 和 `Hashtable` 都是 `Map` 接口的具体实现类,用于存储键值...

    Practical Java

    书中深入讨论了Java编程中的细节问题,如对象创建(object creation)、对象初始化(object initialization)、克隆(Cloneable)、序列化(Serializable)、等价性(Equality)、不可变性(Immutability)、多线程...

    string-immutability:Java字符串不变性和StringBuilder不变性的单元测试。 String和StringBuilder是两个与文本处理相关的流行类

    在`string-immutability-master`这个项目中,可能包含了这样的测试用例,通过Junit或其他测试框架,来演示和验证Java字符串不变性以及`StringBuilder`的可变性。测试代码通常会包括创建、修改和比较字符串的不同方法...

Global site tag (gtag.js) - Google Analytics