Reference Data Type - Strings Example

Complete Step By Step Java for Testers Java Concepts - Data Types
11 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€92.30
List Price:  €129.22
You save:  €36.92
£79.14
List Price:  £110.81
You save:  £31.66
CA$135.92
List Price:  CA$190.30
You save:  CA$54.37
A$153.17
List Price:  A$214.44
You save:  A$61.27
S$134.71
List Price:  S$188.59
You save:  S$53.88
HK$782.26
List Price:  HK$1,095.19
You save:  HK$312.93
CHF 90.56
List Price:  CHF 126.79
You save:  CHF 36.22
NOK kr1,076.34
List Price:  NOK kr1,506.92
You save:  NOK kr430.58
DKK kr688.47
List Price:  DKK kr963.88
You save:  DKK kr275.41
NZ$166.49
List Price:  NZ$233.09
You save:  NZ$66.60
د.إ367.19
List Price:  د.إ514.08
You save:  د.إ146.89
৳11,000.23
List Price:  ৳15,400.77
You save:  ৳4,400.53
₹8,335.05
List Price:  ₹11,669.40
You save:  ₹3,334.35
RM473.25
List Price:  RM662.57
You save:  RM189.32
₦139,656.03
List Price:  ₦195,524.03
You save:  ₦55,868
₨27,872.43
List Price:  ₨39,022.53
You save:  ₨11,150.09
฿3,637.73
List Price:  ฿5,092.97
You save:  ฿1,455.24
₺3,222.80
List Price:  ₺4,512.05
You save:  ₺1,289.25
B$497.67
List Price:  B$696.75
You save:  B$199.08
R1,888.37
List Price:  R2,643.79
You save:  R755.42
Лв180.67
List Price:  Лв252.95
You save:  Лв72.27
₩134,942
List Price:  ₩188,924.20
You save:  ₩53,982.20
₪366.06
List Price:  ₪512.51
You save:  ₪146.44
₱5,625.18
List Price:  ₱7,875.48
You save:  ₱2,250.29
¥15,118.78
List Price:  ¥21,166.90
You save:  ¥6,048.12
MX$1,663.06
List Price:  MX$2,328.35
You save:  MX$665.29
QR365.44
List Price:  QR511.63
You save:  QR146.19
P1,373.02
List Price:  P1,922.28
You save:  P549.26
KSh13,148.68
List Price:  KSh18,408.68
You save:  KSh5,260
E£4,723.53
List Price:  E£6,613.14
You save:  E£1,889.60
ብር5,694.53
List Price:  ብር7,972.57
You save:  ብር2,278.04
Kz83,612.73
List Price:  Kz117,061.17
You save:  Kz33,448.44
CLP$98,024.19
List Price:  CLP$137,237.79
You save:  CLP$39,213.60
CN¥722.49
List Price:  CN¥1,011.52
You save:  CN¥289.02
RD$5,928.03
List Price:  RD$8,299.48
You save:  RD$2,371.45
DA13,469.95
List Price:  DA18,858.47
You save:  DA5,388.52
FJ$225.25
List Price:  FJ$315.36
You save:  FJ$90.11
Q781.84
List Price:  Q1,094.62
You save:  Q312.77
GY$20,987.69
List Price:  GY$29,383.60
You save:  GY$8,395.91
ISK kr13,817.61
List Price:  ISK kr19,345.21
You save:  ISK kr5,527.60
DH1,010.57
List Price:  DH1,414.84
You save:  DH404.26
L1,763.81
List Price:  L2,469.40
You save:  L705.59
ден5,677.01
List Price:  ден7,948.05
You save:  ден2,271.03
MOP$807.66
List Price:  MOP$1,130.76
You save:  MOP$323.09
N$1,895.98
List Price:  N$2,654.45
You save:  N$758.46
C$3,689.21
List Price:  C$5,165.04
You save:  C$1,475.83
रु13,357.88
List Price:  रु18,701.57
You save:  रु5,343.68
S/371.02
List Price:  S/519.45
You save:  S/148.42
K383.60
List Price:  K537.05
You save:  K153.45
SAR375.02
List Price:  SAR525.04
You save:  SAR150.02
ZK2,548.47
List Price:  ZK3,567.96
You save:  ZK1,019.49
L458.83
List Price:  L642.38
You save:  L183.55
Kč2,334.38
List Price:  Kč3,268.22
You save:  Kč933.84
Ft36,425.52
List Price:  Ft50,997.18
You save:  Ft14,571.66
SEK kr1,059.50
List Price:  SEK kr1,483.35
You save:  SEK kr423.84
ARS$85,666.43
List Price:  ARS$119,936.42
You save:  ARS$34,269.99
Bs695.09
List Price:  Bs973.16
You save:  Bs278.06
COP$389,673.99
List Price:  COP$545,559.18
You save:  COP$155,885.18
₡50,509.65
List Price:  ₡70,715.54
You save:  ₡20,205.88
L2,474.33
List Price:  L3,464.17
You save:  L989.83
₲736,638.54
List Price:  ₲1,031,323.43
You save:  ₲294,684.88
$U3,781
List Price:  $U5,293.55
You save:  $U1,512.55
zł398.17
List Price:  zł557.46
You save:  zł159.28
Already have an account? Log In

