📄 088-093.html
字号:
<HTML>
<HEAD>
<META name=vsisbn content="1558515682"><META name=vstitle content="Java Digital Signal Processing"><META name=vsauthor content="Douglas A. Lyon"><META name=vsimprint content="M&T Books"><META name=vspublisher content="IDG Books Worldwide, Inc."><META name=vspubdate content="11/01/97"><META name=vscategory content="Web and Software Development: Programming, Scripting, and Markup Languages: Java"><TITLE>Java Digital Signal Processing:Java Programming: The Basics</TITLE>
<!-- HEADER --><STYLE type="text/css"> <!-- A:hover { color : Red; } --></STYLE><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<!--ISBN=1558515682//-->
<!--TITLE=Java Digital Signal Processing//-->
<!--AUTHOR=Douglas A. Lyon//-->
<!--PUBLISHER=IDG Books Worldwide, Inc.//-->
<!--IMPRINT=M & T Books//-->
<!--CHAPTER=2//-->
<!--PAGES=088-093//-->
<!--UNASSIGNED1//-->
<!--UNASSIGNED2//-->
<CENTER>
<TABLE BORDER>
<TR>
<TD><A HREF="085-088.html">Previous</A></TD>
<TD><A HREF="../ewtoc.html">Table of Contents</A></TD>
<TD><A HREF="093-097.html">Next</A></TD>
</TR>
</TABLE>
</CENTER>
<P><BR></P>
<P><FONT SIZE="+1"><B>The Numeric Wrapper Classes</B></FONT></P>
<P>Each of the numeric primitive types has an associated wrapper class. In the following examples, let:
</P>
<!-- CODE SNIP //-->
<PRE>
int i = 0;
long l = 0;
float f = 0;
double d = 0;
</PRE>
<!-- END CODE SNIP //-->
<P>The name of the primitive numeric type, followed by its constructor wrapper class, follows:
</P>
<!-- CODE SNIP //-->
<PRE>
Integer I = new Integer(i);
Long L = new Long(l);
Float F = new Float(f);
Double D = new Double(d);
</PRE>
<!-- END CODE SNIP //-->
<P>Each of the numeric wrapper classes supports a conversion to a string:
</P>
<!-- CODE SNIP //-->
<PRE>
String SI = I.toString();
String SL = L.toString();
String SF = F.toString();
String SD = D.toString();
</PRE>
<!-- END CODE SNIP //-->
<P>Each of the numeric wrapper classes supports a conversion from a string to a reference type:
</P>
<!-- CODE SNIP //-->
<PRE>
Integer I = new Integer(SI);
Long L = new Long(SL);
Float F = new Float(SF);
Double D = new Double(SD);
</PRE>
<!-- END CODE SNIP //-->
<BLOCKQUOTE>
<P><FONT SIZE="-1"><HR>Any string-to-numeric conversion can throw a <I>NumberFormat</I> exception. If you read a string (from a user’s input or file), you are strongly advised to check the input.<HR></FONT>
</BLOCKQUOTE>
<P>Each of the numeric wrapper classes supports a conversion from a string to a primitive type using a static method invocation:
</P>
<!-- CODE SNIP //-->
<PRE>
I = Integer.valueOf(SI);
L = Long.valueOf(SL);
F = Float.valueOf(SF);
D = Double.valueOf(SD);
</PRE>
<!-- END CODE SNIP //-->
<P>An example of the use of the static <I>valueOf</I> method follows:</P>
<!-- CODE SNIP //-->
<PRE>
try {value = Float.valueOf(getText()).floatValue();}
catch(NumberFormatException e) {
value = 0;
}
</PRE>
<!-- END CODE SNIP //-->
<P>The scalar numeric wrappers (<I>Integer</I> and <I>Long</I>) support an overloaded <I>valueOf</I> and <I>toString</I> method. The <I>toString</I> method will yield a string in any radix between 2 and 36, inclusive. For example:</P>
<!-- CODE SNIP //-->
<PRE>
SI = Integer.toString(i, 2); // yields a binary string
SL = Long.toString(l, 16); // yields a hex string
I = Integer.valueOf(SI,2); // converts from binary string
L = Long.valueOf(SL,16); // converts from hex string
</PRE>
<!-- END CODE SNIP //-->
<P>To convert a string to a primitive, you can use the static methods <I>parseInt</I> and <I>parseLong</I>:</P>
<!-- CODE SNIP //-->
<PRE>
i = Integer.parseInt(SI); // converts from decimal string
i = Integer.parseInt(SI,2); // converts from binary string
l = Long.parseLong(SL,16); // converts from hex string
</PRE>
<!-- END CODE SNIP //-->
<H4 ALIGN="LEFT"><A NAME="Heading13"></A><FONT COLOR="#000077">Strings</FONT></H4>
<P>Java’s <I>java.lang</I> package has a class known as <I>String</I>. Once they are created, <I>String</I> instances in Java cannot be changed. The reason is that once created, a <I>String</I> instance is added to an internal string pool. The pool is a private <I>HashTable</I> instance that speeds string lookup operations. We cannot find any public or private method for removal of a <I>String</I> instance from the internal hash table. Thus, once created, strings remain unchanged for the life of the Virtual Machine.</P>
<P>The <I>String</I> class supports a series of public static methods that can be accessed without making an instance of the <I>String</I> class. Suppose the following constants are predefined:</P>
<!-- CODE //-->
<PRE>
boolean aBoolean;
char achar;
int anInt;
long aLong;
float aFloat;
double aDouble;
Object anObject;
String aString;
char[] aCharArray;
int arrayOffset, numberOfElementsToConvert;
int endIndex; // last position in array - 1;
StringBuffer aStringBuffer = new StringBuffer(100);
Byte [] ASCIIByteArray;
int hiByte;
</PRE>
<!-- END CODE //-->
<P>The following examples show how to use the <I>String</I> class, given the preceding, predefined contents:</P>
<!-- CODE //-->
<PRE>
aString = String.valueOf(anObject);
aString = String.valueOf(aCharArray);
aString = String.valueOf(aCharArray, arrayOffset,
numberOfElementsToConvert);
aString = String.valueOf(aBoolean);
aString = String.valueOf(aChar);
aString = String.valueOf(anInt);
aString = String.valueOf(aLong);
aString = String.valueOf(aFloat);
aString = String.valueOf(aDouble);
</PRE>
<!-- END CODE //-->
<P>The <I>String</I> class constructor is overloaded so that the following statements are true:</P>
<!-- CODE SNIP //-->
<PRE>
aString = new String();
aString = new String(anotherString);
aString = new String(aStringBuffer);
aString = new String(aCharArray);
aString = new String(aCharArray, arrayOffset,
numberOfElementsToConvert);
</PRE>
<!-- END CODE SNIP //-->
<P>The following examples show how to build <I>aString</I> with <I>hiByte</I> in the most significant eight bits, and <I>ASCIIByteArray</I> elements in the least significant eight bits (the <I>hiByte</I> is typically 0):</P>
<!-- CODE SNIP //-->
<PRE>
aString = new String(ASCIIByteArray, hiByte);
aString = new String(ASCIIByteArray, hiByte,
arrayOffset,numberOfElementsToConvert);
</PRE>
<!-- END CODE SNIP //-->
<P>The <I>String</I> class has a series of methods that use a string instance as a target. These methods typically involve extraction or conversion. For example:</P>
<!-- CODE //-->
<PRE>
aString = aString.toString();
aString = aString.substring(arrayOffset);
aString = aString.substring(arrayOffset, endIndex);
aString = aString.concat(anotherString)
//replace oldChar with aChar in aString
aString = aString.replace(oldChar, aChar);
aString = aString.toLowerCase();
aString = aString.toUpperCase();
// Trims leading and trailing whitespace
aString = aString.trim();
// intern returns a string from the private internal
// hash table set that will pass the
// aString == anotherString test
aString = anotherString.intern();
aBoolean = aString.equals(anObject);
anInt = aString.hashCode();
andInt = aString.length();
aChar = astring.charAt(anInt);
// get charArray from aString
aString.getChars(beginIndex,endIndex, charArray, arrayOffset);
aString.getBytes(beginIndex,endIndex, byteArray, arrayOffset)
charArray = aString.toCharArray();
aBoolean = aString.equalsIgnoreCase(anotherString);
</PRE>
<!-- END CODE //-->
<P><I>CompareTo</I> is a method that returns –1, +1, or 0. The string comparison is performed using the underlying Unicode characters.</P>
<!-- CODE SNIP //-->
<PRE>
anInt = aString.compareTo(anotherString)
aBoolean = aString.regionMatches(beginIndex,anotherString,
arrayOffset, numberOfElementsToConvert)
aBoolean = aString.regionMatches(ignoreCase, arrayOffset,
anotherString, arrayOffset, numberOfElementsToConvert)
aBoolean = aString.startsWith(aString)
aBoolean = aString.startsWith(aString, arrayOffset)
aBoolean = aString.endsWith(aString)
</PRE>
<!-- END CODE SNIP //-->
<P>There are some string search functions in the <I>String</I> class. When they fail, they return –1.</P>
<!-- CODE //-->
<PRE>
// first location of aChar in aString
anInt = aString.indexOf(aChar);
// first location of aChar in aString starting from anInt
anInt = aString.indexOf(aChar, anInt);
// first location of aString in anotherString
anInt = anotherString.indexOf(aString);
// first location of aString in
// anotherString starting from anInt
anInt = anotherString.indexOf(aString, anInt);
// Find the last occurrence of a string or char in a string
// starting from anInt
anInt = aString.lastIndexOf(aChar);
anInt = aString.lastIndexOf(aChar, anInt);
anInt = aString.lastIndexOf(aString)
anInt = aString.lastIndexOf(aString, anInt);
</PRE>
<!-- END CODE //-->
<P><BR></P>
<CENTER>
<TABLE BORDER>
<TR>
<TD><A HREF="085-088.html">Previous</A></TD>
<TD><A HREF="../ewtoc.html">Table of Contents</A></TD>
<TD><A HREF="093-097.html">Next</A></TD>
</TR>
</TABLE>
</CENTER>
<hr width="90%" size="1" noshade><div align="center"><font face="Verdana,sans-serif" size="1">Copyright © <a href="/reference/idgbooks00001.html">IDG Books Worldwide, Inc.</a></font></div>
<!-- all of the reference materials (books) have the footer and subfoot reveresed --><!-- reference_subfoot = footer --><!-- reference_footer = subfoot --></BODY></HTML><!-- END FOOTER -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -