 One of the issues we've run into with using just a string is the fact that strings are immutable. What do we do? If I have an integer that's too big, we used a big integer class. Well, guess what? We have something just like that for our string data type. We can start to expand on it using something called the string builder class. We also can use something called string buffer. It's a little different, but we'll talk about buffers a little later on in the semester. One thing to take note of is you can see we've got the UML constructors going on here. We have a noR constructor, one that takes an integer and one that takes a string. That integer one, that one's interesting. Even if we look at, say, for example, the noR, notice how it says it has a capacity of 16. Then we can say we can make that any number we want just by passing an integer. The idea behind this is, if we think about a standard string for a second, a standard string can have no characters whatsoever, and so this is a dot length of zero. Or it can have a giant large amount to it that I have no idea about. That can be dot length 5,000, 50,000. I could put the incomplete works of William Shakespeare inside of a string, hopefully a bridge. But I could do that. Now, that's annoying. So what we can work with is now this string builder class. We say that this string builder class, I wanted to have the capacity. I want it to be a specific size that I can work with string builder. So say, for example, 10. I have the capacity of storing 10 characters in this. Now you're thinking, all right, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. That doesn't sound like a lot, and you're telling me that this is supposed to be more flexible. Well, what happens is, let's say, for example, we do that. We create the capacity to store 10 characters, capacity, and I add in the word welcome. That's seven characters already being used, just one word. Then I add in a space. Now I'm at eight, and I add in the word two. Now I'm at 10. Oh my goodness, I can't do anything else. Mr. Guida, you said that this was supposed to be more flexible. It is. Guess what happens when I do this? Java doesn't freak out. The string builder doesn't freak out. What happens is it increases the capacity, capacity. So then when I do this, even though I'm at 16 characters total, guess what? I have, all of a sudden, enough to work on that. So here's a little exercise for you. If you were to write this code out, what is the capacity? I'll let you take a second, and we'll just keep on moving on. So we have tons of different methods available, that was a terrible squiggly, but I have, with my umeligan, some class methods that I can work with. I have, for example, a pen. You see, there are overloaded appends. There are four append methods, because we can overload a method. We can overload a method. Each one of these has a different data signature. One is adding a char array, one has a char array with an offset and a length to it. One says just any primitive data type will work, an integer, a double, whatever, char. And then guess what? We have the string one. Then you see we have sort of delete, delete char at. So if I wanted to say, for example, we look at this string array, I come in afterwards and I do string builder, if I come in and I say str build, delete char at, char at one. What happens? Well, that e goes away and my string suddenly, without having to create something new, make substrings string concatenate, it becomes, welcome to Java, Java without the e, no e. That's pretty nice if you think about it. And we can continue going on. We've got our insert, so I can insert four different ways, just like I could append. I've got a replace. I have, even here's a nice one, reverse. I can take my string and I can just reverse it around. That's nice. We have a few others. So again, I told you what was the capacity of string build. Guess what you can do? You can come in here and you can just simply write out str build dot capacitive, capacitive. There we are. I meant to do that. And it will tell you how big string builder is and then you can say, oh well, even though it's really big and I only need 16 characters, guess what? We have something str build dot trim to size because again, we don't need to store up too much space on our computer. So we say, shrink it down to only the characters. As you can see, we've got now these classes that we can work with, play with, and do a little bit more flexible control with our basic data.