Transcript

Hello guys, welcome back to the next tutorial. This is the tutorial, which is gonna be somewhat the most important tutorial because we're gonna be discussing strings. And in Java strings are special because they are the most widely used pretty much in every program. We use strings, a lot of times our times we do string manipulations and all those things, right. So just pay a little bit extra attention to this one because it's simple. So you, you don't need to have a lot of concentration.

But you know what, just pay a little bit extra attention. So you just get the hang of it. So let's get started. I'm just going to quickly open Eclipse. And as usual, we just have a demo class that I created public class string demo, and a main method. I'm just gonna write it.

Right, right. So the way we define string is, first of all, it's a reference datatype. It's not a primitive data type. We already discussed primitive data types. So this is the reference here, which means it's an object, right? So the baby creates string is like this string.

And we can name it like string str one, and can say anything. So the content, the value that we're going to assign to the string goes in double quotes. So it's like, Hello, right? And we end with the semicolon. So if you notice, one thing to pay attention is the s in string is capitalized, so just be aware of that. And it comes from Java dot Lang dot String class, which is already there.

So that's the class which we are creating an object. So when we do that, it's, it's it's the new object. So we're we're not creating a primitive variable or something. It's the new object that differences we don't have to always say something like this. So you guys know right? How do we create object to create an object we do something like this, something like string str to equal to new strength, right?

And then inside it. We can give it value, maybe welcome something like that, right? So this is creating an object, right? So there are two ways to define define a string. The first way is this line, line number five, right. And the second way is line number seven.

So we can define strings in two ways. And I'm not explaining what the differences. JVM is the Java Virtual Machine on top of it, which all these Java infrastructure and all those things works. So it has two ways to handle memory. So let me just quickly open paint and I'll show you what I'm talking about. So let's just quickly create size or something, right select and then size or something like that, right.

So let's assume that this is the membranes out. So the first way to create the first memory way is this tag, which is used for exclusion purpose. So we're not going to talk about it just it's outside. So the second way is the heat So this is the heap memory. Let's assume that. So heap is used for storage, right?

So I'm just gonna write it's used for storage, it's used and this one is used for execution, right? So, whenever a new object is created by Java, it's just gonna go and sit into the key. The special part is because strings are so often used, it has a special call for it, which is known as maybe we can say something like this. Let's say something like this, and let's name it. I'm not naming anything, it's the name actually. So the name is string constant pool, right?

So this is a part of memory. So any object of string type we create goes and sit in this string constant pool. And that's how it is created differently. It JVM allocate some special memory that is only meant for string literals and I'm going to just mention this as well, it's only meant for literals. And I'm going to explain you what's the difference, right? So that's where all the string literals goes and goes and saves themselves right?

Here, all other objects, objects, right? So that's how Java manages memory. And that's how that's where Java saves its objects. And it's string literals. So this thing is string constant pool where everything is saved, which is created by string literals. Right?

And let's talk about it. So the first one is the string literal. This is this goes and saving string, constant pool, right? And the second one is string object. Okay, and this goes into even. So that's the difference in creating a string variable in two different ways.

