An interview question: What's the number of String objects being created?Is an array a primitive type or an object (or something else entirely)?How do I create a Java string from the contents of a file?Creating multiline strings in JavaScriptCount the number of occurrences of a character in a string in JavascriptHow do I check if a string contains another string in Objective-C?Convert JS object to JSON stringConverting an object to a stringPythonic way to create a long multi-line stringWhy is String immutable in Java?Where is the new Object of String created when we concat using + operator

How do you harvest carrots in creative mode?

Who was president of the USA?

How do I request a longer than normal leave of absence period for my wedding?

I don't have the theoretical background in my PhD topic. I can't justify getting the degree

I can see my two means are different. What information can a t test add?

Why do gliders have bungee cords in the control systems and what do they do? Are they on all control surfaces? What about ultralights?

How to find out the average duration of the peer-review process for a given journal?

Architectural feasibility of a tiered circular stone keep

If all stars rotate, why was there a theory developed that requires non-rotating stars?

Is there any way to keep a player from killing an NPC?

Couple of slangs I've heard when watching anime

Ensuring all network services on a device use strong TLS cipher suites

Does norwegian.no airline overbook flights?

Why did this happen to Thanos's ships at the end of "Avengers: Endgame"?

What does "set -x" do in a bash script?

Anatomically Correct Whomping Willow

Non-visual Computers - thoughts?

Why is there so little discussion / research on the philosophy of precision?

Is "The life is beautiful" incorrect or just very non-idiomatic?

Is using a hyperlink to close a modal a poor design decision?

How would you identify when an object in a Lissajous orbit needs station keeping?

Are the players on the same team as the DM?

LeetCode: Group Anagrams C#

Compelling story with the world as a villain



An interview question: What's the number of String objects being created?


Is an array a primitive type or an object (or something else entirely)?How do I create a Java string from the contents of a file?Creating multiline strings in JavaScriptCount the number of occurrences of a character in a string in JavascriptHow do I check if a string contains another string in Objective-C?Convert JS object to JSON stringConverting an object to a stringPythonic way to create a long multi-line stringWhy is String immutable in Java?Where is the new Object of String created when we concat using + operator






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








6















I was asked in an interview about the number of objects that will be created on the given problem:



String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;


So I am not sure that the answer I gave was correct or not.



I answered that there would be 6 objects created in the string pool.



3 would be for all three variables.

