Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > String from char[] with null termination.

Reply
Thread Tools

String from char[] with null termination.

 
 
Kevin Podsiadlik
Guest
Posts: n/a
 
      01-12-2006
I'm relatively new to Java programming, and stumbled across this by
accident. Consider this code fragment:

char[] ch = { 'A', 'B', 'C', '\0' };
String s = new String(ch);
System.out.println(s + "DEF");

Should this print out "ABC" or "ABCDEF"?

When I run it from the command line, the output is "ABCDEF". When I
run it via the Eclipse 3.1.0 SDK, however, the output is "ABC". The
java compiler is the same both times, version j2sdk1.4.2_10 on a Red
Hat Linux system. I can understand how either output might logically
result, but not how different results can come from the same compiler.
How might that be happening?

 
Reply With Quote
 
 
 
 
Chris Smith
Guest
Posts: n/a
 
      01-12-2006
Kevin Podsiadlik <(E-Mail Removed)> wrote:
> I'm relatively new to Java programming, and stumbled across this by
> accident. Consider this code fragment:
>
> char[] ch = { 'A', 'B', 'C', '\0' };
> String s = new String(ch);
> System.out.println(s + "DEF");
>
> Should this print out "ABC" or "ABCDEF"?
>
> When I run it from the command line, the output is "ABCDEF". When I
> run it via the Eclipse 3.1.0 SDK, however, the output is "ABC". The
> java compiler is the same both times, version j2sdk1.4.2_10 on a Red
> Hat Linux system. I can understand how either output might logically
> result, but not how different results can come from the same compiler.
> How might that be happening?


It's not. The two compilers are outputting the same or equivalent code.
What you're seeing is different consoles. The actual result is
"ABC\0DEF". When you test the code from the command line, the console
handles the unprintable character by simply omitting it. Eclipse's
console view handles it by considering it the end of the string and not
printing any more.

There exists no Java specification that defines how the console should
behave in response to bytes sent to stdout. Therefore, either is
equally correct.

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
Reply With Quote
 
 
 
 
Roedy Green
Guest
Posts: n/a
 
      01-12-2006
On 12 Jan 2006 11:53:36 -0800, "Kevin Podsiadlik" <(E-Mail Removed)>
wrote, quoted or indirectly quoted someone who said :

>When I run it from the command line, the output is "ABCDEF". When I
>run it via the Eclipse 3.1.0 SDK, however, the output is "ABC". The
>java compiler is the same both times, version j2sdk1.4.2_10 on a Red
>Hat Linux system. I can understand how either output might logically
>result, but not how different results can come from the same compiler.
>How might that be happening?


My guess is Java is sending ABC0DEF to the OS to display. It is the
OS that is being fooled by the 0, since it is written in C.

Whenever you send non-printing chars to the console, all bets are off
on what it will do.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
transforming from a non-null terminated string into a null terminatedstring ssylee C Programming 4 08-12-2008 09:57 PM
How to tell if a string element is null or really null? Jiho Han ASP .Net 13 07-29-2006 01:45 AM
"stringObj == null" vs "stringObj.equals(null)", for null check?? qazmlp1209@rediffmail.com Java 5 03-29-2006 10:37 PM
difference between null object and null string gokul.b@gmail.com Java 16 10-12-2005 06:43 PM
interpreting a null pointer as an empty (null string) Dennis Allison C Programming 11 03-06-2004 12:47 PM



Advertisments