So always this is preferred until or unless you really need it. But I always prefer to create string ads. A string literal. Alright, so as you already seen the different site, this is a special tool, so it's definitely going to work more customized for the string. So it's always good to use this. All righty, so this is great.

Now, when we are creating, say something like this string, str one and Hello. So don't misunderstand that str one is an object. No, hello is an object, right? That the content the Hello, it's an object, str one. It's only the reference to the object. So just imagine it's something like that when I created Hello gets created here, and something like that.

That str one is outside. And what it's doing, it's just referencing it. That's what it's doing. If I create any other object here, let's see. Let's see we created welcome right and the next one which was created in the heap, right. So that's created Here, and there is some reference outside, which is str two, which is referencing it.

So that's important to understand that str one is a reference that we're using to access the object Hello. And here str two is a reference that we are using to access the object welcome. So always keep that thing in mind. All right. Now other than this, there is one more interesting fact about string constant pool. So pole spaces are located to an object depending upon its content, right?

According to its content. So if I say string, and str three and say, Hello, right? So what do you guys think what's going to happen? So string literal pool is smart. That's why it's created separately. If it sees the same content, it does not create a new object.

It just creates a new reference and it points To the same object, so what's gonna happen is, it's just gonna create one more reference to this one. And it's just gonna create a new reference, right? So it's just gonna point this new reference str three created to the same object. That's the beauty of the string constant pool. So there will be no two objects in the pool having the same content. This is what this is what basically happens when you create string objects like literals, right.

So otherwise, if you create something like this string, str core and new string and call it welcome as well. Right, so sorry, I have to put that under the coats. So welcome. This is going to create a new object. So this is not going to work the same way as the strings work. This is going to create a new object name is welcome and outside, it's going to create str four, and then it's gonna point it right, it's gonna repeat it.

So that's the beauty of string constant pool, that if you create a new string literal and it has the same contents, then it does not create a new object. So that's a very good memory utilization, right, we're not wasting any space with the same contents right? Here, we are wasting space. So that's, that's why strings are smart. So it's gonna have the same containers up there. And it just gonna create one more reference and point it to the same object.

So that's how it saves the space in the memory. That's where string literals are smart, and they're very useful. So that's the reason is that I always encourage you to create string literals whenever you want to work with strings. But if you really want to create strings in the form of objects, if it's needed somehow in your code, then just go ahead with that. So that's pretty much it. And yeah, one more concept that I want to talk about is strings are immutable.

So what does we mean by immutable? Right? So what we mean is that whenever I create a new object, a new string, it cannot be changed, right? So let's say if I say str one, it was already defined as Hello, right? Now, I can easily say no, I changed it, man. Hello.

And maybe str one is now let's change it to more Hello, or something like that, right? So I can easily say that I changed it, right? No, but I never change it. What happens is more Hello is the new object that gets created in this string literal. Up here. It's gonna create one more.

More Hello. Let's type it up there. So more Hello. And it's just gonna change the reference now. So it says appoint the str one to more Hello. And it's gonna remove that.

So it's just gonna remove that I can just get rid of it somehow. So this is to understand. So what happens is only the reference changes, not the object. So this object is just gonna sit there, if it's not needed, it's if it's not referenced by any other reference, it's just going to get in garbage collected when when the GC runs, right. So we are never creating, we are never adding the string. We are never modifying this thing.

It's always the newest thing. Even if I say that I am doing. Let's see if I'm defining string and add something like that. And if I'm saying str one, plus STr two, so what I'm doing is I'm adding the content of these two, but I'm creating a new object like this. Even if I don't do that. It's just gonna create a new object.

So we are never adding No, we're never modern. Find this thing. Sorry, sorry about the adding. But we are never modifying this thing. They're always creating a new object, or the new string literal in the string constant pool. So just keep that in mind.

That's why we say always use strings wisely. Never, never over declare them because it's gonna utilize pace memory. So just use them wisely because they're immutable. So that's pretty much it guys. In next tutorial, we're going to discuss things in a little bit more detail, kind of see some string methods and all those things. So that's pretty much it guys.

Thanks for attending this one. Stay tuned for the next ones. Thanks, guys.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.