1 would be for str1 + str2 (let's say str).

1 would be for str2 + str3.

1 would be for the str + str3 (str = str1 + str2).



Please help me out on this confusion.










share|improve this question









New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 2





    Why would str2 + str3 be one of the objects?

    – Jacob G.
    8 hours ago






  • 3





    I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

    – Turing85
    8 hours ago











  • Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

    – Turing85
    8 hours ago











  • Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

    – RedCam
    7 hours ago











  • if the first 3 variables were defined final I would say no object is being created (at that code segment)

    – Carlos Heuberger
    7 hours ago

















6















I was asked in an interview about the number of objects that will be created on the given problem:



String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;


So I am not sure that the answer I gave was correct or not.



I answered that there would be 6 objects created in the string pool.



3 would be for all three variables.

1 would be for str1 + str2 (let's say str).

1 would be for str2 + str3.

1 would be for the str + str3 (str = str1 + str2).



Please help me out on this confusion.










share|improve this question









New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 2





    Why would str2 + str3 be one of the objects?

    – Jacob G.
    8 hours ago






  • 3





    I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

    – Turing85
    8 hours ago











  • Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

    – Turing85
    8 hours ago











  • Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

    – RedCam
    7 hours ago











  • if the first 3 variables were defined final I would say no object is being created (at that code segment)

    – Carlos Heuberger
    7 hours ago













6












6








6








I was asked in an interview about the number of objects that will be created on the given problem:



String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;


So I am not sure that the answer I gave was correct or not.



I answered that there would be 6 objects created in the string pool.



3 would be for all three variables.

1 would be for str1 + str2 (let's say str).

1 would be for str2 + str3.

1 would be for the str + str3 (str = str1 + str2).



Please help me out on this confusion.










share|improve this question









New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I was asked in an interview about the number of objects that will be created on the given problem:



String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;


So I am not sure that the answer I gave was correct or not.



I answered that there would be 6 objects created in the string pool.



3 would be for all three variables.

1 would be for str1 + str2 (let's say str).

1 would be for str2 + str3.

1 would be for the str + str3 (str = str1 + str2).



Please help me out on this confusion.







java string string-concatenation string-pool string-building






share|improve this question









New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|improve this question









New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|improve this question




share|improve this question








edited 7 hours ago









Andrew Tobilko

32.9k10 gold badges53 silver badges102 bronze badges




32.9k10 gold badges53 silver badges102 bronze badges






New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked 8 hours ago









bhpshbhpsh

373 bronze badges




373 bronze badges




New contributor



bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




bhpsh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • 2





    Why would str2 + str3 be one of the objects?

    – Jacob G.
    8 hours ago






  • 3





    I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

    – Turing85
    8 hours ago











  • Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

    – Turing85
    8 hours ago











  • Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

    – RedCam
    7 hours ago











  • if the first 3 variables were defined final I would say no object is being created (at that code segment)

    – Carlos Heuberger
    7 hours ago












  • 2





    Why would str2 + str3 be one of the objects?

    – Jacob G.
    8 hours ago






  • 3





    I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

    – Turing85
    8 hours ago











  • Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

    – Turing85
    8 hours ago











  • Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

    – RedCam
    7 hours ago











  • if the first 3 variables were defined final I would say no object is being created (at that code segment)

    – Carlos Heuberger
    7 hours ago







2




2





Why would str2 + str3 be one of the objects?

– Jacob G.
8 hours ago





Why would str2 + str3 be one of the objects?

– Jacob G.
8 hours ago




3




3





I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

– Turing85
8 hours ago





I am not entirely sure whether it is defined in the JLS, but when concatenating Strings, the compiler normally generates a StringBuilder to concatenate the Strings. I am not entirely sure how the StringBuilder internally handles the concatenation, but I would say that at least five Objects are created: one for str1 to str3, one StringBuilder and the final String for String4.

– Turing85
8 hours ago













Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

– Turing85
8 hours ago





Update: The JLS actually defines that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." In other words: without further information, the question cannot be definitively answered.

– Turing85
8 hours ago













Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

– RedCam
7 hours ago





Nothing against you, but I hate questions like that. What is the deeper meaning of such questions? Especially in an interview? What skills does the interviewer want to find out?

– RedCam
7 hours ago













if the first 3 variables were defined final I would say no object is being created (at that code segment)

– Carlos Heuberger
7 hours ago





if the first 3 variables were defined final I would say no object is being created (at that code segment)

– Carlos Heuberger
7 hours ago












5 Answers
5






active

oldest

votes


















9















With the given information, the question cannot be definitely answered. As is stated in the JLS, §15.18.1:




... To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.




This means that the answer depends at least on the concrete Java compiler used.



I think the best we can do is give an interval as answer:



  • a smart compiler may be able to infer that str1 to str3 are never used and fold the concatenation during compilation, such that only one String-object is created (the one referenced by str4)

  • The maximum sensible number of Strings created should be 5: one each for str1 to str3, one for tmp = str1 + str2 and one for str4 = tmp + str3.

So... my answer would be "something between one to five String-objects". As to the total number of objects created just for this operation... I do not know. This may also depend how exactly e.g. StringBuffer is implemented.



As an aside: I wonder what the reason behind asking such questions is. Normally, one does not need to care about those details.






share|improve this answer






















  • 3





    "I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

    – Andrew Tobilko
    7 hours ago



















3















Java 8 will likely create 5 objects:



  • 3 for the 3 variables

  • 1 StringBuilder

  • 1 for the concatenated String

With Java 9 things changed though and String concatenation does not use StringBuilder anymore.






share|improve this answer




















  • 3





    Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

    – Andy Thomas
    8 hours ago







  • 1





    stackoverflow.com/questions/12806739/…

    – 17slim
    7 hours ago






  • 4





    @3limin4t0r "char[] is a primitive value" - Nope.

    – Turing85
    7 hours ago







  • 2





    @AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

    – Puce
    7 hours ago











  • That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

    – 17slim
    7 hours ago


















2















It should be 5:



  • three for the three literals (assigned to str1, str2 and str3)


  • one for str1 + str2


  • one for (result from the previous operation) + str3 (assigned to str4)






share|improve this answer



























  • str1 + str2 will not be concatenated to a String in all Java since quite many years.

    – Puce
    8 hours ago


















2















Any answer to your question will be dependant on the JVM implementation and the Java version currently being used. It's a stupid question to ask in an interview.



Java 1.8.0_201



On my machine, with Java 1.8.0_201, your snippet results in this bytecode



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 1
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 2
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 3
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 4
L4
LINENUMBER 19 L4
RETURN


which proves that 5 objects are being created (3 constant String literals, 1 StringBuilder, 1 dynamically produced String instance by StringBuilder#toString).



Java 12.0.2



On my machine, with Java 12.0.2, the bytecode is



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
ALOAD 1
ALOAD 2
ALOAD 3
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"u0001u0001u0001"
]
ASTORE 4
L4
LINENUMBER 17 L4
RETURN


which magically changes "the correct answer" to 4 objects since there is no intermediate String[Buffer/Builder] involved.






share|improve this answer






















  • 1





    each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

    – Carlos Heuberger
    7 hours ago












  • thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

    – Carlos Heuberger
    7 hours ago



















0















Concatenation operation doesn't create those many String objects. It creates aStringBuilder and then appends the strings. So there may be 5 objects,
3 (variables) + 1 (sb) + 1 (Concatenated string).






share|improve this answer



























  • It might be 5.

    – Nexevis
    7 hours ago











  • As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

    – Turing85
    7 hours ago












  • @Turing85 agreed. Updated.

    – javaaddict
    7 hours ago













Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






bhpsh is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f57630924%2fan-interview-question-whats-the-number-of-string-objects-being-created%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























5 Answers
5






active

oldest

votes








5 Answers
5






active

oldest

votes









active

oldest

votes






active

oldest

votes









9















With the given information, the question cannot be definitely answered. As is stated in the JLS, §15.18.1:




... To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.




This means that the answer depends at least on the concrete Java compiler used.



I think the best we can do is give an interval as answer:



  • a smart compiler may be able to infer that str1 to str3 are never used and fold the concatenation during compilation, such that only one String-object is created (the one referenced by str4)

  • The maximum sensible number of Strings created should be 5: one each for str1 to str3, one for tmp = str1 + str2 and one for str4 = tmp + str3.

So... my answer would be "something between one to five String-objects". As to the total number of objects created just for this operation... I do not know. This may also depend how exactly e.g. StringBuffer is implemented.



As an aside: I wonder what the reason behind asking such questions is. Normally, one does not need to care about those details.






share|improve this answer






















  • 3





    "I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

    – Andrew Tobilko
    7 hours ago
















9















With the given information, the question cannot be definitely answered. As is stated in the JLS, §15.18.1:




... To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.




This means that the answer depends at least on the concrete Java compiler used.



I think the best we can do is give an interval as answer:



  • a smart compiler may be able to infer that str1 to str3 are never used and fold the concatenation during compilation, such that only one String-object is created (the one referenced by str4)

  • The maximum sensible number of Strings created should be 5: one each for str1 to str3, one for tmp = str1 + str2 and one for str4 = tmp + str3.

So... my answer would be "something between one to five String-objects". As to the total number of objects created just for this operation... I do not know. This may also depend how exactly e.g. StringBuffer is implemented.



As an aside: I wonder what the reason behind asking such questions is. Normally, one does not need to care about those details.






share|improve this answer






















  • 3





    "I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

    – Andrew Tobilko
    7 hours ago














9














9










9









With the given information, the question cannot be definitely answered. As is stated in the JLS, §15.18.1:




... To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.




This means that the answer depends at least on the concrete Java compiler used.



I think the best we can do is give an interval as answer:



  • a smart compiler may be able to infer that str1 to str3 are never used and fold the concatenation during compilation, such that only one String-object is created (the one referenced by str4)

  • The maximum sensible number of Strings created should be 5: one each for str1 to str3, one for tmp = str1 + str2 and one for str4 = tmp + str3.

So... my answer would be "something between one to five String-objects". As to the total number of objects created just for this operation... I do not know. This may also depend how exactly e.g. StringBuffer is implemented.



As an aside: I wonder what the reason behind asking such questions is. Normally, one does not need to care about those details.






share|improve this answer















With the given information, the question cannot be definitely answered. As is stated in the JLS, §15.18.1:




... To increase the performance of repeated string concatenation, a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression.




This means that the answer depends at least on the concrete Java compiler used.



I think the best we can do is give an interval as answer:



  • a smart compiler may be able to infer that str1 to str3 are never used and fold the concatenation during compilation, such that only one String-object is created (the one referenced by str4)

  • The maximum sensible number of Strings created should be 5: one each for str1 to str3, one for tmp = str1 + str2 and one for str4 = tmp + str3.

So... my answer would be "something between one to five String-objects". As to the total number of objects created just for this operation... I do not know. This may also depend how exactly e.g. StringBuffer is implemented.



As an aside: I wonder what the reason behind asking such questions is. Normally, one does not need to care about those details.







share|improve this answer














share|improve this answer



share|improve this answer








edited 7 hours ago

























answered 8 hours ago









Turing85Turing85

7,1863 gold badges19 silver badges42 bronze badges




7,1863 gold badges19 silver badges42 bronze badges










  • 3





    "I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

    – Andrew Tobilko
    7 hours ago













  • 3





    "I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

    – Andrew Tobilko
    7 hours ago








3




3





"I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

– Andrew Tobilko
7 hours ago






"I wonder what the reason behind asking such questions is." - It reminds me of the "I-read-it-yesterday-I-will-ask-it-tomorrow" type of interviewers

– Andrew Tobilko
7 hours ago














3















Java 8 will likely create 5 objects:



  • 3 for the 3 variables

  • 1 StringBuilder

  • 1 for the concatenated String

With Java 9 things changed though and String concatenation does not use StringBuilder anymore.






share|improve this answer




















  • 3





    Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

    – Andy Thomas
    8 hours ago







  • 1





    stackoverflow.com/questions/12806739/…

    – 17slim
    7 hours ago






  • 4





    @3limin4t0r "char[] is a primitive value" - Nope.

    – Turing85
    7 hours ago







  • 2





    @AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

    – Puce
    7 hours ago











  • That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

    – 17slim
    7 hours ago















3















Java 8 will likely create 5 objects:



  • 3 for the 3 variables

  • 1 StringBuilder

  • 1 for the concatenated String

With Java 9 things changed though and String concatenation does not use StringBuilder anymore.






share|improve this answer




















  • 3





    Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

    – Andy Thomas
    8 hours ago







  • 1





    stackoverflow.com/questions/12806739/…

    – 17slim
    7 hours ago






  • 4





    @3limin4t0r "char[] is a primitive value" - Nope.

    – Turing85
    7 hours ago







  • 2





    @AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

    – Puce
    7 hours ago











  • That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

    – 17slim
    7 hours ago













3














3










3









Java 8 will likely create 5 objects:



  • 3 for the 3 variables

  • 1 StringBuilder

  • 1 for the concatenated String

With Java 9 things changed though and String concatenation does not use StringBuilder anymore.






share|improve this answer













Java 8 will likely create 5 objects:



  • 3 for the 3 variables

  • 1 StringBuilder

  • 1 for the concatenated String

With Java 9 things changed though and String concatenation does not use StringBuilder anymore.







share|improve this answer












share|improve this answer



share|improve this answer










answered 8 hours ago









PucePuce

29.1k9 gold badges61 silver badges117 bronze badges




29.1k9 gold badges61 silver badges117 bronze badges










  • 3





    Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

    – Andy Thomas
    8 hours ago







  • 1





    stackoverflow.com/questions/12806739/…

    – 17slim
    7 hours ago






  • 4





    @3limin4t0r "char[] is a primitive value" - Nope.

    – Turing85
    7 hours ago







  • 2





    @AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

    – Puce
    7 hours ago











  • That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

    – 17slim
    7 hours ago












  • 3





    Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

    – Andy Thomas
    8 hours ago







  • 1





    stackoverflow.com/questions/12806739/…

    – 17slim
    7 hours ago






  • 4





    @3limin4t0r "char[] is a primitive value" - Nope.

    – Turing85
    7 hours ago







  • 2





    @AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

    – Puce
    7 hours ago











  • That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

    – 17slim
    7 hours ago







3




3





Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

– Andy Thomas
8 hours ago






Good answer, but for Java 8, I think you're overlooking the char[] object used by the implementation of StringBuilder.

– Andy Thomas
8 hours ago





1




1





stackoverflow.com/questions/12806739/…

– 17slim
7 hours ago





stackoverflow.com/questions/12806739/…

– 17slim
7 hours ago




4




4





@3limin4t0r "char[] is a primitive value" - Nope.

– Turing85
7 hours ago






@3limin4t0r "char[] is a primitive value" - Nope.

– Turing85
7 hours ago





2




2





@AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

– Puce
7 hours ago





@AndyThomas if you count the char[] you will end up with even more as also String uses char[] and some constructors also create copies of char[].

– Puce
7 hours ago













That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

– 17slim
7 hours ago





That's a good point actually, which leads me to believe @Turing85's answer is more correct without further clarification from the interviewers.

– 17slim
7 hours ago











2















It should be 5:



  • three for the three literals (assigned to str1, str2 and str3)


  • one for str1 + str2


  • one for (result from the previous operation) + str3 (assigned to str4)






share|improve this answer



























  • str1 + str2 will not be concatenated to a String in all Java since quite many years.

    – Puce
    8 hours ago















2















It should be 5:



  • three for the three literals (assigned to str1, str2 and str3)


  • one for str1 + str2


  • one for (result from the previous operation) + str3 (assigned to str4)






share|improve this answer



























  • str1 + str2 will not be concatenated to a String in all Java since quite many years.

    – Puce
    8 hours ago













2














2










2









It should be 5:



  • three for the three literals (assigned to str1, str2 and str3)


  • one for str1 + str2


  • one for (result from the previous operation) + str3 (assigned to str4)






share|improve this answer















It should be 5:



  • three for the three literals (assigned to str1, str2 and str3)


  • one for str1 + str2


  • one for (result from the previous operation) + str3 (assigned to str4)







share|improve this answer














share|improve this answer



share|improve this answer








edited 8 hours ago

























answered 8 hours ago









Laurenz AlbeLaurenz Albe

62.8k11 gold badges44 silver badges66 bronze badges




62.8k11 gold badges44 silver badges66 bronze badges















  • str1 + str2 will not be concatenated to a String in all Java since quite many years.

    – Puce
    8 hours ago

















  • str1 + str2 will not be concatenated to a String in all Java since quite many years.

    – Puce
    8 hours ago
















str1 + str2 will not be concatenated to a String in all Java since quite many years.

– Puce
8 hours ago





str1 + str2 will not be concatenated to a String in all Java since quite many years.

– Puce
8 hours ago











2















Any answer to your question will be dependant on the JVM implementation and the Java version currently being used. It's a stupid question to ask in an interview.



Java 1.8.0_201



On my machine, with Java 1.8.0_201, your snippet results in this bytecode



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 1
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 2
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 3
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 4
L4
LINENUMBER 19 L4
RETURN


which proves that 5 objects are being created (3 constant String literals, 1 StringBuilder, 1 dynamically produced String instance by StringBuilder#toString).



Java 12.0.2



On my machine, with Java 12.0.2, the bytecode is



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
ALOAD 1
ALOAD 2
ALOAD 3
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"u0001u0001u0001"
]
ASTORE 4
L4
LINENUMBER 17 L4
RETURN


which magically changes "the correct answer" to 4 objects since there is no intermediate String[Buffer/Builder] involved.






share|improve this answer






















  • 1





    each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

    – Carlos Heuberger
    7 hours ago












  • thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

    – Carlos Heuberger
    7 hours ago
















2















Any answer to your question will be dependant on the JVM implementation and the Java version currently being used. It's a stupid question to ask in an interview.



Java 1.8.0_201



On my machine, with Java 1.8.0_201, your snippet results in this bytecode



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 1
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 2
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 3
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 4
L4
LINENUMBER 19 L4
RETURN


which proves that 5 objects are being created (3 constant String literals, 1 StringBuilder, 1 dynamically produced String instance by StringBuilder#toString).



Java 12.0.2



On my machine, with Java 12.0.2, the bytecode is



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
ALOAD 1
ALOAD 2
ALOAD 3
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"u0001u0001u0001"
]
ASTORE 4
L4
LINENUMBER 17 L4
RETURN


which magically changes "the correct answer" to 4 objects since there is no intermediate String[Buffer/Builder] involved.






share|improve this answer






















  • 1





    each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

    – Carlos Heuberger
    7 hours ago












  • thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

    – Carlos Heuberger
    7 hours ago














2














2










2









Any answer to your question will be dependant on the JVM implementation and the Java version currently being used. It's a stupid question to ask in an interview.



Java 1.8.0_201



On my machine, with Java 1.8.0_201, your snippet results in this bytecode



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 1
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 2
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 3
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 4
L4
LINENUMBER 19 L4
RETURN


which proves that 5 objects are being created (3 constant String literals, 1 StringBuilder, 1 dynamically produced String instance by StringBuilder#toString).



Java 12.0.2



On my machine, with Java 12.0.2, the bytecode is



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
ALOAD 1
ALOAD 2
ALOAD 3
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"u0001u0001u0001"
]
ASTORE 4
L4
LINENUMBER 17 L4
RETURN


which magically changes "the correct answer" to 4 objects since there is no intermediate String[Buffer/Builder] involved.






share|improve this answer















Any answer to your question will be dependant on the JVM implementation and the Java version currently being used. It's a stupid question to ask in an interview.



Java 1.8.0_201



On my machine, with Java 1.8.0_201, your snippet results in this bytecode



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
NEW java/lang/StringBuilder
DUP
INVOKESPECIAL java/lang/StringBuilder.<init> ()V
ALOAD 1
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 2
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
ALOAD 3
INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
ASTORE 4
L4
LINENUMBER 19 L4
RETURN


which proves that 5 objects are being created (3 constant String literals, 1 StringBuilder, 1 dynamically produced String instance by StringBuilder#toString).



Java 12.0.2



On my machine, with Java 12.0.2, the bytecode is



 L0
LINENUMBER 13 L0
LDC "First"
ASTORE 1
L1
LINENUMBER 14 L1
LDC "Second"
ASTORE 2
L2
LINENUMBER 15 L2
LDC "Third"
ASTORE 3
L3
LINENUMBER 16 L3
ALOAD 1
ALOAD 2
ALOAD 3
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"u0001u0001u0001"
]
ASTORE 4
L4
LINENUMBER 17 L4
RETURN


which magically changes "the correct answer" to 4 objects since there is no intermediate String[Buffer/Builder] involved.







share|improve this answer














share|improve this answer



share|improve this answer








edited 7 hours ago

























answered 7 hours ago









Andrew TobilkoAndrew Tobilko

32.9k10 gold badges53 silver badges102 bronze badges




32.9k10 gold badges53 silver badges102 bronze badges










  • 1





    each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

    – Carlos Heuberger
    7 hours ago












  • thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

    – Carlos Heuberger
    7 hours ago













  • 1





    each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

    – Carlos Heuberger
    7 hours ago












  • thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

    – Carlos Heuberger
    7 hours ago








1




1





each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

– Carlos Heuberger
7 hours ago






each string also contains a byte[], same for StringBuilder (and first one will also create a static byte[0]) and eventually (haven't checked) the StringBuilder can create a new, bigger buffer (if needed) (just proving your 2nd sentence true)

– Carlos Heuberger
7 hours ago














thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

– Carlos Heuberger
7 hours ago






thinking about it, is LDC creating a (new) Object? or just using one? (the literal could have been used before)

– Carlos Heuberger
7 hours ago












0















Concatenation operation doesn't create those many String objects. It creates aStringBuilder and then appends the strings. So there may be 5 objects,
3 (variables) + 1 (sb) + 1 (Concatenated string).






share|improve this answer



























  • It might be 5.

    – Nexevis
    7 hours ago











  • As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

    – Turing85
    7 hours ago












  • @Turing85 agreed. Updated.

    – javaaddict
    7 hours ago















0















Concatenation operation doesn't create those many String objects. It creates aStringBuilder and then appends the strings. So there may be 5 objects,
3 (variables) + 1 (sb) + 1 (Concatenated string).






share|improve this answer



























  • It might be 5.

    – Nexevis
    7 hours ago











  • As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

    – Turing85
    7 hours ago












  • @Turing85 agreed. Updated.

    – javaaddict
    7 hours ago













0














0










0









Concatenation operation doesn't create those many String objects. It creates aStringBuilder and then appends the strings. So there may be 5 objects,
3 (variables) + 1 (sb) + 1 (Concatenated string).






share|improve this answer















Concatenation operation doesn't create those many String objects. It creates aStringBuilder and then appends the strings. So there may be 5 objects,
3 (variables) + 1 (sb) + 1 (Concatenated string).







share|improve this answer














share|improve this answer



share|improve this answer








edited 7 hours ago

























answered 7 hours ago









javaaddictjavaaddict

1371 silver badge8 bronze badges




1371 silver badge8 bronze badges















  • It might be 5.

    – Nexevis
    7 hours ago











  • As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

    – Turing85
    7 hours ago












  • @Turing85 agreed. Updated.

    – javaaddict
    7 hours ago

















  • It might be 5.

    – Nexevis
    7 hours ago











  • As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

    – Turing85
    7 hours ago












  • @Turing85 agreed. Updated.

    – javaaddict
    7 hours ago
















It might be 5.

– Nexevis
7 hours ago





It might be 5.

– Nexevis
7 hours ago













As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

– Turing85
7 hours ago






As was stated many times, the JLS says that "a Java compiler may use the StringBuffer class or a similar technique to reduce the number of intermediate String objects that are created by evaluation of an expression." Emphasis is on may.

– Turing85
7 hours ago














@Turing85 agreed. Updated.

– javaaddict
7 hours ago





@Turing85 agreed. Updated.

– javaaddict
7 hours ago










bhpsh is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















bhpsh is a new contributor. Be nice, and check out our Code of Conduct.












bhpsh is a new contributor. Be nice, and check out our Code of Conduct.











bhpsh is a new contributor. Be nice, and check out our Code of Conduct.














Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f57630924%2fan-interview-question-whats-the-number-of-string-objects-being-created%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу

Israel Cuprins Etimologie | Istorie | Geografie | Politică | Demografie | Educație | Economie | Cultură | Note explicative | Note bibliografice | Bibliografie | Legături externe | Meniu de navigaresite web oficialfacebooktweeterGoogle+Instagramcanal YouTubeInstagramtextmodificaremodificarewww.technion.ac.ilnew.huji.ac.ilwww.weizmann.ac.ilwww1.biu.ac.ilenglish.tau.ac.ilwww.haifa.ac.ilin.bgu.ac.ilwww.openu.ac.ilwww.ariel.ac.ilCIA FactbookHarta Israelului"Negotiating Jerusalem," Palestine–Israel JournalThe Schizoid Nature of Modern Hebrew: A Slavic Language in Search of a Semitic Past„Arabic in Israel: an official language and a cultural bridge”„Latest Population Statistics for Israel”„Israel Population”„Tables”„Report for Selected Countries and Subjects”Human Development Report 2016: Human Development for Everyone„Distribution of family income - Gini index”The World FactbookJerusalem Law„Israel”„Israel”„Zionist Leaders: David Ben-Gurion 1886–1973”„The status of Jerusalem”„Analysis: Kadima's big plans”„Israel's Hard-Learned Lessons”„The Legacy of Undefined Borders, Tel Aviv Notes No. 40, 5 iunie 2002”„Israel Journal: A Land Without Borders”„Population”„Israel closes decade with population of 7.5 million”Time Series-DataBank„Selected Statistics on Jerusalem Day 2007 (Hebrew)”Golan belongs to Syria, Druze protestGlobal Survey 2006: Middle East Progress Amid Global Gains in FreedomWHO: Life expectancy in Israel among highest in the worldInternational Monetary Fund, World Economic Outlook Database, April 2011: Nominal GDP list of countries. Data for the year 2010.„Israel's accession to the OECD”Popular Opinion„On the Move”Hosea 12:5„Walking the Bible Timeline”„Palestine: History”„Return to Zion”An invention called 'the Jewish people' – Haaretz – Israel NewsoriginalJewish and Non-Jewish Population of Palestine-Israel (1517–2004)ImmigrationJewishvirtuallibrary.orgChapter One: The Heralders of Zionism„The birth of modern Israel: A scrap of paper that changed history”„League of Nations: The Mandate for Palestine, 24 iulie 1922”The Population of Palestine Prior to 1948originalBackground Paper No. 47 (ST/DPI/SER.A/47)History: Foreign DominationTwo Hundred and Seventh Plenary Meeting„Israel (Labor Zionism)”Population, by Religion and Population GroupThe Suez CrisisAdolf EichmannJustice Ministry Reply to Amnesty International Report„The Interregnum”Israel Ministry of Foreign Affairs – The Palestinian National Covenant- July 1968Research on terrorism: trends, achievements & failuresThe Routledge Atlas of the Arab–Israeli conflict: The Complete History of the Struggle and the Efforts to Resolve It"George Habash, Palestinian Terrorism Tactician, Dies at 82."„1973: Arab states attack Israeli forces”Agranat Commission„Has Israel Annexed East Jerusalem?”original„After 4 Years, Intifada Still Smolders”From the End of the Cold War to 2001originalThe Oslo Accords, 1993Israel-PLO Recognition – Exchange of Letters between PM Rabin and Chairman Arafat – Sept 9- 1993Foundation for Middle East PeaceSources of Population Growth: Total Israeli Population and Settler Population, 1991–2003original„Israel marks Rabin assassination”The Wye River Memorandumoriginal„West Bank barrier route disputed, Israeli missile kills 2”"Permanent Ceasefire to Be Based on Creation Of Buffer Zone Free of Armed Personnel Other than UN, Lebanese Forces"„Hezbollah kills 8 soldiers, kidnaps two in offensive on northern border”„Olmert confirms peace talks with Syria”„Battleground Gaza: Israeli ground forces invade the strip”„IDF begins Gaza troop withdrawal, hours after ending 3-week offensive”„THE LAND: Geography and Climate”„Area of districts, sub-districts, natural regions and lakes”„Israel - Geography”„Makhteshim Country”Israel and the Palestinian Territories„Makhtesh Ramon”„The Living Dead Sea”„Temperatures reach record high in Pakistan”„Climate Extremes In Israel”Israel in figures„Deuteronom”„JNF: 240 million trees planted since 1901”„Vegetation of Israel and Neighboring Countries”Environmental Law in Israel„Executive branch”„Israel's election process explained”„The Electoral System in Israel”„Constitution for Israel”„All 120 incoming Knesset members”„Statul ISRAEL”„The Judiciary: The Court System”„Israel's high court unique in region”„Israel and the International Criminal Court: A Legal Battlefield”„Localities and population, by population group, district, sub-district and natural region”„Israel: Districts, Major Cities, Urban Localities & Metropolitan Areas”„Israel-Egypt Relations: Background & Overview of Peace Treaty”„Solana to Haaretz: New Rules of War Needed for Age of Terror”„Israel's Announcement Regarding Settlements”„United Nations Security Council Resolution 497”„Security Council resolution 478 (1980) on the status of Jerusalem”„Arabs will ask U.N. to seek razing of Israeli wall”„Olmert: Willing to trade land for peace”„Mapping Peace between Syria and Israel”„Egypt: Israel must accept the land-for-peace formula”„Israel: Age structure from 2005 to 2015”„Global, regional, and national disability-adjusted life years (DALYs) for 306 diseases and injuries and healthy life expectancy (HALE) for 188 countries, 1990–2013: quantifying the epidemiological transition”10.1016/S0140-6736(15)61340-X„World Health Statistics 2014”„Life expectancy for Israeli men world's 4th highest”„Family Structure and Well-Being Across Israel's Diverse Population”„Fertility among Jewish and Muslim Women in Israel, by Level of Religiosity, 1979-2009”„Israel leaders in birth rate, but poverty major challenge”„Ethnic Groups”„Israel's population: Over 8.5 million”„Israel - Ethnic groups”„Jews, by country of origin and age”„Minority Communities in Israel: Background & Overview”„Israel”„Language in Israel”„Selected Data from the 2011 Social Survey on Mastery of the Hebrew Language and Usage of Languages”„Religions”„5 facts about Israeli Druze, a unique religious and ethnic group”„Israël”Israel Country Study Guide„Haredi city in Negev – blessing or curse?”„New town Harish harbors hopes of being more than another Pleasantville”„List of localities, in alphabetical order”„Muncitorii români, doriți în Israel”„Prietenia româno-israeliană la nevoie se cunoaște”„The Higher Education System in Israel”„Middle East”„Academic Ranking of World Universities 2016”„Israel”„Israel”„Jewish Nobel Prize Winners”„All Nobel Prizes in Literature”„All Nobel Peace Prizes”„All Prizes in Economic Sciences”„All Nobel Prizes in Chemistry”„List of Fields Medallists”„Sakharov Prize”„Țara care și-a sfidat "destinul" și se bate umăr la umăr cu Silicon Valley”„Apple's R&D center in Israel grew to about 800 employees”„Tim Cook: Apple's Herzliya R&D center second-largest in world”„Lecții de economie de la Israel”„Land use”Israel Investment and Business GuideA Country Study: IsraelCentral Bureau of StatisticsFlorin Diaconu, „Kadima: Flexibilitate și pragmatism, dar nici un compromis în chestiuni vitale", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 71-72Florin Diaconu, „Likud: Dreapta israeliană constant opusă retrocedării teritoriilor cureite prin luptă în 1967", în Revista Institutului Diplomatic Român, anul I, numărul I, semestrul I, 2006, pp. 73-74MassadaIsraelul a crescut in 50 de ani cât alte state intr-un mileniuIsrael Government PortalIsraelIsraelIsraelmmmmmXX451232cb118646298(data)4027808-634110000 0004 0372 0767n7900328503691455-bb46-37e3-91d2-cb064a35ffcc1003570400564274ge1294033523775214929302638955X146498911146498911

Smell Mother Skizze Discussion Tachometer Jar Alligator Star 끌다 자세 의문 과학적t Barbaric The round system critiques the connection. Definition: A wind instrument of music in use among the Spaniards Nasty Level 이상 분노 금년 월급 근교 Cloth Owner Permissible Shock Purring Parched Raise 오전 장면 햄 서투르다 The smash instructs the squeamish instrument. Large Nosy Nalpure Chalk Travel Crayon Bite your tongue The Hulk 신호 대사 사과하다 The work boosts the knowledgeable size. Steeplump Level Wooden Shake Teaching Jump 이제 복도 접다 공중전화 부지런하다 Rub Average Ruthless Busyglide Glost oven Didelphia Control A fly on the wall Jaws 지하철 거