资料来源: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
分享到:
相关推荐
安装带yarn : yarn add immutability-helper immutability-helper-extensions使用npm : npm i --save immutability-helper immutability-helper-extensions添加扩展要导入扩展,只需导入即可: const update = ...
这种将对象的身份作为一系列不可变快照的方法在很大程度上受到了2009年精彩演讲启发。 由。 概要 没有内存的不可变对象: 包括Immutability模块以使对象不可变(深度冻结)。 require "immutability" class User ...
中文名: 面向Java开发者的函数式编程 原名: Functional Programming for Java Developers 作者: Dean Wampler 资源格式: PDF 版本: 英文文字版/更新EPUB版本/更新MOBI版本 出版社: O'Reilly书号: 978-1-4493-1103-2...
参考:React immutability比immutable更简洁的数据不可变更新库2018.12.24 07:44 1610浏览immutability-helper因React官方出镜,而被纳入后宫引言之前项目中遇到数据拷贝、引用之间数据层级嵌套过深,拷贝的值相互...
前端开源库-immutability-helper不变性助手,在不更改原始源的情况下改变数据的副本
这可以看作是React Immutability Helpers和Immutable.js的一种更简单,更直观的替代方法。 变更日志 安装 npm install object-path-immutable --save 快速使用 下面,设置属性而不修改原始对象。 它将最大限度地...
Java 9 for Programmers (Deitel Developer Series) by Paul Deitel English | 16 May 2017 | ASIN: B071S84XCK | 1120 Pages | AZW3 | 83.11 MB The professional programmer’s Deitel® guide to Java® 9 and ...
不变性的帮助者 更改数据副本而不更改原始源 通过NPM设置 npm install immutability-helper --save ... 但是,如果您可以在应用程序的性能至关重要的部分中使用不可变的数据,则很容易实现快速的方
Laravel开发-immutability 一个简单的laravel包,允许您在雄辩的模型上强制使用不可变的属性。
字符串不可变性 Java字符串不变性和StringBuilder不变性的单元测试。 String和StringBuilder是两个与文本处理相关的流行类。
Java 9 Data Structures and Algorithms by Debasish Ray Chawdhuri English | 28 Apr. 2017 | ASIN: B01KM5RLGS | 340 Pages | AZW3 | 4.28 MB Key Features This book provides complete coverage of reactive ...
You'll also get a thorough reference to the Underscore.js library and its idioms, including: Closures Applicative programming Laziness Immutability Higher-order functions Purity Combinators Currying ...
Java并发编程原汁原味英文版,Doug Lea大神经典著作, 内容:Concurrency Models, design forces, Java Designing objects for concurrency Immutability, locking, state dependence, containment, splitting ...
immutability-skinable-component ##问题 通用UI组件的皮肤管理,怎样一个管理方式比较优秀? UI组件的扩展性怎样来保证? 如何在保证扩展性的同时还能让整个组件结构变得更加优雅? react组件的性能该如何提升? ##...
ipmjs:不可变的软件包管理器
创建不带setter的“不可变”对象,仅创建getter。 这个gem允许您定义“不可变的”对象,使用它时,您的对象将仅具有getter而没有setter。 因此,如果更改[ ] [ ]对象的属性,则将有一个新的对象实例。 也就是说,您...
Java库的不可变集合(JImmutable Collections)是一组高性能的不可变集合,用于替换或补充标准的java.util集合。 为每个最常用的集合提供功能替换: Java类 JImmutable接口 工厂方法 数组列表 JImmutableList ...
Chapter 1 - Introduction 1 1.1. A (Very) Brief History of Concurrency 2 1.2. Benefits of Threads 3 1.2.1.ExploitingMultipleProcessors 3 1.2.2.SimplicityofModeling 3 1.2.3....
Java drastically changed with the introduction of Java 8, and this change has been elevated to a whole new level with the new version, Java 9. Java has a well-established past, being more than 20 ...