@@ -9,7 +9,13 @@ public class Test_String extends Test_ {
99
1010 public static void main (String [] args ) {
1111
12- System .out .println ("abcde" .indexOf (99 ));
12+ String sb = new String (new byte [] { 97 , 98 , 99 });
13+ System .out .println (sb );
14+ assert (sb .equals ("abc" ));
15+ sb = new String (new byte [] { 97 , 98 , 99 }, 1 , 2 );
16+ System .out .println (sb );
17+ assert (sb .equals ("bc" ));
18+ assert ("abcde" .indexOf (99 ) == 2 );
1319 assert ("test" .contentEquals (new StringBuffer ("test" )));
1420 int ii = "test\2 ing" .charAt (4 );
1521 switch (ii | 'd' ) {
@@ -22,32 +28,61 @@ public static void main(String[] args) {
2228 assert (false );
2329 }
2430
25- CharBuffer cb = CharBuffer .allocate (10 );
31+ CharBuffer cb = CharBuffer .allocate (4 );
2632 cb .mark ();
2733 cb .put ('a' );
2834 cb .put ('b' );
2935 cb .put ('c' );
30-
31- String sb = new String (new byte [] { 97 , 98 , 99 });
32- System .out .println (sb );
33- assert (sb .equals ("abc" ));
34-
36+ cb .reset ();
3537 StringBuffer sbb ;
3638 sbb = new StringBuffer ("testing" );
3739 sbb .insert (0 , cb );
38-
3940 System .out .println (sbb );
41+ assert (sbb .toString ().equals ("abc\0 testing" ));
4042 System .out .println (">" + cb .toString () + "<" );
41- cb .reset ( );
43+ cb .position ( 2 );
4244 System .out .println (">" + cb .toString () + "<" );
45+ assert (cb .toString ().equals ("c\0 " ));
4346 sbb = new StringBuffer ("testing" );
44- sbb .insert (0 , cb );
45-
47+ sbb .insert (3 , cb , 0 , 1 );
4648 System .out .println (sbb );
47-
49+ assert ( sbb . toString (). equals ( "tescting" ));
4850 sb = "ab\u2520 c" ;
51+ System .out .println (sb );
4952 try {
5053 byte [] b = sb .getBytes ("UTF-8" );
54+ String s = "" + b [2 ] + b [3 ] + b [4 ];
55+ System .out .println (s );
56+ assert (s .equals ("-30-108-96" ));
57+ s = new String (b , "UTF-8" );
58+ System .out .println (s );
59+ assert (s .equals (sb ));
60+ b = sb .getBytes ("UTF8" ); // no BOM
61+
62+ b = sb .getBytes ("UTF-16BE" ); // no BOM
63+ s = "" + b [2 ] + b [3 ] + b [4 ];
64+ System .out .println (s );
65+ assert (s .equals ("09837" ));
66+ s = new String (b , "UTF-16BE" );
67+ System .out .println (s );
68+ assert (s .equals (sb ));
69+
70+ b = sb .getBytes ("UTF-16" ); // includes BOM -2, -1
71+ s = "" + b [2 ] + b [3 ] + b [4 ];
72+ System .out .println (s );
73+ assert (s .equals ("0970" ));
74+ s = new String (b , "UTF-16" );
75+ System .out .println (s );
76+ assert (s .equals (sb ));
77+
78+ b = sb .getBytes ("UTF-16LE" ); // no BOM
79+ s = "" + b [2 ] + b [3 ] + b [4 ];
80+ System .out .println (s );
81+ assert (s .equals ("98032" ));
82+ s = new String (b , "UTF-16LE" );
83+ System .out .println (s );
84+ assert (s .equals (sb ));
85+
5186 } catch (UnsupportedEncodingException e ) {
5287 // TODO Auto-generated catch block
5388 e .printStackTrace ();
@@ -81,16 +116,18 @@ public static void main(String[] args) {
81116 for (int j = 0 ; j < n ; j ++)
82117 s += i ;
83118 }
84- System .out .println ("ms " + (System .currentTimeMillis () - t0 ) + "\t s+= len=" + s .length ());
85-
119+ System .out .println ("\n ms " + (System .currentTimeMillis () - t0 ) + "\t s+= len=" + s .length ());
120+ System .out .println ("java : ms 14825 s+= len=388900" );
121+
86122 t0 = System .currentTimeMillis ();
87123 StringBuffer Sb = new StringBuffer ();
88124 for (int i = 0 ; i < 10000 ; i ++) {
89125 for (int j = 0 ; j < 100 ; j ++)
90126 Sb .append (i );
91127 }
92128 s = Sb .toString ();
93- System .out .println ("ms " + (System .currentTimeMillis () - t0 ) + "\t one StringBuffer len=" + s .length ());
129+ System .out .println ("\n ms " + (System .currentTimeMillis () - t0 ) + "\t one StringBuffer len=" + s .length ());
130+ System .out .println ("java : ms 91 one StringBuffer len=3889000" );
94131
95132 t0 = System .currentTimeMillis ();
96133 StringBuilder S = new StringBuilder ();
@@ -99,7 +136,8 @@ public static void main(String[] args) {
99136 S .append (i );
100137 }
101138 s = S .toString ();
102- System .out .println ("ms " + (System .currentTimeMillis () - t0 ) + "\t one StringBuilder len=" + s .length ());
139+ System .out .println ("\n ms " + (System .currentTimeMillis () - t0 ) + "\t one StringBuilder len=" + s .length ());
140+ System .out .println ("java : ms 76 one StringBuilder len=3889000" );
103141
104142 t0 = System .currentTimeMillis ();
105143 for (int i = 0 ; i < 10000 ; i ++) {
@@ -109,8 +147,8 @@ public static void main(String[] args) {
109147 }
110148 s = SB .toString ();
111149 }
112- System .out .println ("ms " + (System .currentTimeMillis () - t0 ) + "\t many StringBuilder len=" + s .length ());
113-
150+ System .out .println ("\n ms " + (System .currentTimeMillis () - t0 ) + "\t many StringBuilder len=" + s .length ());
151+ System . out . println ( "java : ms 76 many StringBuilder len=400" );
114152
115153 t0 = System .currentTimeMillis ();
116154 SB b = new SB ();
@@ -119,7 +157,8 @@ public static void main(String[] args) {
119157 b .appendI (i );
120158 }
121159 s = b .toString ();
122- System .out .println ("ms " + (System .currentTimeMillis () - t0 ) + "\t javajs.util.SB len=" + s .length ());
160+ System .out .println ("\n ms " + (System .currentTimeMillis () - t0 ) + "\t javajs.util.SB len=" + s .length ());
161+ System .out .println ("java : ms 85 javajs.util.SB len=3889000" );
123162
124163//Output prior to optimization of AbstractStringBuilder:
125164//
0 commit comments