aspose file tools*
The moose likes Java in General and the fly likes difference between null string and Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "difference between null string and """ Watch "difference between null string and """ New topic
Author

difference between null string and ""

saikrishna cinux
Ranch Hand

Joined: Apr 16, 2005
Posts: 689
1.String s=""
2.String x=null

is 1& 2 are same??
cinux


A = HARDWORK B = LUCK/FATE If C=(A+B) then C=SUCCESSFUL IN LIFE else C=FAILURE IN LIFE
SCJP 1.4
Christophe Verré
Sheriff

Joined: Nov 24, 2005
Posts: 14688
    
  16

There are not the same.

String s = ""; would be the same as String s = new String("");
You are implicitly instanciating a new String variable.

In your example, try to call s.length() and x.length()
[ January 10, 2006: Message edited by: Satou kurinosuke ]

[My Blog]
All roads lead to JavaRanch
saikrishna cinux
Ranch Hand

Joined: Apr 16, 2005
Posts: 689
It's ok but if run the below program it perfectly executes with out error saying that s is not initialized with string value.

public class Test
{
public static void main(String[] args) throws Exception {
step1 String s="";
step2 //String s2;//leads to compile time error because no value is initialized

System.out.println(s.length());

}
}

I think step1 an step2 are same. :roll: :roll:
Jeff Albertson
Ranch Hand

Joined: Sep 16, 2005
Posts: 1780


There is no emoticon for what I am feeling!
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11412
    
  16

remember that s and x are REFERENCES to objects, not the objects themselves. Think of them as envelopes.

when you say

String s = "";

you are saying "I want an envelop, and put an adress on the envelope, even though nobody lives at that address."

when you say

String x = null;

you are saying "i want an envelope with NO address on it."

if you mail the first envelope, it'll go somewhere. the second one will confuse the post office.


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Keith Lynn
Ranch Hand

Joined: Feb 07, 2005
Posts: 2367
Originally posted by saikrishna cinux:

I think step1 an step2 are same. :roll: :roll:


No, they are not the same. s is referring to a valid String object that has no characters in it. s2 is referring to nothing.
Corey McGlone
Ranch Hand

Joined: Dec 20, 2001
Posts: 3271
Originally posted by fred rosenberger:
if you mail the first envelope, it'll go somewhere. the second one will confuse the post office.


Not often does tech talk make me laugh, but this sure did.

Nice analogy.


SCJP Tipline, etc.
Matti Poro
Ranch Hand

Joined: Dec 03, 2005
Posts: 41
You can get the program to be compiled if you write:
String x = null;

But of course then x.length() will throw a NullPointerException if you run the program.
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by fred rosenberger:
...if you mail the first envelope, it'll go somewhere. the second one will confuse the post office.

Very nice.


"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
saikrishna cinux
Ranch Hand

Joined: Apr 16, 2005
Posts: 689
Originally posted by fred rosenberger:
remember that s and x are REFERENCES to objects, not the objects themselves. Think of them as envelopes.

when you say

String s = "";

you are saying "I want an envelop, and put an adress on the envelope, even though nobody lives at that address."

when you say

String x = null;

you are saying "i want an envelope with NO address on it."

if you mail the first envelope, it'll go somewhere. the second one will confuse the post office.


My dear fred u really Rock!!! explained it in a gr8 way..
keep it up ..
and thanks a lot
bye
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: difference between null string and ""