📄 typebuf.htm
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Creating a Non-Byte Java Type Buffer on a ByteBuffer (Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<br>
Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
</TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD> </TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
>
<A HREF="../index.html">List of Packages</A>
>
<A HREF="../java.nio/pkg.html">java.nio</A><font color="#666666" class="xsmall-font">
[27 examples]
</font>
>
<B><A HREF="../java.nio/pkg.html#Byte Buffers">Byte Buffers</A></B><font color="#666666" class="xsmall-font">
[8 examples]
</font>
</DIV><P>
<h3>e163. Creating a Non-Byte Java Type Buffer on a ByteBuffer</h3>
You can create <font color="#0066ff"><i>views</i></font> on a <code>ByteBuffer</code> to support buffers of
other Java primitive types. For example, by creating a character view
on a <code>ByteBuffer</code>, you treat the <code>ByteBuffer</code> like a buffer of
characters. The character buffer supports strings directly. Also,
<code>hasRemaining()</code> properly works with characters rather than with
bytes.
<P> When you create a typed view, it is important to be aware that
it is created on top of the bytes between position and limit. That
is, the capacity of the new view is (limit - position). The limit of
the new view may be reduced so that the capacity is an integral value
based on the size of the type. Finally, the view shares the same
storage as the underlying <code>ByteBuffer</code>, so any changes to the byte
buffer will be seen by the view and visa versa. However, changes to a
view's position or limit do not affect the <code>ByteBuffer</code>'s properties and
visa versa.
<pre> // Obtain a ByteBuffer; see also <a href="../java.nio/CreateBuf.html" class="eglink"><b>e158</b> Creating a ByteBuffer</a>
ByteBuffer buf = ByteBuffer.allocate(<font color="#0066ff"><i>15</i></font>);
// remaining = 15
// Create a character ByteBuffer
CharBuffer cbuf = buf.asCharBuffer();
// remaining = 7
// Create a short ByteBuffer
ShortBuffer sbuf = buf.asShortBuffer();
// remaining = 7
// Create an integer ByteBuffer
IntBuffer ibuf = buf.asIntBuffer();
// remaining = 3
// Create a long ByteBuffer
LongBuffer lbuf = buf.asLongBuffer();
// remaining = 1
// Create a float ByteBuffer
FloatBuffer fbuf = buf.asFloatBuffer();
// remaining = 3
// Create a double ByteBuffer
DoubleBuffer dbuf = buf.asDoubleBuffer();
// remaining = 1
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
<b>Related Examples</b></font></td>
</tr>
</table>
e158. <a class="eglink" href="CreateBuf.html?l=rel">
Creating a ByteBuffer
</a>
<br>
e159. <a class="eglink" href="GetBytes.html?l=rel">
Getting Bytes from a ByteBuffer
</a>
<br>
e160. <a class="eglink" href="PutBytes.html?l=rel">
Putting Bytes into a ByteBuffer
</a>
<br>
e161. <a class="eglink" href="Buf2Array.html?l=rel">
Converting Between a ByteBuffer an a Byte Array
</a>
<br>
e162. <a class="eglink" href="GetSetTypes.html?l=rel">
Getting and Setting Non-Byte Java Types in a ByteBuffer
</a>
<br>
e164. <a class="eglink" href="PutString.html?l=rel">
Using a ByteBuffer to Store Strings
</a>
<br>
e165. <a class="eglink" href="SetOrder.html?l=rel">
Setting the Byte Ordering for a ByteBuffer
</a>
<br>
<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
See also:
<a class="eglink" href="/egs/java.nio/pkg.html?l=rel#File%20Locking">
File Locking
</a>
<a class="eglink" href="/egs/java.nio/pkg.html?l=rel#Files">
Files
</a>
<a class="eglink" href="/egs/java.nio/pkg.html?l=rel#Sockets">
Sockets
</a>
<a class="eglink" href="/egs/java.nio/pkg.html?l=rel#Streams">
Streams
</a>
</td>
</tr>
</table>
<br>
<br>
<FONT class="xsmall-font">
© 2002 Addison-Wesley.
</FONT></TD><TD> </TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -