How to write Java wrapper class

what are java wrappers and java what are wrapper classes, how java service wrapper works and how to use java wrapper service pdf free download
OliviaCutts Profile Pic
OliviaCutts,France,Teacher
Published Date:01-08-2017
Your Website URL(Optional)
Comment
Color profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 Composite Default screen Blind Folio Blind Folio 6:1 6:1 6 Java.lang—The Math Class, Strings, and Wrappers CERTIFICATION OBJECTIVES  Using the java.lang.String Class  Using the java.lang.Math Class  Using Wrapper Classes  Using theequals() Method with Strings and Wrappers and Objects ✓ Two-Minute Drill Q&A Self Test P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:14 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 2 his chapter focuses on the aspects of the java.lang package that you’ll need to understand for the exam. The java.lang package contains many of the most fundamental and Toften-used classes in the Java API. The exam will test your knowledge of String and StringBuffer basics, including the infamous immutability of String objects, and how the more common String and StringBuffer methods work. You will be tested on many of the basic methods included in the Math class (extremely interesting), and you will need to know all about wrappers—those methods that allow you to encapsulate your favorite primitives into objects, so that you can do object-like stuff with them (like put them in collections). Finally, we’ll reveal more than you’ve ever wanted to know about how theequals() method and== operator work when dealing with String objects and wrappers. As always, our focus will be on the knowledge you’ll really need to pass the exam. Undoubtedly some very wonderful methods will be overlooked in our tour of java.lang, but we’re dedicated to helping you pass this test. CERTIFICATION OBJECTIVE Using the String Class (Exam Objective 8.2) Describe the significance of the immutability of String objects. This section covers the String and StringBuffer classes. The key concepts we’ll cover will help you understand that once a String object is created, it can never be changed—so what is happening when a String object seems to be changing? We’ll find out. We’ll also cover the differences between the String and StringBuffer classes and when to use which. Strings Are Immutable Objects Let’s start with a little background information about strings. Strictly speaking you may not need this information for the test, but a little context will help you learn what you do have to know. Handling “strings” of characters is a fundamental aspect of most programming languages. In Java, each character in a string is a 16-bit P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:14 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 3 Unicode character. Because Unicode characters are 16 bits (not the skimpy 7 or 8 bits that ASCII provides), a rich, international set of characters is easily represented in Unicode. In Java, strings are objects. Just like other objects, you can create an instance of a String with thenew keyword, as follows: String s = new String(); This line of code creates a new object of class String, and assigns the reference variable s to it. So far String objects seem just like other objects. Now, let’s give the String a value: s = "abcdef"; As you might expect the String class has about a zillion constructors, so you can use a more efficient shortcut: String s = new String("abcdef"); And just because you’ll use strings all the time, you can even say this: String s = "abcdef"; There are some subtle differences between these options that we’ll discuss later, but what they have in common is that they all create a new String object, with a value of “abcdef”, and assign it to a reference variable s. Now let’s say that you want a second reference to the String object referred to by s: String s2 = s; // refer s2 to the same String as s So far so good. String objects seem to be behaving just like other objects, so what’s all the fuss about? The certification objective states: “describe the significance of the immutability of String objects.” Ah-ha Immutability (What the heck is immutability?) Once you have assigned a String a value, that value can never change— it’s immutable, frozen solid, won’t budge, fini, done. (We’ll also talk about why later, don’t let us forget.) The good news is that while the String object is immutable, its reference variable is not, so to continue with our previous example: s = s.concat(" more stuff"); // the concat() method 'appends // a literal to the end P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:14 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 4 Now wait just a minute, didn’t we just say that Strings were immutable? So what’s all this “appending to the end of the string” talk? Excellent question; let’s look at what really happened… The VM took the value of String s (which was“abcdef”), and tacked“more stuff” onto the end, giving us the value“abcdefmorestuff”. Since Strings are immutable, the VM couldn’t stuff this new String into the old String referenced by s, so it created a new String object, gave it the value“abcdefmore stuff”, and made s refer to it. At this point in our example, we have two String objects: the first one we created, with the value“abcdef”, and the second one with the value“abcdefmorestuff”. Technically there are now three String objects, because the literal argument to concat“morestuff” is itself a new String object. But we have references only to“abcdef” (referenced by s2) and “abcdefmorestuff” (referenced by s). What if we didn’t have the foresight or luck to create a second reference variable for the“abcdef” String before we called:s=s.concat(“morestuff”);? In that case the original, unchanged String containing“abcdef” would still exist in memory, but it would be considered “lost.” No code in our program has any way to reference it—it is lost to us. Note, however, that the original “abcdef” String didn’t change (it can’t, remember, it’s immutable); only the reference variable s was changed, so that it would refer to a different String. Figure 6-1 shows what happens on the heap when you reassign a reference variable. Note that the dashed line indicates a deleted reference. To review our first example: String s = "abcdef"; // create a new String object, with value "abcdef", // refer s to it String s2 = s; // create a 2nd reference variable referring to // the same String s = s.concat(" more stuff"); // create a new String object, with value // "abcdef more stuff", refer s to it. // (change s's reference from the old // String to the new String. ( Remember // s2 is still referring to the original // "abcdef" String. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:14 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 5 FIGURE 6-1 String objects and their reference variables Let’s look at another example: String x = "Java"; x.concat(" Rules"); System.out.println("x = " + x); P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:15 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 6 The output will bex=Java. The first line is straightforward: create a new String object, give it the value “Java”, and refer x to it. What happens next? The VM creates a second String object with the value“JavaRules” but nothing refers to it The second String object is instantly lost; no one can ever get to it. The reference variable x still refers to the original String with the value“Java”. Figure 6-2 shows creating a String object without assigning to a reference. Let’s expand this current example. We started with String x = "Java"; x.concat(" Rules"); System.out.println("x = " + x); // the output is: x = Java FIGURE 6-2 A String object is abandoned upon creation P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:15 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 7 Now let’s add x.toUpperCase(); System.out.println("x = " + x); // the output is still: x = Java (We actually did just create a new String object with the value“JAVA RULES”, but it was lost, and x still refers to the original, unchanged String “Java”.) How about adding x.replace('a', 'X'); System.out.println("x = " + x); // the output is still: x = Java Can you determine what happened? The VM created yet another new String object, with the value“JXvX”, (replacing the a’s with X’s), but once again this new String was lost, leaving x to refer to the original unchanged and unchangeable String object, with the value“Java”. In all of these cases we called various String methods to create a new String by altering an existing String, but we never assigned the newly created String to a reference variable. But we can put a small spin on the previous example: String x = "Java"; x = x.concat(" Rules"); // Now we're assigning x to the new String System.out.println("x = " + x); // the output will be: // x = Java Rules This time, when the VM runs the second line, a new String object is created with the value of“JavaRules”, and x is set to reference it. But wait, there’s more—now the original String object,“Java”, has been lost, and no one is referring to it. So in both examples we created two String objects and only one reference variable, so one of the two String objects was left out in the cold. See Figure 6-3 for a graphic depiction of this sad story. The dashed line indicates a deleted reference. Let’s take this example a little further: String x = "Java"; x = x.concat(" Rules"); System.out.println("x = " + x); // the output is: x = Java Rules x.toLowerCase(); // no assignment, create a new, abandoned String System.out.println("x = " + x); // no assignment, the output is // still: x = Java Rulesx = P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:15 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 8 x.toLowerCase(); // create a new String, assigned to x System.out.println("x="+x); // the assignment causes the output: // x = java rules The previous discussion contains the keys to understanding Java String immutability. If you really, really get the examples and diagrams, backwards and forwards, you should get 80 percent of the String questions on the exam correct. We will cover more details about Strings next, but make no mistake—in terms of bang for your buck, what we’ve already covered is by far the most important part of understanding how String objects work in Java. We’ll finish this section by presenting an example of the kind of devilish String question you might expect to see on the exam. Take the time to work it out on paper (as a hint, try to keep track of how many objects and reference variables there are, and which ones refer to which). FIGURE 6-3 An old String object being abandoned P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:16 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 9 String s1 = "spring "; String s2 = s1 + "summer "; s1.concat("fall "); s2.concat(s1); s1 += "winter "; System.out.println(s1 + " " + s2); What is the output? For extra credit, how many String objects and how many reference variables were created prior to theprintln statement? Answer: The result of this code fragment is“springwinterspringsummer”. There are two reference variables, s1 and s2. There were a total of eight String objects created as follows: “spring”, “summer ” (lost), “spring summer”, “fall” (lost), “spring fall” (lost), “spring summer spring” (lost), “winter” (lost), “spring winter” (at this point “spring” is lost). Only two of the eight String objects are not lost in this process. Important Facts About Strings and Memory In this section we’ll discuss how Java handles string objects in memory, and some of the reasons behind these behaviors. One of the key goals of any good programming language is to make efficient use of memory. As applications grow, it’s very common that String literals occupy large amounts of a program’s memory, and that there is often a lot of redundancy within the universe of String literals for a program. To make Java more memory efficient, the JVM sets aside a special area of memory called the “String constant pool.” When the compiler encounters a String literal, it checks the pool to see if an identical String already exists. If a match is found, the reference to the new literal is directed to the existing String, and no new String literal object is created. (The existing String simply has an additional reference.) Now we can start to see why making String objects immutable is such a good idea. If several reference variables refer to the same String without even knowing it, it would be very bad if any of them could change the String’s value. You might say, “Well that’s all well and good, but what if someone overrides the String class functionality; couldn’t that cause problems in the pool?” That’s one of the main reasons that the String class is markedfinal. Nobody can override the behaviors of any of the String methods, so you can rest assured that the String objects you are counting on to be immutable will, in fact, be immutable. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:16 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 10 Creating New Strings Earlier we promised to talk more about the subtle differences between the various methods of creating a String. Let’s look at a couple of examples of how a String might be created, and let’s further assume that no other String objects exist in the pool: 1 – String s = "abc"; // creates one String object and one reference // variable In this simple case,“abc” will go in the pool and s will refer to it. 2 – String s = new String("abc"); // creates two objects, and one // reference variable In this case, because we used thenew keyword, Java will create a new String object in normal (nonpool) memory, and s will refer to it. In addition, the literal “abc” will be placed in the pool. Important Methods in the String Class The following methods are some of the more commonly used methods in the String class, and also the ones that you’re most likely to encounter on the exam. public char charAt(int index) This method returns the character located at the String’s specified index. Remember that String indexes are zero-based—for example, String x = "airplane"; System.out.println( x.charAt(2) ); // output is 'r' public String concat(String s) This method returns a String with the value of the String passed in to the method appended to the end of the String used to invoke the method—for example, String x = "taxi"; System.out.println( x.concat(" cab") ); // output is "taxi cab" The overloaded + and += operators perform functions similar to theconcat() method—for example, String x = "library"; System.out.println(x+" card"); // output is "library card" P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:16 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 11 1. String x = "Atlantic"; 2. x += " ocean" 3. System.out.println( x ); // output is "Atlantic ocean" In the preceding “Atlantic Ocean” example, notice that the value of x really did change Remember that the += operator is an assignment operator, so line 2 is really creating a new String, “Atlantic Ocean”, and assigning it to the x variable. After line 2 executes, the original String x was referring to, “Atlantic”, is abandoned. public Boolean equalsIgnoreCase(String s) This method returns a boolean value (true orfalse) depending on whether the value of the String in the argument is the same as the value of the String used to invoke the method. This method will returntrue even when characters in the String objects being compared have differing cases—for example, String x = "Exit"; System.out.println( x.equalsIgnoreCase("EXIT")); // returns "true" System.out.println( x.equalsIgnoreCase("tixe")); // returns "false" public int length() This method returns the length of the String used to invoke the method—for example, String x = "01234567"; System.out.println( x.length() ); // returns "8" Arrays have an attribute (not a method), calledlength. You may encounter questions in the exam that attempt to use thelength() method on an array, or that attempt to use thelength attribute on a String. Both cause compiler errors—for example, Stringx=“test”; System.out.println(x.length); //compilererror or Stringx=newString3; System.out.println(x.length()); P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:16 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 12 public String replace(char old, char new) This method returns a String whose value is that of the String used to invoke the method, updated so that any occurrence of the char in the first argument is replaced by the char in the second argument—for example, String x = "oxoxoxox"; System.out.println( x.replace('x', 'X') ); // output is "oXoXoXoX" public String substring(int begin) public String substring(int begin, int end) Thesubstring() method is used to return a part (or substring) of the String used to invoke the method. The first argument represents the starting location (zero-based) of the substring. If the call has only one argument, the substring returned will include the characters to the end of the original String. If the call has two arguments, the substring returned will end with the character located in the nth position of the original String where n is the second argument. Unfortunately, the ending argument is not zero-based, so if the second argument is 7, the last character in the returned String will be in the original String’s 7 position, which is index 6 (ouch). Let’s look at some examples: String x = "0123456789"; // as if by magic, the value of each char // is the same as its index System.out.println( x.substring(5) ); // output is "56789" System.out.println( x.substring(5, 8)); // output is "567" The first example should be easy: start at index 5 and return the rest of the String. The second example should be read as follows: start at index 5 and return th the characters up to and including the 8 position (index 7). public String toLowerCase() This method returns a String whose value is the String used to invoke the method, but with any uppercase characters converted to lowercase—for example, Stringx="ANew Moon"; System.out.println( x.toLowerCase() ); // output is "a new moon" public String toString() This method returns the value of the String used to invoke the method. What? Why would you need such a seemingly “do nothing” method? All objects in Java must P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:16 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 13 have atoString() method, which typically returns a String that in some meaningful way describes the object in question. In the case of a String object, what more meaningful way than the String’s value? For the sake of consistency, here’s an example: String x = "big surprise"; System.out.println( x.toString() ); // output – reader's exercise public String toUpperCase() This method returns a String whose value is the String used to invoke the method, but with any lowercase characters converted to uppercase—for example, Stringx="ANew Moon"; System.out.println( x.toUpperCase() ); // output is "A NEW MOON" public String trim() This method returns a String whose value is the String used to invoke the method, but with any leading or trailing blank spaces removed—for example, Stringx=" hi "; System.out.println( x + "x" ); // result is " hi x" System.out.println( x.trim() + "x"); // result is "hix" The StringBuffer Class The StringBuffer class should be used when you have to make a lot of modifications to strings of characters. As we discussed in the previous section, String objects are immutable, so if you choose to do a lot of manipulations with String objects, you will end up with a lot of abandoned String objects in the String pool. On the other hand, objects of type StringBuffer can be modified over and over again without leaving behind a great effluence of discarded String objects. A common use for StringBuffers is file I/O when large, ever-changing streams of input are being handled by the program. In these cases, large blocks of characters are handled as units, and StringBuffer objects are the ideal way to handle a block of data, pass it on, and then reuse the same memory to handle the next block of data. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:17 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 14 In the previous section, we saw how the exam might test your understanding of String immutability with code fragments like this: String x = "abc"; x.concat("def"); System.out.println("x = " + x); // output is "x = abc" Because no new assignment was made, the new String object created with the concat() method was abandoned instantly. We also saw examples like this: String x = "abc"; x = x.concat("def"); System.out.println("x = " + x); // output is "x = abcdef" We got a nice new String out of the deal, but the downside is that the old String “abc” has been lost in the String pool, thus wasting memory. If we were using a StringBuffer instead of a String, the code would look like this: StringBuffer sb = new StringBuffer("abc"); sb.append("def"); System.out.println("sb="+ sb); // output is "sb = abcdef" All of the StringBuffer methods we will discuss operate on the value of the StringBuffer object invoking the method. So a call tosb.append(“def”); is actually appending“def” to itself (StringBuffersb). In fact, these method calls can be chained to each other—for example, StringBuffer sb = new StringBuffer("abc"); sb.append("def").reverse().insert(3, "-"); System.out.println( sb ); // output is "fed-cba" The exam will probably test your knowledge of the difference between String and StringBuffer objects. Because StringBuffer objects are changeable, the following code fragment will behave differently than a similar code fragment that uses String objects: StringBuffersb=newStringBuffer("abc"); sb.append("def"); System.out.println(sb); In this case, the output will be “abcdef” P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:17 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Using the String Class (Exam Objective 8.2) 15 Important Methods in the StringBuffer Class The following method returns a StringBuffer object with the argument’s value appended to the value of the object that invoked the method: public synchronized StringBuffer append(String s) As we’ve seen earlier, this method will update the value of the object that invoked the method, whether or not the return is assigned to a variable. This method will take many different arguments, boolean, char, double, float, int, long, and others, but the most likely use on the exam will be a String argument—for example, StringBuffer sb = new StringBuffer("set "); sb.append("point"); System.out.println( sb ); // output is "set point" or StringBuffer sb = new StringBuffer("pi = "); sb.append(3.14159f); System.out.println( sb ); // output is "pi = 3.14159" public synchronized StringBuffer insert(int offset, String s) This method returns a StringBuffer object and updates the value of the StringBuffer object that invoked the method call. In both cases, the String passed in to the second argument is inserted into the original StringBuffer starting at the offset location represented by the first argument (the offset is zero-based). Again, other types of data can be passed in through the second argument (boolean, char, double, float, int, long, etc.), but the String argument is the one you’re most likely o see: StringBuffer sb = new StringBuffer("01234567"); sb.insert(4, "-"); System.out.println( sb ); // output is "0123-4567" public synchronized StringBuffer reverse() This method returns a StringBuffer object and updates the value of the StringBuffer object that invoked the method call. In both cases, the characters in the StringBuffer P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:17 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 16 are reversed, the first character becoming the last, the second becoming the second to the last, and so on: StringBuffer sb = new StringBuffer("A man a plan a canal Panama"); System.out.println( sb ); // output is "amanaP lanac a nalp a nam A" public String toString() This method returns the value of the StringBuffer object that invoked the method call as a String: StringBuffer sb = new StringBuffer("test string"); System.out.println( sb.toString() ); // output is "test string" That’s it for StringBuffers. If you take only one thing away from this section, it’s that unlike Strings, StringBuffer objects can be changed. Many of the exam questions covering this chapter’s topics use a tricky bit of Java syntax known as chained methods. A statement with chained methods has the general form: result=method1().method2().method3(); In theory, any number of methods can be chained in this fashion, although typically you won’t see more than three. Here’s how to decipher these “handy Java shortcuts” when you encounter them: 1. Determine what the leftmost method call will return (let’s call it x). 2. Use x as the object invoking the second (from the left) method. If there are only two chained methods, the result of the second method call is the expression’s result. 3. If there is a third method, the result of the second method call is used to invoke the third method, whose result is the expression’s result— for example, Stringx="abc"; Stringy=x.concat("def").toUpperCase().replace('C','x');//chainedmethods System.out.println("y="+y);//resultis"ABxDEF" Let’s look at what happened. The literal“def” was concatenated to“abc”, creating a temporary, intermediate String (soon to be lost), with the value “abcdef”. ThetoUpperCase() method created a new (soon to be lost) temporary String with the value“ABCDEF”. Thereplace() method created a final String with the value“ABxDEF”, and referred y to it. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:17 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the Math Class (Exam Objective 8.1) 17 CERTIFICATION OBJECTIVE Using the Math Class (Exam Objective 8.1) Write code using the following methods of the java.lang.Math class: abs, ceil, floor, max, min, random, round, sin, cos, tan, sqrt. The java.lang package defines classes that are fundamental to the Java language. For this reason, all classes in the java.lang package are imported automatically, so there is no reason to write animport statement for them. The package defines object wrappers for all primitive types. The class names are Boolean, Byte, Character, Double, Float, Integer, Long, Short, and Void as well as Object, the class from which all other Java classes inherit. The java.lang package also contains the Math class, which is used to perform basic mathematical operations. The Math class defines approximations for the mathematical constants pi and e. Their signatures are as follows: public final static double Math.PI public final static double Math.E Because all methods of the Math class are defined asstatic, you don’t need to create an instance to use them. In fact, it’s not possible to create an instance of the Math class because the constructor isprivate. You can’t extend the Math class either, because it’s markedfinal. Methods of the java.lang.Math Class The methods of the Math class are static and are accessed like any static method—through the class name. For these method calls the general form is result = Math.aStaticMathMethod(); The following sections describe the Math methods and include examples of how to use them. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:17 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 18 abs() Theabs() method returns the absolute value of the argument—for example, x = Math.abs(99); // output is 99 x = Math.abs(-99) // output is 99 The method is overloaded to take an int, a long, a float, or a double argument. In all but two cases, the returned value is non-negative. The signatures of theabs() method are as follows: public static int abs(int a) public static long abs(long a) public static float abs(float a) public static double abs(double a) ceil() Theceil() method returns the smallest integer, as a double, that is greater than or equal to the argument and equal to the nearest integer value. In other words, the argument is rounded up to the nearest integer equivalent. Let’s look at some examples of this in action, just to make sure you are familiar with the concept. All the following calls toMath.ceil() return the double value 9.0: Math.ceil(9.0) // result is 9.0 Math.ceil(8.8) // rises to 9.0 Math.ceil(8.02) // still rises to 9.0 Negative numbers are similar, but just remember that –9 is greater than –10. All the following calls toMath.ceil() return the double value -9.0: Math.ceil(-9.0) // result is –9.0 Math.ceil(-9.4) // rises to –9.0 Math.ceil(-9.8) // still rises to –9.0 There is only oneceil() method and it has the following signature: public static double ceil(double a) floor() Thefloor() method returns the largest double that is less than or equal to the argument and equal to the nearest integer value. This method is the antithesis of theceil() method. P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:18 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Using the Math Class (Exam Objective 8.1) 19 All the following calls toMath.floor() return the double value 9.0: Math.floor(9.0) // result is 9.0 Math.floor(9.4) // drops to 9.0 Math.floor(9.8) // still drops to 9.0 As before, keep in mind that with negative numbers, –9 is less than –8 All the following calls toMath.floor() return the double value –9.0: Math.floor(-9.0) // result is –9.0 Math.floor(-8.8) // drops to –9.0 Math.floor(-8.1) // still drops to –9.0 The signature of thefloor() method is as follows: public static double floor(double a) Thefloor() andceil() methods take only doubles. There are no overloaded methods for integral numbers, because the methods would just end up returning the integral numbers they were passed. The whole point offloor() andceil() is to convert floating-point numbers(doubles), to integers, based on the rules of the methods. It may seem strange (it does to us) that the integer values are returned in a double sized container, but don’t let that throw you. max() Themax() method takes two numeric arguments and returns the greater of the two—for example, x = Math.max(1024, -5000); // output is 1024. This method is overloaded to handle int, long, float, or double arguments. If the input parameters are the same,max() returns a value equal to the two arguments. The signatures of themax() method are as follows: public static int max(int a, int b) public static long max(long a, long b) public static float max(float a, float b) public static double max(double a, double b) P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:18 PMColor profile: Generic CMYK printer profile CertPrs8(SUN) CertPrs8(SUN) CertPrs8(SUN) / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter / Sun Certified Programmer & Developer for Java 2 Study Guide / Sierra / 222684-6 / Chapter 6 6 6 Composite Default screen Chapter 6: Java.lang—The Math Class, Strings, and Wrappers 20 min() Themin() method is the antithesis of themax() method; it takes two numeric arguments and returns the lesser of the two—for example, x = Math.min(0.5, 0.0); // output is 0.0 This method is overloaded to handle int, long, float, or double arguments. If the input parameters are the same,min() returns a value equal to the two arguments. The signatures of themin() method are as follows: public static int min(int a, int b) public static long min(long a, long b) public static float min(float a, float b) public static double min(double a, double b) And for the record, we’re pretty impressed with our use of the word “antithesis”. EXERCISE 6-1 Using the Math Class In this exercise we will examine some numbers using theabs(),ceil(), and floor() methods of the Math class. Find the absolute, ceiling, and floor values of the following numbers: 10.5, –10.5, Math.PI, and 0. ■ Create a class and amain() method to perform the calculations. ■ Store these numbers in an array of double values. ■ Use a for loop to go through the array and perform the tests on each of these numbers. ■ Try to determine what the results of your program will be before running it. ■ An example solution is provided at the end of the chapter. random() Therandom() method returns a random double that is greater than or equal to 0.0 and less than 1.0. Therandom() method does not take any parameters— for example, P:\010Comp\CertPrs8\684-6\ch06.vp Wednesday, November 13, 2002 5:16:18 PM

Advise: Why You Wasting Money in Costly SEO Tools, Use World's Best Free SEO Tool Ubersuggest.