Java: JDK居然有个叫整型池的东西 | CrazyEgg



Java: JDK居然有个叫整型池的东西 | CrazyEgg

其实下面这些个assert语句都可以通过junit测试。

1
2
3
4
5
6
7
8
@Test
public void integerValueOfTest() {
Assert.assertTrue(Integer.valueOf(-128) == Integer.valueOf(-128));
Assert.assertFalse(Integer.valueOf(128) == Integer.valueOf(128));
Assert.assertTrue(Integer.valueOf(127) == Integer.valueOf(127));
Assert.assertTrue(Integer.valueOf(1) == Integer.valueOf(1));
Assert.assertFalse(Integer.valueOf(1000) == Integer.valueOf(1000));
}

"Integer.valueOf()""Integer.valueOf()"

Integerpublic static Integer valueOf(int i)是一个工厂方法,每次调用都会返回一个新的Integer的对象。

但是为什么对于127128的两个结果完全不一样???

撸一眼JDK的源码看看,底下就是那个valueOf的具体实现:

1
2
3
4
5
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

原来内部有个整型池(默认IntegerCache.low = -128IntegerCache.high = 127),这样valueOf对于-128 ~ 127之间的返回值都是从池里面获取的。

可怜的不在这个范围内的整数!默哀


Read full article from Java: JDK居然有个叫整型池的东西 | CrazyEgg


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts