15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/* 25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Copyright (C) 2007 The Android Open Source Project 35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Licensed under the Apache License, Version 2.0 (the "License"); 55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * you may not use this file except in compliance with the License. 65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * You may obtain a copy of the License at 75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * http://www.apache.org/licenses/LICENSE-2.0 95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Unless required by applicable law or agreed to in writing, software 115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * distributed under the License is distributed on an "AS IS" BASIS, 125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * See the License for the specific language governing permissions and 145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * limitations under the License. 155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/** 185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Interned strings 195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main { 215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void main(String args[]) { 225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String a, b; 237dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers final String foo = "foo"; 247dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers final String bar = "bar"; 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 267dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers // Two interned strings should match. 275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao a = foo.concat(bar).intern(); 285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao b = foo.concat(bar).intern(); 295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (a == b && foo != bar) { 305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("good! " + a); 315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } else { 327dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers System.out.println("bad! " + a + " != " + b); 337dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers } 347dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers 357dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers // An interned string should match a string literal. 367dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers a = ("f" + foo.substring(1,3)).intern(); 377dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers if (a == foo) { 387dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers System.out.println("good! " + a); 397dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers } else { 407dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers System.out.println("bad! " + a + " != " + b); 417dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers } 427dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers 437dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers // Check that a string literal in libcore equals one in the app. 447dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers a = (new java.nio.charset.IllegalCharsetNameException(null)).getMessage(); 457dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers b = "null"; 467dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers if (a == b) { 477dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers System.out.println("good! " + a); 487dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers } else { 497dfb28c066159e6cde8181720f0c451a700ef966Ian Rogers System.out.println("bad! " + a + " != " + b); 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 53