﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-大头剑客学习园地--路在自己脚下......-文章分类-学习笔记</title><link>http://www.blogjava.net/jianke/category/19363.html</link><description>大头剑客工作室
    
QQ:42379970</description><language>zh-cn</language><lastBuildDate>Sat, 29 Sep 2007 09:37:45 GMT</lastBuildDate><pubDate>Sat, 29 Sep 2007 09:37:45 GMT</pubDate><ttl>60</ttl><item><title>自己编写的计算器</title><link>http://www.blogjava.net/jianke/articles/149584.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 29 Sep 2007 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/149584.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/149584.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/149584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/149584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/149584.html</trackback:ping><description><![CDATA[此仅为自己学习之用，欢迎各位朋友批评指正，谢谢。<br />
<br />
<p>package cal.test;</p>
<p>import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;</p>
<p>public class CalTest extends JFrame implements ActionListener<br />
{<br />
&nbsp;private static final long serialVersionUID = 1L;<br />
&nbsp;private JPanel jContentPane = null;<br />
&nbsp;private JTextField tf = null;<br />
&nbsp;private JButton Backspace = null;<br />
&nbsp;private JButton clear = null;<br />
&nbsp;private JButton bt7 = null;<br />
&nbsp;private JButton bt8 = null;<br />
&nbsp;private JButton bt9 = null;<br />
&nbsp;private JButton bt11 = null;<br />
&nbsp;private JButton sqrt = null;<br />
&nbsp;private JButton bt4 = null;<br />
&nbsp;private JButton bt5 = null;<br />
&nbsp;private JButton bt6 = null;<br />
&nbsp;private JButton bt12 = null;<br />
&nbsp;private JButton bt13 = null;<br />
&nbsp;private JButton bt1 = null;<br />
&nbsp;private JButton bt2 = null;<br />
&nbsp;private JButton bt3 = null;<br />
&nbsp;private JButton bt14 = null;<br />
&nbsp;private JButton jButton = null;<br />
&nbsp;private JButton bt15 = null;<br />
&nbsp;private JButton bt0 = null;<br />
&nbsp;private JButton bt16 = null;<br />
&nbsp;private JButton bt17 = null;<br />
&nbsp;private JButton bt18 = null;<br />
&nbsp;private JButton bt19 = null;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;boolean com=false;//用来判断是否点击过"+-*/"<br />
&nbsp;boolean rs=false;//是否点击过'='<br />
&nbsp;boolean qm=false;//取模<br />
&nbsp;int flag=0;<br />
&nbsp;int i=0;<br />
&nbsp;String beforeNum="";&nbsp; //&nbsp; @jve:decl-index=0:<br />
&nbsp;String afterNum="";&nbsp; //&nbsp; @jve:decl-index=0:<br />
&nbsp;<br />
&nbsp;private JTextField getTf() <br />
&nbsp;{<br />
&nbsp;&nbsp;if (tf == null) <br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;tf = new JTextField();<br />
&nbsp;&nbsp;&nbsp;tf.setBounds(new Rectangle(5, 3, 283, 24));<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return tf;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBackspace() {<br />
&nbsp;&nbsp;if (Backspace == null) {<br />
&nbsp;&nbsp;&nbsp;Backspace = new JButton();<br />
&nbsp;&nbsp;&nbsp;Backspace.setBounds(new Rectangle(35, 41, 80, 28));<br />
&nbsp;&nbsp;&nbsp;Backspace.setText("C");<br />
&nbsp;&nbsp;&nbsp;Backspace.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;Backspace.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;Backspace.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return Backspace;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getClear() {<br />
&nbsp;&nbsp;if (clear == null) {<br />
&nbsp;&nbsp;&nbsp;clear = new JButton();<br />
&nbsp;&nbsp;&nbsp;clear.setBounds(new Rectangle(150, 41, 110, 28));<br />
&nbsp;&nbsp;&nbsp;clear.setText("Backspace");<br />
&nbsp;&nbsp;&nbsp;clear.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;clear.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;clear.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return clear;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt7() {<br />
&nbsp;&nbsp;if (bt7 == null) {<br />
&nbsp;&nbsp;&nbsp;bt7 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt7.setBounds(new Rectangle(3, 83, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt7.setText("7");<br />
&nbsp;&nbsp;&nbsp;bt7.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt7.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt7.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt7;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt8() {<br />
&nbsp;&nbsp;if (bt8 == null) {<br />
&nbsp;&nbsp;&nbsp;bt8 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt8.setBounds(new Rectangle(59, 83, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt8.setText("8");<br />
&nbsp;&nbsp;&nbsp;bt8.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt8.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt8.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt8;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt9() {<br />
&nbsp;&nbsp;if (bt9 == null) {<br />
&nbsp;&nbsp;&nbsp;bt9 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt9.setBounds(new Rectangle(117, 83, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt9.setText("9");<br />
&nbsp;&nbsp;&nbsp;bt9.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt9.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt9.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt9;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt11() {<br />
&nbsp;&nbsp;if (bt11 == null) {<br />
&nbsp;&nbsp;&nbsp;bt11 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt11.setBounds(new Rectangle(175, 83, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt11.setText("/");<br />
&nbsp;&nbsp;&nbsp;bt11.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;bt11.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt11.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt11;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getSqrt() {<br />
&nbsp;&nbsp;if (sqrt == null) {<br />
&nbsp;&nbsp;&nbsp;sqrt = new JButton();<br />
&nbsp;&nbsp;&nbsp;sqrt.setBounds(new Rectangle(233, 83, 53, 30));<br />
&nbsp;&nbsp;&nbsp;sqrt.setText("sqrt");<br />
&nbsp;&nbsp;&nbsp;sqrt.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;sqrt.addActionListener(this);<br />
&nbsp;&nbsp;&nbsp;//sqrt.setFont(new Font("",Font.BOLD,10));<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return sqrt;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt4() {<br />
&nbsp;&nbsp;if (bt4 == null) {<br />
&nbsp;&nbsp;&nbsp;bt4 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt4.setBounds(new Rectangle(3, 125, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt4.setText("4");<br />
&nbsp;&nbsp;&nbsp;bt4.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt4.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt4.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt4;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt5() {<br />
&nbsp;&nbsp;if (bt5 == null) {<br />
&nbsp;&nbsp;&nbsp;bt5 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt5.setBounds(new Rectangle(59, 125, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt5.setText("5");<br />
&nbsp;&nbsp;&nbsp;bt5.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt5.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt5.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt5;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt6() {<br />
&nbsp;&nbsp;if (bt6 == null) {<br />
&nbsp;&nbsp;&nbsp;bt6 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt6.setBounds(new Rectangle(117, 125, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt6.setText("6");<br />
&nbsp;&nbsp;&nbsp;bt6.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt6.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt6.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt6;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt12() {<br />
&nbsp;&nbsp;if (bt12 == null) {<br />
&nbsp;&nbsp;&nbsp;bt12 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt12.setBounds(new Rectangle(175, 125, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt12.setText("*");<br />
&nbsp;&nbsp;&nbsp;bt12.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;bt12.setFont(new Font("",Font.BOLD,18));<br />
&nbsp;&nbsp;&nbsp;bt12.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt12;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt13() {<br />
&nbsp;&nbsp;if (bt13 == null) {<br />
&nbsp;&nbsp;&nbsp;bt13 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt13.setBounds(new Rectangle(233, 125, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt13.setText("%");<br />
&nbsp;&nbsp;&nbsp;bt13.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt13.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt13.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt13;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt1() {<br />
&nbsp;&nbsp;if (bt1 == null) {<br />
&nbsp;&nbsp;&nbsp;bt1 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt1.setBounds(new Rectangle(3, 167, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt1.setText("1");<br />
&nbsp;&nbsp;&nbsp;bt1.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt1.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt1.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt1;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt2() {<br />
&nbsp;&nbsp;if (bt2 == null) {<br />
&nbsp;&nbsp;&nbsp;bt2 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt2.setBounds(new Rectangle(59, 167, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt2.setText("2");<br />
&nbsp;&nbsp;&nbsp;bt2.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt2.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt2.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt2;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt3() {<br />
&nbsp;&nbsp;if (bt3 == null) {<br />
&nbsp;&nbsp;&nbsp;bt3 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt3.setBounds(new Rectangle(117, 167, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt3.setText("3");<br />
&nbsp;&nbsp;&nbsp;bt3.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt3.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt3.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt3;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt14() {<br />
&nbsp;&nbsp;if (bt14 == null) {<br />
&nbsp;&nbsp;&nbsp;bt14 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt14.setBounds(new Rectangle(175, 167, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt14.setText("-");<br />
&nbsp;&nbsp;&nbsp;bt14.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;bt14.setFont(new Font("",Font.BOLD,18));<br />
&nbsp;&nbsp;&nbsp;bt14.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt14;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getJButton() {<br />
&nbsp;&nbsp;if (jButton == null) {<br />
&nbsp;&nbsp;&nbsp;jButton = new JButton();<br />
&nbsp;&nbsp;&nbsp;jButton.setBounds(new Rectangle());<br />
&nbsp;&nbsp;&nbsp;jButton.setText("1/x");<br />
&nbsp;&nbsp;&nbsp;jButton.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return jButton;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;private JButton getBt15() {<br />
&nbsp;&nbsp;if (bt15 == null) {<br />
&nbsp;&nbsp;&nbsp;bt15 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt15.setBounds(new Rectangle(233, 167, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt15.setText("1/x");<br />
&nbsp;&nbsp;&nbsp;bt15.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt15.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt15.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt15;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt0() {<br />
&nbsp;&nbsp;if (bt0 == null) {<br />
&nbsp;&nbsp;&nbsp;bt0 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt0.setBounds(new Rectangle(3, 209, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt0.setText("0");<br />
&nbsp;&nbsp;&nbsp;bt0.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt0.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt0.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt0;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt16() {<br />
&nbsp;&nbsp;if (bt16 == null) {<br />
&nbsp;&nbsp;&nbsp;bt16 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt16.setBounds(new Rectangle(59, 209, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt16.setText("+/-");<br />
&nbsp;&nbsp;&nbsp;bt16.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt16.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt16.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt16;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt17() {<br />
&nbsp;&nbsp;if (bt17 == null) {<br />
&nbsp;&nbsp;&nbsp;bt17 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt17.setBounds(new Rectangle(117, 209, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt17.setText(".");<br />
&nbsp;&nbsp;&nbsp;bt17.setForeground(Color.BLUE);<br />
&nbsp;&nbsp;&nbsp;bt17.setFont(new Font("",Font.BOLD,18));<br />
&nbsp;&nbsp;&nbsp;bt17.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt17;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt18() {<br />
&nbsp;&nbsp;if (bt18 == null) {<br />
&nbsp;&nbsp;&nbsp;bt18 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt18.setBounds(new Rectangle(175, 209, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt18.setText("+");<br />
&nbsp;&nbsp;&nbsp;bt18.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;bt18.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt18.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt18;<br />
&nbsp;}</p>
<p>&nbsp;private JButton getBt19() {<br />
&nbsp;&nbsp;if (bt19 == null) {<br />
&nbsp;&nbsp;&nbsp;bt19 = new JButton();<br />
&nbsp;&nbsp;&nbsp;bt19.setBounds(new Rectangle(233, 209, 53, 30));<br />
&nbsp;&nbsp;&nbsp;bt19.setText("=");<br />
&nbsp;&nbsp;&nbsp;bt19.setForeground(Color.RED);<br />
&nbsp;&nbsp;&nbsp;bt19.setFont(new Font("",Font.BOLD,15));<br />
&nbsp;&nbsp;&nbsp;bt19.addActionListener(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return bt19;<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) <br />
&nbsp;{<br />
&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;&nbsp;SwingUtilities.invokeLater(new Runnable() <br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;public void run() <br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;CalTest thisClass = new CalTest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;thisClass.setVisible(true);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;});<br />
&nbsp;}</p>
<p>&nbsp;public CalTest() <br />
&nbsp;{<br />
&nbsp;&nbsp;super();<br />
&nbsp;&nbsp;initialize();<br />
&nbsp;&nbsp;this.setResizable(false);<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;private void initialize() <br />
&nbsp;{<br />
&nbsp;&nbsp;this.setSize(296, 284);<br />
&nbsp;&nbsp;this.setContentPane(getJContentPane());<br />
&nbsp;&nbsp;this.setTitle("计算器");<br />
&nbsp;&nbsp;Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();<br />
&nbsp;&nbsp;Dimension frameSize=this.getSize();<br />
&nbsp;&nbsp;if(frameSize.width&gt;screenSize.width)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;frameSize.width=screenSize.width;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;if(frameSize.height&gt;screenSize.height)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;frameSize.height=screenSize.height;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;this.setLocation((screenSize.width-frameSize.width)/5, (screenSize.width-frameSize.width)/5);<br />
&nbsp;&nbsp;tf.setHorizontalAlignment(JTextField.RIGHT);//使数字从右边显示<br />
&nbsp;&nbsp;tf.setEditable(false);<br />
&nbsp;&nbsp;tf.setText("0.");<br />
&nbsp;}</p>
<p>&nbsp;private JPanel getJContentPane() {<br />
&nbsp;&nbsp;if (jContentPane == null) {<br />
&nbsp;&nbsp;&nbsp;jContentPane = new JPanel();<br />
&nbsp;&nbsp;&nbsp;jContentPane.setLayout(null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getTf(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBackspace(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getClear(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt7(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt8(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt9(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt11(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getSqrt(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt4(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt5(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt6(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt12(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt13(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt1(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt2(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt3(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt14(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getJButton(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt15(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt0(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt16(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt17(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt18(), null);<br />
&nbsp;&nbsp;&nbsp;jContentPane.add(getBt19(), null);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return jContentPane;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public void actionPerformed(ActionEvent e)<br />
&nbsp;{<br />
&nbsp;&nbsp;//变量com为true点击过"+-*/"，反之变量com为false没有点击过"+-*/"<br />
&nbsp;&nbsp;//数字键1<br />
&nbsp;&nbsp;if(e.getSource()==bt1)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键2<br />
&nbsp;&nbsp;else if(e.getSource()==bt2)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"2");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键3<br />
&nbsp;&nbsp;else if(e.getSource()==bt3)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"3");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("3");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"3");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键4<br />
&nbsp;&nbsp;else if(e.getSource()==bt4)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"4");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("3");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"4");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键5<br />
&nbsp;&nbsp;else if(e.getSource()==bt5)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"5");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("5");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"5");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键6<br />
&nbsp;&nbsp;else if(e.getSource()==bt6)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"6");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("6");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"6");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键7<br />
&nbsp;&nbsp;else if(e.getSource()==bt7)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"7");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("7");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"7");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键8<br />
&nbsp;&nbsp;else if(e.getSource()==bt8)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"8");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("8");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"8");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键9<br />
&nbsp;&nbsp;else if(e.getSource()==bt9)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"9");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("9");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"9");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键0<br />
&nbsp;&nbsp;else if(e.getSource()==bt0)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"0");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符+<br />
&nbsp;&nbsp;else if(e.getSource()==bt18)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;beforeNum=tf.getText().trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"+");<br />
&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag=1;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符-<br />
&nbsp;&nbsp;else if(e.getSource()==bt14)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;beforeNum=tf.getText().trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"-");<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag=2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符*<br />
&nbsp;&nbsp;else if(e.getSource()==bt12)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;beforeNum=tf.getText().trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"*");<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag=3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符/<br />
&nbsp;&nbsp;else if(e.getSource()==bt11)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;beforeNum=tf.getText().trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag=4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符%<br />
&nbsp;&nbsp;else if(e.getSource()==bt13)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"%");<br />
&nbsp;&nbsp;&nbsp;qm=true;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符1/x<br />
&nbsp;&nbsp;else if(e.getSource()==bt15)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==false&amp;&amp;rs==false)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;double d=Double.valueOf(tf.getText().trim());<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(String.valueOf(1/d));<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符sqrt<br />
&nbsp;&nbsp;else if(e.getSource()==sqrt)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==false&amp;&amp;rs==false)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;double d=Double.valueOf(tf.getText().trim());<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(String.valueOf(Math.sqrt(d)));<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//退格<br />
&nbsp;&nbsp;else if(e.getSource()==clear)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(tf.getText().trim().length()&lt;1)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("0.");<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().equals("0."))<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("0.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim().substring(0, tf.getText().trim().length()-1));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('=')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('+')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('-')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('*')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('/')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('%')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qm=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qm=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;else if(e.getSource()==Backspace)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//清除文本框中的全部内容<br />
&nbsp;&nbsp;&nbsp;tf.setText("0.");<br />
&nbsp;&nbsp;&nbsp;com=false;<br />
&nbsp;&nbsp;&nbsp;rs=false;<br />
&nbsp;&nbsp;&nbsp;qm=false;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符+/-<br />
&nbsp;&nbsp;else if(e.getSource()==bt16)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(com==false&amp;&amp;rs==false&amp;&amp;qm==false)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String str=tf.getText().trim();<br />
&nbsp;&nbsp;&nbsp;&nbsp;double d=Double.parseDouble(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(d&gt;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(String.valueOf(-d));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(String.valueOf(Math.abs(-d)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//运算符"."<br />
&nbsp;&nbsp;else if(e.getSource()==bt17)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//如果点击过"+-*/"<br />
&nbsp;&nbsp;&nbsp;if(com==true)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(flag==1)//点击'+'<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('+');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String str=tf.getText().trim().substring(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.indexOf('.')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+".");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if(flag==2)//点击'-'<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('-');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String str=tf.getText().trim().substring(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.indexOf('.')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+".");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if(flag==3)//点击'*'<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('*');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String str=tf.getText().trim().substring(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.indexOf('.')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+".");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if(flag==4)//点击'/'<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('/');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String str=tf.getText().trim().substring(index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.indexOf('.')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+".");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;//如果没有点击过"+-*/"<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(tf.getText().trim().indexOf('.')==-1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+".");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;//数字键'='<br />
&nbsp;&nbsp;else if(e.getSource()==bt19)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//先判断取模键是否为true,如果为true，就进行取模运行；否则进行&#8220;+-*/&#8221;运算<br />
&nbsp;&nbsp;&nbsp;if(qm==true)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(com==false&amp;&amp;rs==false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=tf.getText().trim().indexOf('%');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String beforeStr=tf.getText().trim().substring(0, index);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String afterStr=tf.getText().trim().substring(index+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(afterStr.length()&gt;0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double d1=Double.valueOf(beforeStr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double d2=Double.valueOf(afterStr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"="+String.valueOf((int)(d1%d2)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qm=false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//先判断&#8220;=&#8221;键是否存在，假如不存在执行下列语句，否则下面的else语句。<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(rs==false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Double result=0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (flag)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 1://点击'+'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('+');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)+Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"="+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 2://点击'-'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('-');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)-Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"="+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 3://点击'*'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('*');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)*Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"="+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 4://点击'/'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('/');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Double.valueOf(afterNum)==0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("除数不能为零");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)/Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim()+"="+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Double result=0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (flag)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 1://点击'+'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int x=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('+');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=tf.getText().trim().indexOf('=');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1, x);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)+Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim().substring(0,x+1)+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 2://点击'-'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int x=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('-');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=tf.getText().trim().indexOf('=');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1, x);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)-Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim().substring(0,x+1)+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 3://点击'*'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int x=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('*');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=tf.getText().trim().indexOf('=');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1, x);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)*Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim().substring(0,x+1)+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 4://点击'/'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int index=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int x=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index=tf.getText().trim().indexOf('/');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=tf.getText().trim().indexOf('=');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;afterNum=tf.getText().trim().substring(index+1, x);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Double.valueOf(afterNum)==0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText("除数不能为零");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=Double.valueOf(beforeNum)/Double.parseDouble(afterNum);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.setText(tf.getText().trim().substring(0,x+1)+result.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
}&nbsp; //&nbsp; @jve:decl-index=0:visual-constraint="220,8"<br />
</p>
<img src ="http://www.blogjava.net/jianke/aggbug/149584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-09-29 15:27 <a href="http://www.blogjava.net/jianke/articles/149584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第8章 GUI/图形用户界面</title><link>http://www.blogjava.net/jianke/articles/146418.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Wed, 19 Sep 2007 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/146418.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/146418.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/146418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/146418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/146418.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;第8章 GUI/图形用户界面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/jianke/articles/146418.html'>阅读全文</a><img src ="http://www.blogjava.net/jianke/aggbug/146418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-09-19 12:42 <a href="http://www.blogjava.net/jianke/articles/146418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第七章 IO/输入与输出</title><link>http://www.blogjava.net/jianke/articles/138337.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Tue, 21 Aug 2007 04:55:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/138337.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/138337.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/138337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/138337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/138337.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;第七章 IO/输入与输出●&nbsp;&nbsp;&nbsp;&nbsp; File类●&nbsp;&nbsp;&nbsp;&nbsp; RandomAccessFile类●&nbsp;&nbsp;&nbsp;&nbsp; 各种节点流类●&nbsp;&nbsp;&nbsp;&nbsp; 字符编码●&nbsp;&nbsp;&nbsp;&nbsp; 各种过滤流与包装...&nbsp;&nbsp;<a href='http://www.blogjava.net/jianke/articles/138337.html'>阅读全文</a><img src ="http://www.blogjava.net/jianke/aggbug/138337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-08-21 12:55 <a href="http://www.blogjava.net/jianke/articles/138337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第六章 Java API</title><link>http://www.blogjava.net/jianke/articles/127494.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Mon, 02 Jul 2007 04:04:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/127494.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/127494.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/127494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/127494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/127494.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;第六讲 Java API●&nbsp;&nbsp;&nbsp;&nbsp; 理解API的概念●&nbsp;&nbsp;&nbsp;&nbsp; java辅助工具的使用●&nbsp;&nbsp;&nbsp;&nbsp; String类和StringBuffer类●&nbsp;&nbsp;&nbsp;&nbsp; 基本数据类型的对象包装类●&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/jianke/articles/127494.html'>阅读全文</a><img src ="http://www.blogjava.net/jianke/aggbug/127494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-07-02 12:04 <a href="http://www.blogjava.net/jianke/articles/127494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第五章 多线程</title><link>http://www.blogjava.net/jianke/articles/122788.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Fri, 08 Jun 2007 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/122788.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/122788.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/122788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/122788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/122788.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;第五讲多线程●&nbsp;&nbsp;&nbsp;&nbsp; 在多任务系统中，每个独立执行的程序称为进程，也就是&#8220;正在进行的程序&#8221;。我们现在使用的操作系统一般都是多任务的，即能够同时执行多个应用程序，实际情况是，操作系统负责CPU等设备的资源进行分配和管理，虽然这些设备某一时刻只能做一件事，但以非常小的时间间隔交替执行多个程序，就可以给人以同时执行...&nbsp;&nbsp;<a href='http://www.blogjava.net/jianke/articles/122788.html'>阅读全文</a><img src ="http://www.blogjava.net/jianke/aggbug/122788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-06-08 10:46 <a href="http://www.blogjava.net/jianke/articles/122788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第四章 面向对象（下）</title><link>http://www.blogjava.net/jianke/articles/122746.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Thu, 07 Jun 2007 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/122746.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/122746.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/122746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/122746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/122746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;第四讲面向对象（下）类的继承●&nbsp;&nbsp;&nbsp;&nbsp; 通过继承可以简化类的定义●&nbsp;&nbsp;&nbsp;&nbsp; Java只支持单继承，不允许多重继承。●&nbsp;&nbsp;&nbsp;&nbsp; 可以有多层继承，即一个类可以继承某一个类的子类，如类B继承了类A，类C又可以继承类B，那么类C也间接继承了类A。●...&nbsp;&nbsp;<a href='http://www.blogjava.net/jianke/articles/122746.html'>阅读全文</a><img src ="http://www.blogjava.net/jianke/aggbug/122746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-06-07 23:35 <a href="http://www.blogjava.net/jianke/articles/122746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第三章 面向对象（上）</title><link>http://www.blogjava.net/jianke/articles/122745.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Thu, 07 Jun 2007 15:33:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/122745.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/122745.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/122745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/122745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/122745.html</trackback:ping><description><![CDATA[<span>第三讲 </span><strong><span>面向对象<br></span></strong><strong></strong>
<p><strong><span><br>理解面向对象的概念</span></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;</span></span><span>面向过程</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在一个结构体中定义窗口的大小，位置，颜色，背景等属性，对窗口操作的函数与窗口本身的定义没有任何关系，如<span>HideWindow,MoveWindow,MinimizeWindow，这些函数都需要接受一个代表要被操作的窗口参数，是一种谓语与宾语的关系。</span></span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>面向对象</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义窗口时，除了要指定在面向过程中规定的那些属性，如大小，位置，颜色，背景等外，还要指定该窗口可能具有的动作，如隐藏，移动，最小化等。这些函数被调用时，都是以某个窗口要隐藏某个窗口要移动的语法格式来使用的，这是一种主语与谓语的关系。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>面向对象的三大特征</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▂</span><span>封装</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▂</span><span>继承</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▂多态</span></p>
<p><strong><span>类与对象</span></strong><strong></strong></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类是对某一类事物的描述，是抽象的，概念上的定义</span><span>;</span><span>对象是实际存在的该类事物的每个个体，因而也称实例（</span><span>instance</span><span>）。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果将对象比作汽车，那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计，而不是对象的设计。</span></p>
<p><strong><span>类的定义</span></strong><strong></strong></p>
<p><span>public class Person()</span></p>
<p><span>&nbsp;{</span></p>
<p><span>&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>int age;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>void shout()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>System.out.println("I am age "+age);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p>
<p><span>&nbsp;}</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>age</span><span>是类的属性，也叫类成员变量</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>shout</span><span>是方法也叫类的成员函数。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>shout</span><span>方法可以直接访问同一类中的</span><span>age</span><span>变量，如果一个方法中有与成员同名的局部变量，该方法中对这个<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;变量名的访问是局部变量，而不是成员变量。</span></p>
<p><span><strong>在类中创建的成员变量会被初始化，局部变量不会被初始化</strong>。</span></p>
<p><span><strong>对象的使用</strong></span></p>
<p><span>创建新的对象之后，我们就可以使用&#8220;对象名</span><span>.</span><span>对象成员&#8221;的格式，来访问对象的成员（包括属性和方法）</span></p>
<p><span>class Person</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int age;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void shout()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>System.out.println("age="+age);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>class TestPerson</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Person p1=new Person();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>p1.age=20;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>p1.shout();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Person p2=new Person();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>p2.shout();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span>}</span></p>
<p><span>上面程序运行的内存布局如下：</span></p>
<p>&nbsp;<img height=255 alt="" src="http://www.blogjava.net/images/blogjava_net/jianke/class.JPG" width=533 border=0></p>
<p><strong><span>对象的比较</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;</span></span><span>&#8220;</span><span>==</span><span>&#8221;运算符与</span><span>equals()</span><span>方法的区别</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&#8220;</span><span>==</span><span>&#8221;用来比较值是否相等，</span><span>equals()</span><span>方法用来比较两个对象的内容是否相等</span></p>
<p><span>●&nbsp; <span>&nbsp;</span></span><span>怎样比较两个数组对象的内容是否相等</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrays.equals(ary1[],ary2[]);</span></p>
<p><strong><span>匿名对象</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;</span></span><span>我们也可以不定义对象的句柄，而直接调用这个对象的方法。这样的对象叫做匿名对象，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如：<span>new Person().shout();</span></span></p>
<p><span>●&nbsp; <span>&nbsp;</span></span><span>如果对一个对象只需要进行一次方法调用，那么就可以使用匿名对象。</span></p>
<p><span>●<span>&nbsp;&nbsp; </span></span><span>我们经常将匿名对象作为实参传递给一个函数调用。</span></p>
<p><strong><span>实现类的封装性</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp; </span></span><span>如果外面的程序可以随意修改一个类的成员变量，会造成不可预料的程序错误，就象一个人身高，不能被外部随意修改，只能通过各种摄取营养的方法去修改这个属性。</span></p>
<p><span>●<span>&nbsp;&nbsp; </span></span><span>在定义一个类的成员（包括变量和方法）时，使用</span><span>private</span><span>关键字说明这个成员的访问权限，这个成员成了&nbsp;类的私有成员，只能被这个类其他成员方法调用，而不能被其他类中的方法所调用。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp; </span></span><span>为了实现良好的封装性，我们通常将类的成员变量声明为</span><span>private</span><span>，再通过</span><span>public</span><span>方法来对这个变量进行访问。对一个变量操作，一般都有读取和赋值操作，我们分别定义两个方法来实现这两种操作，一个是</span><span>getXxx()</span><span>方法（</span><span>Xxx</span><span>表示要访问的成员变量的名字），用来读取这个成员变量操作，另外一个是</span><span>setXxx()</span><span>用来对这个变量赋值。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;</span></span><span>一个类通常就是一个小的模块，我们应该让模块仅仅公开必须要让外界知道的内容，而隐藏其它一切内容。我们在进行程序的详细设计时，应尽量避免一个模块直接修改或操作另外一个模块的数据，模块设计追求强内聚（许多功能尽量在类的内部独立完成，不让外面干预），弱耦合（提供给外部尽量少的方法调用）。</span></p>
<p><span><span>class Person<br>{<br>&nbsp;&nbsp;private int age;<br>&nbsp;&nbsp;void shout()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(age);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;public void setAge(int x)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(x&lt;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age=x;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;public int getAge()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return age;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>}</span></span></p>
<p><span><span>class TestPerson<br>{<br>&nbsp;&nbsp;public static void main(String[]args)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;Person p=new Person();<br>&nbsp;&nbsp;&nbsp;&nbsp;p.setAge(18);<br>&nbsp;&nbsp;&nbsp;&nbsp;p.shout();<br>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(p.getAge());<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>}&nbsp;<br><br></span></span><strong><span>构造函数的定义与作用</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>构造函数的特征</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▁</span><span>它具有与类相同的名称；</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▁它不含返回值</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▁它不能在方法中用<span>return语句返回一个值</span></span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：在构造方法里不含返回值的概念是不同于&#8220;<span>void&#8221;的，在定义构造方法时加了&#8221;voiid&#8221;，结果这个方法就不再被自动调用。</span></span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>构造方法的作用：当一个类的实例对象刚产生时，这个类的构造方法就会被自动调用，我们可以在这个方法中加入要完成初始化工作的代码。</span></p>
<p><span>构造方法的重载</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>和一般的方法重载一样，重载的构造方法具有不同个数或不同类型的参数，编译器就可以根据这一点判断出用</span><span>new </span><span>关键字产生对象时，该调用哪个构造方法了。产生对象的格式是：</span><span>new </span><span>类名（参数列表）；</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>重载构造方法可以完成不同初始化的操作，如：</span><span>p3=new Person(&#8220;Tom&#8221;18);</span><span>语句，会做这样几件事：创建指定类的新实例对象，在堆内存中为实例对象分配内存空间，并调用指定类的构造方法，最后将实例对象的首地址赋值给引用变量</span><span>p3</span><span>。</span></p>
<p><strong><span>This</span></strong><strong><span>引用句柄的应用</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>一个类中成员方法可以直接调用同类中的其他成员，其实我们在一个方法内部使用&#8220;</span><span>this.</span><span>其他成员&#8221;的引用方式和直接使用&#8220;其他成员&#8221;的效果是一样的，那</span><span>this</span><span>还有多大的作用呢？在有些情况下，我们是非得用</span><span>this</span><span>关键字不可的：</span></p>
<p><span>▁让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的，这样的代码谁看了都能明白这两个变量是彼此相关的。</span></p>
<p><span>▁假设我们有一个容器类和一个部件类，在容器类的某个方法中创建部件类的实例对象，而部件类的构造方法要接收一个代表其所在容器的参数。</span></p>
<p><span>▁构造方法是在产生对象时被<span>java系统自动调用的，我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法，不是用构造方法名，而是用this(参数列表)形式，根据其中的参数列表，选择相应的构造方法。</span></span></p>
<p><span>垃圾回收过程分析</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>c++中的析构方法</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>java中的finalize()方法</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>System.gc的作用</span></p>
<p><strong><span>Static</span></strong><strong><span>静态变量</span></strong><strong></strong></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当我们编写一个类时，其实就是在描述其对象的属性和行为，而并没有产生实质上的对象，只有通过</span><span>new</span><span>关键字才会产生出对象，这时系统才会分配内存空间对象，其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下，某些特定的数据在内存空间里只有一份。</span></p>
<p><span>编写使用静态变量统计一个类产生的实例对象的个数的程序。</span></p>
<p><span><span></p>
<p><span>class Person</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>private String name;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>private static int count=0;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>static String country="</span><span>中国</span><span>";</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>public Person()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span>System.out.println(name+":"+ ++count);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>public Person(String name)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.name=name;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(name+":"+ ++count);</span><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>void shout()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{<span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(name);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p>&nbsp;</p>
<p><span>class TestPerson</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp; </span>Person p=new Person("</span><span>张三</span><span>");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span>new Person();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span>p.shout();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span>new Person("</span><span>李四</span><span>").shout();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span>System.out.println(Person.country);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p>
<p><span>}</span></p>
<p>&nbsp;</p>
<p><span>运行结果：</span></p>
<p><span>张三</span><span>:1</span></p>
<p><span>null:2</span></p>
<p><span>张三</span></p>
<p><span>李四</span><span>:3</span></p>
<p><span>李四</span></p>
<p><span>中国</span></p>
</span></span>
<p><strong><span>Static</span></strong><strong><span>静态方法</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>在静态方法里只能直接调用同类中其它的静态成员（包括变量和方法），而不能直接访问类中的非静态成员。这是因为，对于非静态的方法和变量，需要先创建类的实例对象后才可使用，而静态方法在使用前不用创建任何对象。</span></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>静态方法不能以任何方式引用</span><span>this</span></strong><strong><span>和</span><span>super</span></strong><strong><span>关键字。与上面的道理一样，因为静态方法在使用前不用创建任何实例对象，当静态方法被调用时，</span><span>this</span></strong><strong><span>所引用的对象根本就没有产生。</span></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>main()</span></strong><strong><span>方法是静态的，因此</span><span>JVM</span></strong><strong><span>在执行</span><span>main</span></strong><strong><span>方法时不创建</span><span>main</span></strong><strong><span>方法所在的类的实例对象，因而在</span><span>main()</span></strong><strong><span>方法中，我们不能直接访问该类中的非静态成员，必须创建该类的一个实例对象后，才能通过这个对象去访问类中的非静态成员。</span></strong></p>
<p><strong><span style="FONT-SIZE: 18pt">单态设计模式</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>所谓类的单态设计模式，就是采取一定的方法保证在整个的软件系统中，对某个类只能存在一个对象实例，并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象，我们首先必须将类的构造方法的访问权限设置为</span><span>private</span><span>，这样就不能用</span><span>new</span><span>操作符在类的外部产生类的对象了，但在类的内部仍可以产生该类的对象。因为在类的外部开始还无法等到类的对象，只能调用该类的某个静态方法以返回类内部创建的对象，静态方法只能访问类中的静态成员变量，所以，指向类内部产生的该类对象的变量也必须定义成静态的。</span></p>
<p><span>class Chinese</span></p>
<p><span>{</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static Chinese obj=new Chinese();</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static Chinese getInstance()</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>return obj;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private Chinese()</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>System.out.println("ss");</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p><span>}</span></p>
<p><span>class TestChinese</span></p>
<p><span>{</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[]args)</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Chinese obj1=Chinese.getInstance();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Chinese obj2=Chinese.getInstance();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(obj1==obj2);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>//</span><span>如果相等返回</span><span>true,</span><span>否则返回</span><span>false.</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p><span>}<br></span></p>
<p>运行结果：<br><span>ss<br>true<br><br><strong>内部类</strong></span></p>
<p><span><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>——在类中直接定义的内部类(</strong><span>嵌套类</span><strong>)</strong></span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; 内部类(</span></span><span><span>嵌套类)</span>可以直接访问外部类(嵌套它的类)的成员，包括</span><span>private</span><span>成员，但是，内部类(嵌套类)的成员却不能被外部类(嵌套它的类)直接访问。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>在内部类对象保存了一个对外部类对象的引用，当内部类的成员方法中访问某一变量时，如果在该方法和内部类中都没有定义过这个变量，内部类中对</span><span>this</span><span>的引用会被传递给那个外部类对象的引用。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>如果用</span><span>static</span><span>修饰一个内部类，这个类就相当于是一个外部定义的类，所以</span><span>static</span><span>的内部类中可声明</span><span>static</span><span>成员，但是，非</span><span>static</span><span>的内部类中的成员是不能声明为</span><span>static</span><span>。</span><span>Static</span><span>的内部类不能再使用外层封装的非</span><span>static</span><span>的成员变量，这个道理不难想象，所以</span><span>static</span><span>嵌套类很少使用。</span></p>
<p><span>class Outer</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int outer_i=100;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void test()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Inner inner=new Inner();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>inner.display();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>class Inner</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>void display()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(outer_i);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Outer outer=new Outer();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>outer.test();</span><span><span>&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>如果函数的局部变量（函数的参数也是局部变量）、内部类的成员变量、外部类的成员变量重名，我们应该按下面的程序代码所使用的方式来明确指定我们真正要访问的变量。</span></p>
<p><span>public class Outer</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int size;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public class Inner</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int size;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doStuff(int size)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>size++;//</span><span>引用的是</span><span>doStuff</span><span>函数的形参</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.size++;//</span><span>引用的是</span><span>Inner</span><span>类中的成员变量</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Outer.this.size++;//</span><span>引用的是</span><span>Outer</span><span>类中的成员变量</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><strong><span>内部类如何被外部引用</span></strong><strong></strong></p>
<p><span>class Outer</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int size=100;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public class Inner</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doStuff()</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(++size);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>public class TestInner</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Outer outer=new Outer();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Outer.Inner inner=outer.new Inner();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>inner.doStuff();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>在方法中定义的内部类</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>嵌套类并非只能在类中定义，也可以在几个程序块的范围之内定义内部类。例如，在方法中，或甚至在</span><span>for</span><span>循环体内部，都可以定义嵌套类。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>在方法中定义的内部类只能访问方法的</span><span>fianl</span><span>类型的局部变量，用</span><span>final</span><span>定义的局部变量相当于是一个常量，它的生命周期超出方法运行的生命周期。</span></p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/jianke/aggbug/122745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-06-07 23:33 <a href="http://www.blogjava.net/jianke/articles/122745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一章/第二章</title><link>http://www.blogjava.net/jianke/articles/117926.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Wed, 16 May 2007 12:16:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/117926.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/117926.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/117926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/117926.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/117926.html</trackback:ping><description><![CDATA[&nbsp;
<p><strong><span>Java</span></strong><strong><span>中的常量</span></strong><strong></strong></p>
<p><span>（</span><span>Lesson02A.rmvb</span><span>）</span></p>
<p><span>●</span><span>字符常量</span></p>
<p><span>&#8216;\r&#8217;</span><span>表示接受键盘输入，相当于按下了回车键</span><span>;</span></p>
<p><span>&#8216;\n&#8217;</span><span>是换行</span><span>;</span></p>
<p><span>&#8216;\t&#8217;</span><span>是制表符，相当于</span><span>table</span><span>键</span><span>;</span></p>
<p><span>&#8216;\b&#8217;</span><span>是退格键，相当于</span><span>BackSpace;</span></p>
<p><span>&#8216;\&#8217;&#8217;</span><span>是单引号</span></p>
<p><span>&#8216;\&#8221;&#8217;</span><span>是双引号</span><span>;</span></p>
<p><span>&#8216;\\&#8217;</span><span>是一个斜杠</span></p>
<p><strong><span>变量的概念与作用</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>变量就是系统为程序分配的一块内存单元，用来存储各种类型的数据。根据所存储的数据类型的不同，有各种不同类型的变量。变量名代表这块内存中的数据。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>int x=0,y;</span></p>
<p><span>y=x+3;</span></p>
<p><span>x</span><span>在被取值前必须被初始化。</span></p>
<p><strong><span>Java</span></strong><strong><span>的变量类型</span></strong><strong></strong></p>
<p>&nbsp;<img height=409 alt="" src="http://www.blogjava.net/images/blogjava_net/jianke/dataformat.jpg" width=559 border=0></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong><span>变量的字节大小</span></strong><strong></strong></p>
<p>byte占用1个字节</p>
<p>Boolean占用1个字节</p>
<p>short占用2个字节</p>
<p>char占用2个字节</p>
<p>int占用4个字节</p>
<p>float占用4个字节</p>
<p>long占用8个字节</p>
<p>double占用8个字节<span></span></p>
<p><span></span>&nbsp;<strong><span>类型转化</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>自动类型转换（也叫隐式类型转换）</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>强制类型转换（也叫显式类型转换）</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>类型转换的原理，及什么时候要用强制类型转换</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>表达式的数据类型自动提升</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>所有</span><span>byte</span><span>型、</span><span>short</span><span>型和</span><span>char</span><span>的值将被提升到</span><span>int</span><span>型</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>如果一个操作数是</span><span>long</span><span>型，计算结果就是</span><span>long</span><span>型</span><span>;</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>如果一个操作数是</span><span>float</span><span>型，计算结果就是</span><span>float</span><span>型</span><span>;</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>如果一个操作数是</span><span>double</span><span>型，计算结果就是</span><span>double</span><span>型</span><span>;</span></p>
<p><strong><span>算术运算符的应用技巧</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>思考题</span><span>1</span><span>：某个培训中心要为新到的学员安排房间，假设共有</span><span>X</span><span>个学员，每个房间可以住</span><span>6</span><span>个，让你用一个公式计算他们要住的房间数？</span></p>
<p><span>答案：</span><span>(x+5)/6</span><span>。这种算法还可用在查看留言板的分布显示上：其中</span><span>x</span><span>是总共的留言数，</span><span>6</span><span>是每页显示的留言数，结果是总共有多少页。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>思考题2:</span><span>假设你要让</span><span>x </span><span>的值在</span><span>0</span><span>至</span><span>9</span><span>之间循环变化，请写出相应的程序代码。</span></p>
<p>&nbsp;class A<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[]args)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(true)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=(i+1)%10;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></p>
<p>&nbsp;</p>
<p><strong><span>逻辑运算符</span></strong><strong></strong></p>
<table cellSpacing=0 cellPadding=0 align=left border=1>
    <tbody>
        <tr>
            <td vAlign=top width=151>
            <p><span>运算符</span><span><span>&nbsp;&nbsp;&nbsp; </span></span><span>运算</span></p>
            <p><span>&amp;<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>AND(</span><span>与</span><span>)</span></p>
            </td>
            <td vAlign=top width=108>
            <p><span>范例</span></p>
            <p><span>False &amp; True</span></p>
            </td>
            <td vAlign=top width=84>
            <p><span>结果</span></p>
            <p><span>False</span></p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=151>
            <p><span>|<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OR(</span><span>或</span><span>)</span></p>
            <p><span>^<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XOR(</span><span>异或</span><span>)</span></p>
            </td>
            <td vAlign=top width=108>
            <p><span>False | true</span></p>
            <p><span>False ^ true</span></p>
            </td>
            <td vAlign=top width=84>
            <p><span>True</span></p>
            <p><span>True</span></p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=151>
            <p><span>!<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NOT(</span><span>非</span><span>)</span></p>
            <p><span>&amp;&amp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AND(</span><span>短路</span><span>)</span></p>
            </td>
            <td vAlign=top width=108>
            <p><span>!TRUE</span></p>
            <p><span>False &amp;&amp; True</span></p>
            </td>
            <td vAlign=top width=84>
            <p><span>False</span></p>
            <p><span>False</span></p>
            </td>
        </tr>
        <tr>
            <td vAlign=top width=151>
            <p><span>||<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OR(</span><span>短路</span><span>)</span></p>
            </td>
            <td vAlign=top width=108>
            <p><span>False !! True</span></p>
            </td>
            <td vAlign=top width=84>
            <p><span>True</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>注</span><span>1</span><span>：逻辑运算符用于对</span><span>boolean</span><span>型结果的表达式进行运算，运算的结果都是</span><span>boolean</span><span>型。</span></p>
<p><span>注</span><span>2</span><span>：</span><span>&#8221;&amp;&#8221;</span><span>和</span><span>&#8221;&amp;&amp;&#8221;</span><span>的区别在于，如果使用前者连接，那么无论任何情况，</span><span>&#8221;&amp;&#8221;</span><span>两边的表达式都会参与计算。如果使用后者连接，当</span><span>&#8221;&amp;&amp;&#8221;</span><span>的左边为</span><span>false</span><span>，则将不会计算其右边的表达式。</span><span>&#8221;|&#8221;</span><span>和</span><span>&#8221;||&#8221;</span><span>的区别与</span><span>&#8221;&amp;&#8221;</span><span>和</span><span>&#8221;&amp;&amp;&#8221;</span><span>的区别一样。</span></p>
<p><strong><span>位运算符</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>任何信息在计算机中都是以二进制的形式保存的，</span><span>&amp;|^</span><span>除了可以作为逻辑运算符，也可以做为位运算符它们对两个操作数中的每一个二进制位都进行运算。</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>只有参加运算的两位都为</span><span>1</span><span>，</span><span>&amp;</span><span>运算的结果才为</span><span>1</span><span>，否则就为</span><span>0</span><span>。</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>只有参加运算的两位都为</span><span>0</span><span>，</span><span>|</span><span>运算的结果才为</span><span>0</span><span>，否则就为</span><span>1</span><span>。</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>只有参加运算的两位不同，</span><span>^</span><span>运算的结果才为</span><span>1</span><span>，否则就为</span><span>0</span><span>。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>我们可以对数据按二进制位进行移位操作，</span><span>java</span><span>的移位运算符有三种：</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>&lt;&lt;左移</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>&gt;&gt;右移</span></p>
<p><span>◆<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>&gt;&gt;&gt;无符号右移</span></p>
<p><strong><span>移位运算的注意事项及小技巧</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>移位运算符适用数据类型有</span><span>byte</span><span>、</span><span>short</span><span>、</span><span>char</span><span>、</span><span>int</span><span>、</span><span>long</span><span>。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>对低于</span><span>int</span><span>型的操作数将先自动转换为</span><span>int</span><span>型再移位。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>对</span><span>int</span><span>型整数移位</span><span>a&gt;&gt;b</span><span>，系统先将</span><span>b</span><span>对</span><span>32</span><span>取模，得到的结果才是真正移位的位数。例如：</span><span>a&gt;&gt;33</span><span>和</span><span>a&gt;&gt;1</span><span>结果是一样的，</span><span>a&gt;&gt;32</span><span>结果还是</span><span>a</span><span>原来的数字。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>对于</span><span>long</span><span>型整数移位时</span><span>a&gt;&gt;b</span><span>，则是先将移位位数</span><span>b</span><span>对</span><span>64</span><span>取模。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>移位不会改变量本身的值。</span><span>A&gt;&gt;1;</span><span>在行语句中单独存在，毫无意义。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>x&gt;&gt;1</span><span>的结果和</span><span>x/2</span><span>的结果是一样的，</span><span>x&lt;&lt;2</span><span>和</span><span>X*4</span><span>的结果也是一样的。总之，一个数左移</span><span>n</span><span>位，就是等于这个数乘以</span><span>2</span><span>的</span><span>n</span><span>次方，一个数右移</span><span>n</span><span>位，就是等于这个数除以</span><span>2</span><span>的</span><span>n</span><span>次方。请思考：如何用程序实现求</span><span>2</span><span>的</span><span>x</span><span>次方。答案：</span><span>y=1&lt;&lt;x;</span></p>
<p><span>(Lesson02B.rmvb)</span></p>
<p><strong><span>程序的流程控制</span></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>顺序结构</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>选择结构</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>循环结构</span></p>
<p><strong><span>if</span></strong><strong><span>语句的选择结构</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>if(</span><span>表达式</span><span>)</span><span>语句</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>if(</span><span>表达式</span><span>)</span><span>语句</span><span>1;else</span><span>语句</span><span>2;</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>if(</span><span>表达式</span><span>1)</span><span>语句</span><span>1;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(</span><span>表达式</span><span>2)</span><span>语句</span><span>2;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(</span><span>表达式</span><span>3)</span><span>语句</span><span>3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8230;&#8230;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</span><span>语句</span><span>n;</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>每个语句可以是使用｛｝组成的复合语句</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>变量</span><span>=</span><span>布尔表达式？语句</span><span>1:</span><span>语句</span><span>2;</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>if</span><span>语句还可以嵌套使用</span></p>
<p><span>if(</span><span>表达式</span><span>1)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(</span><span>表达式</span><span>2)</span><span>语句</span><span>1;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else</span><span>语句</span><span>2;</span></p>
<p><span>else</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(</span><span>表达式</span><span>3)</span><span>语句</span><span>3;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else</span><span>语句</span><span>4;</span></p>
<p><span>嵌套时使用｛｝确定层次界限，举例说明</span></p>
<p><span>switch</span><span>语句的选择结构</span></p>
<p><span>Switch(</span><span>表达式</span><span>)</span></p>
<p><span>｛</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>case </span><span>常量表达式</span><span>1</span><span>：语句</span><span>1;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>case </span><span>常量表达式</span><span>2</span><span>：语句</span><span>2;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8230;&#8230;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>case </span><span>常量表达式</span><span>n</span><span>：语句</span><span>n;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>default:</span><span>语句</span><span>n;</span></p>
<p><span>｝</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>default</span><span>语句是可选的，它接受除上面接受值有其他值，通俗的讲，就是谁是也不要的都归它。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>case</span><span>后面可以跟多个语句，这些语句可以不用在括号括起来。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>switch</span><span>语句判断条件可以接受</span><span>int,byte,char,short</span><span>型，不可以接受其他类型。</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>一旦碰到第一次</span><span>case</span><span>匹配，就会开始顺序执行以后所有的程序代码，而不管后面的</span><span>case</span><span>条件是否匹配，后面</span><span>case</span><span>条件下的代码都会被执行，直到碰到</span><strong><span>break</span></strong><span>语句为止。我们可以利用这个特点来用同一段语句处理多个</span><span>case</span><span>条件。</span></p>
<p><strong><span>While</span></strong><strong><span>循环语句</span></strong><strong></strong></p>
<p><span>While(</span><span>表达式</span><span>)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>语句</span><span>;</span></p>
<p><span>int x=1;</span></p>
<p><span>while(x&lt;3)</span></p>
<p><span>{</span></p>
<p><span>System.out.println(&#8220;x=&#8221;+x);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>X++;</span></p>
<p><span>}</span></p>
<p><span>脚下留心：</span><span>while</span><span>表达式的括号后面一定不要加&#8220;</span><span>;</span><span>&#8221;</span></p>
<p><strong><span>do-while</span><span>循环语句</span></strong></p>
<p><span>do </span><span>语句</span></p>
<p><span>while(</span><span>表达式</span><span>);<br></span></p>
<p>do..while 循环则先执行，再判断是否要继续执行，也就是说循环至少执行一次，有点像是先斩后奏的方法。只有条件计算结果为 <code>true</code> 时语句才会执行。<span><br>public class TestDO</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int x=3;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(x==0)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("ok1");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>x++;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int y=0;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("ok2");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>y++;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(y==0);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>编写一个程序，这个程序不断地读取从键盘上输入的字符，直到讲到字符</span><span>&#8217;q&#8217;</span><span>时，程序结束。提示：调用</span><span><strong>System.in.read();</strong></span><span>可以读取到一个从键盘上输入的字符对应的整数。通过这个程序，你一定体会到在什么样的情况下，用</span><span>do-while</span><span>循环语句经</span><span>while</span><span>循环语句方便。</span></p>
<p>&nbsp;</p>
<p><span>public class TestWhile </span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>public TestWhile() </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>public static void main(String[] args) </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// TODO code application logic here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int ch=0;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/* try</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ch=System.in.read();&nbsp;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(ch!='q')</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println((char)ch);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ch=System.in.read();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}catch(Exception e){}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>catch(Exception e)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//e.getMessage();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ch=System.in.read(); </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>catch(Exception e)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//e.getMessage();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println((char)ch);<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//System.out.println(ch);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(ch!='q');</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><strong><span>for</span></strong><strong><span>循环语句</span></strong><strong></strong></p>
<p><span>for(</span><span>表达式</span><span>1, </span><span>表达式</span><span>2, </span><span>表达式</span><span>3) </span><span>语句</span></p>
<p><strong><span>break</span></strong><strong><span>与</span></strong><strong><span>continue</span></strong><strong><span>语句</span></strong><strong></strong></p>
<p><span>break</span><span>语句可以中止循环中的子语和</span><span>switch</span><span>语句。一个无标号的</span><span>break</span><span>语句会把控制传给当前（最内）循环（</span><span>while,do,for</span><span>或</span><span>switch</span><span>）的下一条语句。如果有标号，控制会被传递给当前方法中的带有这一标号的语句。</span></p>
<p><span>St:while(true)</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(true)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>break st;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><span>continue</span><span>语句在能出现在循环语句</span><span>(while,do,for)</span><span>的子语句块中，无标号的</span><span>continue</span><span>语句的作用是跳过当前循环的剩余语句块，接着执行下一次循环。用</span><span>continue</span><span>语句的打印出</span><span>0</span><span>到</span><span>10</span><span>之间的所有奇数的程序例子。</span></p>
<p><span>public class TestContinue </span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>public TestContinue() </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>public static void main(String[] args) </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// TODO code application logic here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;10;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(i%2==0)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>continue;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(i);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><strong><span>数组</span></strong><strong></strong></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>静态数组</span></p>
<p><span>▂</span><span>int ia[]={1,2,3,4};</span></p>
<p><span>▂<span>int[]ia=new int[]{3,4,5};</span></span></p>
<p><span>▂<span>int a[5];//声明数组时，不能指定其长度，编译时将出错<br></span></span></p>
<p><span><span>▂a</span>=null;</span><span><br>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>使用数组时要注意的问题</span></p>
<p><span>▂空指针异常</span></p>
<p><span>▂如何计算数组长度</span></p>
<p><span>▂数组越界异常</span></p>
<p><span>多维数组</span></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>java</span><span>中并没有真正的多维数组，只有数组的数组，</span><span>Java</span><span>中多维数组不一定是规则矩阵形式。</span></p>
<p>&nbsp;<img height=285 alt="" src="http://www.blogjava.net/images/blogjava_net/jianke/array.JPG" width=460 border=0></p>
<p><span>●<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>定义一个多维数组</span></p>
<p><span>int [][]xx;</span></p>
<p><span>xx=new int [3][];</span></p>
<p><span>xx[0]=new int[3];</span></p>
<p><span>xx[1]=new int[2];</span></p>
<p><span>xx[2]=new int[8];</span></p>
<p><span>public class hello <br>{</span></p>
<p><span></span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) </span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>int[][]xx=new int[2][3];</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>xx[0][0]=2;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>xx[1][2]=6;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>for(int i=0;i&lt;xx.length;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int j=0;j&lt;xx[i].length;j++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("xx["+i+"]["+j+"]="+xx[i][j]);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span>}<br>&nbsp; </p>
<p><strong><span>数组的排序：</span></strong><strong></strong></p>
<p><span>class ArrayTest</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int []x=new int[]{1,5,2,7,4};</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;x.length;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("x["+i+"]="+x[i]);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong>java.util.Arrays.sort(x);</strong></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;x.length;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("x["+i+"]="+x[i]);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
<p><strong><span>数组的拷贝：</span></strong><strong></strong></p>
<pre><span>public static void <strong>arraycopy</strong>(Object</span>&nbsp;<span>src,</span></pre>
<pre><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int</span>&nbsp;<span>srcPos,</span></pre>
<pre><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Object</span>&nbsp;<span>dest,</span></pre>
<pre><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int</span>&nbsp;<span>destPos,</span></pre>
<p><span>i</span><span>nt</span>&nbsp;<span>length)</span></p>
<p><span>class ArrayTest</span></p>
<p><span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[]args)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int []x=new int[]{1,5,2,7,4};</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;x.length;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("x["+i+"]="+x[i]);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int[]y=new int[10];</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong>System.arraycopy(x,0,y,1,4);</strong></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;y.length;i++)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("y["+i+"]="+y[i]);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span>}</span></p>
</span>
<img src ="http://www.blogjava.net/jianke/aggbug/117926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-05-16 20:16 <a href="http://www.blogjava.net/jianke/articles/117926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>访问其他WEB应用程序</title><link>http://www.blogjava.net/jianke/articles/115755.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Mon, 07 May 2007 13:25:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/115755.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/115755.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/115755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/115755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/115755.html</trackback:ping><description><![CDATA[<p>import java.io.*;<br>import javax.servlet.*;<br>import javax.servlet.http.*;<br>import javax.servlet.http.HttpServlet;</p>
<p>public class OtherContextServlet extends HttpServlet <br>{<br>&nbsp;public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException<br>&nbsp;{<br>&nbsp;&nbsp;PrintWriter pwout=response.getWriter();<br>&nbsp;&nbsp;ServletContext rootContext=getServletContext().getContext("/");<br>&nbsp;&nbsp;if(rootContext!=null)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;pwout.println(rootContext.getRealPath("/"));&nbsp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;pwout.println("getServlet failed!");<br>&nbsp;&nbsp;}<br>&nbsp;}<br>}<br><br>注：要想在某一WEB应用程序中获得其他WEB应用程序的ServletContext 对象，必须&nbsp;加入红字部分。&nbsp;&nbsp; &lt;Context path="/it315" docBase="d:\myweb" debug="0" reloadable="true" <span style="COLOR: red">crossContext="true" &gt;</span></p>
<img src ="http://www.blogjava.net/jianke/aggbug/115755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-05-07 21:25 <a href="http://www.blogjava.net/jianke/articles/115755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ServletContext接口和ClassLoader类中的方法访问资源文件</title><link>http://www.blogjava.net/jianke/articles/115691.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Mon, 07 May 2007 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/115691.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/115691.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/115691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/115691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/115691.html</trackback:ping><description><![CDATA[<p>import java.io.*;<br>import javax.servlet.http.*;<br>import javax.servlet.*;<br>import java.net.URL;<br>import java.util.Properties;<br>import javax.servlet.http.HttpServlet;</p>
<p>public class ResourceServlet extends HttpServlet <br>{<br>&nbsp;public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException<br>&nbsp;{<br>&nbsp;&nbsp;response.setContentType("text/html;charset=GB2312");<br>&nbsp;&nbsp;PrintWriter pwout=response.getWriter();<br>&nbsp;&nbsp;URL urlIt=getServletContext().getResource("/WEB-INF/classes/longin.properties");<br>&nbsp;&nbsp;pwout.println(urlIt.toString());<br>&nbsp;&nbsp;pwout.println("&lt;br&gt;");<br>&nbsp;&nbsp;/*下面的两条语句可以实现两样的功能，但被注释的部分我没有实现，哪位好心人能帮我实现就好了，谢谢。<br>&nbsp;&nbsp;it315.properties这个文件我放在了WEB-INF\classes目录中。*/&nbsp;<br>&nbsp;&nbsp;//InputStream ips=getServletContext().getResourceAsStream("longin.properties");<br>&nbsp;&nbsp;InputStream ips=getClass().getResourceAsStream("longin.properties");<br>&nbsp;&nbsp;Properties props = new Properties();<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;props.load(ips);<br>&nbsp;&nbsp;&nbsp;pwout.println("database=" + props.getProperty("database"));<br>&nbsp;&nbsp;&nbsp;pwout.println("username=" + props.getProperty("username"));<br>&nbsp;&nbsp;&nbsp;pwout.println("password=" + props.getProperty("password"));<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;catch(Exception e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;ips.close();<br>&nbsp;}<br>}<br><br>注：getClass().getResourceAsStream方法只能加载位于classloader搜索目录中的资源文件，如果将longin.properties文件放在WEB-INF目录外的其它目录，就只能使用getServletContext().getResourceAsStream方法。</p>
<img src ="http://www.blogjava.net/jianke/aggbug/115691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-05-07 13:53 <a href="http://www.blogjava.net/jianke/articles/115691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat启动分析</title><link>http://www.blogjava.net/jianke/articles/115119.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Thu, 03 May 2007 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/115119.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/115119.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/115119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/115119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/115119.html</trackback:ping><description><![CDATA[<center>Tomcat笔记(1)</center><br>
<h2 align=center>Tomcat启动分析 </h2>
<center><em>heavyz, 2003-03-22</em></center>
<hr>
<h3>1 - Tomcat Server的组成部分 </h3>
<p><strong>1.1 - Server </strong></p>
<p>A Server element represents the entire Catalina servlet container. (Singleton) </p>
<p><strong>1.2 - Service </strong></p>
<p>A Service element represents the combination of one or more Connector components that share a single Engine<br>Service是这样一个集合：它由一个或者多个Connector组成，以及一个Engine，负责处理所有Connector所获得的客户请求<br></p>
<p><strong>1.3 - Connector </strong></p>
<p>一个Connector将在某个指定端口上侦听客户请求，并将获得的请求交给Engine来处理，从Engine处获得回应并返回客户<br>TOMCAT有两个典型的Connector，一个直接侦听来自browser的http请求，一个侦听来自其它WebServer的请求<br>Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求<br>Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求<br></p>
<p><strong>1.4 - Engine </strong></p>
<p>The Engine element represents the entire request processing machinery associated with a particular Service<br>It receives and processes all requests from one or more Connectors<br>and returns the completed response to the Connector for ultimate transmission back to the client<br>Engine下可以配置多个虚拟主机Virtual Host，每个虚拟主机都有一个域名<br>当Engine获得一个请求时，它把该请求匹配到某个Host上，然后把该请求交给该Host来处理<br>Engine有一个默认虚拟主机，当请求无法匹配到任何一个Host上的时候，将交给该默认Host来处理<br></p>
<p><strong>1.5 - Host </strong>
<p>
<p>代表一个Virtual Host，虚拟主机，每个虚拟主机和某个网络域名Domain Name相匹配<br>每个虚拟主机下都可以部署(deploy)一个或者多个Web App，每个Web App对应于一个Context，有一个Context path<br>当Host获得一个请求时，将把该请求匹配到某个Context上，然后把该请求交给该Context来处理<br>匹配的方法是&#8220;最长匹配&#8221;，所以一个path==""的Context将成为该Host的默认Context<br>所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配<br></p>
<p><strong>1.6 - Context </strong></p>
<p>一个Context对应于一个Web Application，一个Web Application由一个或者多个Servlet组成<br>Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类<br>当Context获得请求时，将在自己的映射表(mapping table)中寻找相匹配的Servlet类<br>如果找到，则执行该类，获得请求的回应，并返回<br></p>
<h3>2 - Tomcat Server的结构图 </h3>
<p><img src="http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.gif" tppabs="http://zooo.51.net/heavyz/cs/tomcat/notes/01-startup.gif"> </p>
<h3>3 - 配置文件$CATALINA_HOME/conf/server.xml的说明 </h3>
<p>该文件描述了如何启动Tomcat Server </p>
<p><tt>
<pre><font color=green>
&lt;!-----------------------------------------------------------------------------------------------&gt;
</font>
<font color=green>
&lt;!-- 启动Server
在端口8005处等待关闭命令
如果接受到"SHUTDOWN"字符串则关闭服务器
--&gt;
</font>
&lt;Server port="8005" shutdown="SHUTDOWN" debug="0"&gt;
<font color=green>
&lt;!-- Listener ???
目前没有看到这里
--&gt;
</font>
&lt;Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/&gt;
&lt;Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/&gt;
<font color=green>
&lt;!-- Global JNDI resources ???
目前没有看到这里，先略去
--&gt;
</font>
&lt;GlobalNamingResources&gt;
... ... ... ...
&lt;/GlobalNamingResources&gt;
<font color=green>
&lt;!-- Tomcat的Standalone Service
Service是一组Connector的集合
它们共用一个Engine来处理所有Connector收到的请求
--&gt;
</font>
&lt;Service name="Tomcat-Standalone"&gt;
<font color=green>
&lt;!-- Coyote HTTP/1.1 Connector
className : 该Connector的实现类是org.apache.coyote.tomcat4.CoyoteConnector
port : 在端口号8080处侦听来自客户browser的HTTP1.1请求
minProcessors : 该Connector先创建5个线程等待客户请求，每个请求由一个线程负责
maxProcessors : 当现有的线程不够服务客户请求时，若线程总数不足75个，则创建新线程来处理请求
acceptCount : 当现有线程已经达到最大数75时，为客户请求排队
当队列中请求数超过100时，后来的请求返回Connection refused错误
redirectport : 当客户请求是https时，把该请求转发到端口8443去
其它属性略
--&gt;
</font>
&lt;Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080"
minProcessors="5" maxProcessors="75" acceptCount="100"
enableLookups="true"
redirectPort="8443"
debug="0"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true" /&gt;
<font color=green>
&lt;!-- Engine用来处理Connector收到的Http请求
它将匹配请求和自己的虚拟主机，并把请求转交给对应的Host来处理
默认虚拟主机是localhost
--&gt;
</font>
&lt;Engine name="Standalone" defaultHost="localhost" debug="0"&gt;
<font color=green>
&lt;!-- 日志类，目前没有看到，略去先 --&gt;
</font>
&lt;Logger className="org.apache.catalina.logger.FileLogger" .../&gt;
<font color=green>
&lt;!-- Realm，目前没有看到，略去先 --&gt;
</font>
&lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../&gt;
<font color=green>
&lt;!-- 虚拟主机localhost
appBase : 该虚拟主机的根目录是webapps/
它将匹配请求和自己的Context的路径，并把请求转交给对应的Context来处理
--&gt;
</font>
&lt;Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"&gt;
<font color=green>
&lt;!-- 日志类，目前没有看到，略去先 --&gt;
</font>
&lt;Logger className="org.apache.catalina.logger.FileLogger" .../&gt;
<font color=green>
&lt;!-- Context，对应于一个Web App
path : 该Context的路径名是""，故该Context是该Host的默认Context
docBase : 该Context的根目录是webapps/mycontext/
--&gt;
</font>
&lt;Context path="" docBase="mycontext" debug="0"/&gt;
<font color=green>
&lt;!-- 另外一个Context，路径名是/wsota --&gt;
</font>
&lt;Context path="/wsota" docBase="wsotaProject" debug="0"/&gt;
&lt;/Host&gt;
&lt;/Engine&gt;
&lt;/Service&gt;
&lt;/Server&gt;
<font color=green>
&lt;!-----------------------------------------------------------------------------------------------&gt;
</font>
</pre>
</tt>
<p>&#160;</p>
<h3>4 - Context的部署配置文件web.xml的说明 </h3>
<p>一个Context对应于一个Web App，每个Web App是由一个或者多个servlet组成的<br>当一个Web App被初始化的时候，它将用自己的ClassLoader对象载入&#8220;部署配置文件web.xml&#8221;中定义的每个servlet类<br>它首先载入在$CATALINA_HOME/conf/web.xml中部署的servlet类<br>然后载入在自己的Web App根目录下的WEB-INF/web.xml中部署的servlet类<br>web.xml文件有两部分：servlet类定义和servlet映射定义<br>每个被载入的servlet类都有一个名字，且被填入该Context的映射表(mapping table)中，和某种URL PATTERN对应<br>当该Context获得请求时，将查询mapping table，找到被请求的servlet，并执行以获得请求回应<br></p>
<p>分析一下所有的Context共享的web.xml文件，在其中定义的servlet被所有的Web App载入<br></p>
<p><tt>
<pre><font color=green>
&lt;!-----------------------------------------------------------------------------------------------&gt;
</font>
&lt;web-app&gt;
<font color=green>
&lt;!-- 概述：
该文件是所有的WEB APP共用的部署配置文件，
每当一个WEB APP被DEPLOY，该文件都将先被处理，然后才是WEB APP自己的/WEB-INF/web.xml
--&gt;
</font>
<font color=green>
&lt;!--  +-------------------------+  --&gt;
&lt;!--  |    servlet类定义部分    |  --&gt;
&lt;!--  +-------------------------+  --&gt;
</font>
<font color=green>
&lt;!-- DefaultServlet
当用户的HTTP请求无法匹配任何一个servlet的时候，该servlet被执行
URL PATTERN MAPPING : /
--&gt;
</font>
&lt;servlet&gt;
&lt;servlet-name&gt;default&lt;/servlet-name&gt;
&lt;servlet-class&gt;
org.apache.catalina.servlets.DefaultServlet
&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;debug&lt;/param-name&gt;
&lt;param-value&gt;0&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;init-param&gt;
&lt;param-name&gt;listings&lt;/param-name&gt;
&lt;param-value&gt;true&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;
<font color=green>
&lt;!-- InvokerServlet
处理一个WEB APP中的匿名servlet
当一个servlet被编写并编译放入/WEB-INF/classes/中，却没有在/WEB-INF/web.xml中定义的时候
该servlet被调用，把匿名servlet映射成/servlet/ClassName的形式
URL PATTERN MAPPING : /servlet/*
--&gt;
</font>
&lt;servlet&gt;
&lt;servlet-name&gt;invoker&lt;/servlet-name&gt;
&lt;servlet-class&gt;
org.apache.catalina.servlets.InvokerServlet
&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;debug&lt;/param-name&gt;
&lt;param-value&gt;0&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
&lt;/servlet&gt;
<font color=green>
&lt;!-- JspServlet
当请求的是一个JSP页面的时候（*.jsp）该servlet被调用
它是一个JSP编译器，将请求的JSP页面编译成为servlet再执行
URL PATTERN MAPPING : *.jsp
--&gt;
</font>
&lt;servlet&gt;
&lt;servlet-name&gt;jsp&lt;/servlet-name&gt;
&lt;servlet-class&gt;org.apache.jasper.servlet.JspServlet&lt;/servlet-class&gt;
&lt;init-param&gt;
&lt;param-name&gt;logVerbosityLevel&lt;/param-name&gt;
&lt;param-value&gt;WARNING&lt;/param-value&gt;
&lt;/init-param&gt;
&lt;load-on-startup&gt;3&lt;/load-on-startup&gt;
&lt;/servlet&gt;
<font color=green>
&lt;!--  +---------------------------+  --&gt;
&lt;!--  |    servlet映射定义部分    |  --&gt;
&lt;!--  +---------------------------+  --&gt;
</font>
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;default&lt;/servlet-name&gt;
&lt;url-pattern&gt;/&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;invoker&lt;/servlet-name&gt;
&lt;url-pattern&gt;/servlet/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;jsp&lt;/servlet-name&gt;
&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
<font color=green>
&lt;!--  +------------------------+  --&gt;
&lt;!--  |    其它部分，略去先    |  --&gt;
&lt;!--  +------------------------+  --&gt;
</font>
... ... ... ...
&lt;/web-app&gt;
<font color=green>
&lt;!-----------------------------------------------------------------------------------------------&gt;
</font>
</pre>
</tt>
<p>&#160;</p>
<h3>5 - Tomcat Server处理一个http请求的过程 </h3>
<p>假设来自客户的请求为：<br>http://localhost:8080/wsota/wsota_index.jsp<br></p>
<p>1) 请求被发送到本机端口8080，被在那里侦听的Coyote HTTP/1.1 Connector获得<br>2) Connector把该请求交给它所在的Service的Engine来处理，并等待来自Engine的回应<br>3) Engine获得请求localhost/wsota/wsota_index.jsp，匹配它所拥有的所有虚拟主机Host<br>4) Engine匹配到名为localhost的Host（即使匹配不到也把请求交给该Host处理，因为该Host被定义为该Engine的默认主机）<br>5) localhost Host获得请求/wsota/wsota_index.jsp，匹配它所拥有的所有Context<br>6) Host匹配到路径为/wsota的Context（如果匹配不到就把该请求交给路径名为""的Context去处理）<br>7) path="/wsota"的Context获得请求/wsota_index.jsp，在它的mapping table中寻找对应的servlet<br>8) Context匹配到URL PATTERN为*.jsp的servlet，对应于JspServlet类<br>9) 构造HttpServletRequest对象和HttpServletResponse对象，作为参数调用JspServlet的doGet或doPost方法<br>10)Context把执行完了之后的HttpServletResponse对象返回给Host<br>11)Host把HttpServletResponse对象返回给Engine<br>12)Engine把HttpServletResponse对象返回给Connector<br>13)Connector把HttpServletResponse对象返回给客户browser<br></p>
<img src ="http://www.blogjava.net/jianke/aggbug/115119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-05-03 11:44 <a href="http://www.blogjava.net/jianke/articles/115119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat下创建和发布Web应用</title><link>http://www.blogjava.net/jianke/articles/110849.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 15 Apr 2007 16:13:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/110849.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/110849.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/110849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/110849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/110849.html</trackback:ping><description><![CDATA[<h4 class=TextColor1 id=subjcns!6F8B2C7500427759!120 style="MARGIN-BOTTOM: 0px">&nbsp;</h4>
<div id=msgcns!6F8B2C7500427759!120>
<div>
<p>&nbsp;&nbsp;&nbsp; 前面我们把Tomcat+JDK1.5+MySQL+Eclipse架构搭起来了，接下去的工作是举一个小例子让初学者明白如何创建和发布Web应用，有了一个总的框架，这样大家在做JSP和Servlet的时候就不会有一种破损残缺、缺乏系统的感觉，我的学习方式历来是由粗到细，先看树木再俯瞰森林会把我弄疯的......
<p>1、首先创建Web应用的目录结构，我这里在Tomcat的/webapps下面创建一个Web应用的目录helloapp,这是Web应用的根目录，所有JSP和HTML文件都存放在此目录下；它下一级有个WEB-INF文件夹，它存放web.xml文件和classes、lib文件夹，详细后面再说，先建了。
<p>2、介绍web.xml文件。这是一个发布描述文件，用来配置发布信息，包括：Servlet定义；Servlet初始化参数；Servlet以及JSP的映射；安全域配置参数；welcome文件清单；资源引用；环境变量的定义。闲话少说，创建web.xml文件，内容如下：
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>&nbsp; &lt;web-app xmlns="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><u><font color=#0000ff>http://www.w3.org/2001/XMLSchema-instance</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</font></u></a>"<br>&nbsp;&nbsp;&nbsp; version="2.4"&gt;
<p>&nbsp; &lt;/web-app&gt;
<p>第一行指定XML的版本和字符编码，第二行指定文档类型，&lt;web-app&gt;中放着关于Web应用的配置元素。
<p>3、在server.xml中加入&lt;Context&gt;元素。server.xml在/conf下,打开后在&lt;host&gt;后面加入如下&lt;Context&gt;元素
<p>&nbsp;&nbsp;&nbsp; &lt;Context path="/helloapp" docBase="helloapp" debug="0"<br>&nbsp;&nbsp;&nbsp;&nbsp; reloadable="true"/&gt;
<p>其中，path指定访问该Web应用的URL入口；docBase指定Web应用的文件路径；reloadable如果为true,一旦class文件被更新，服务器会自动重新加载Web应用，当然这样会加重服务器运行负荷。
<p>4、部署HTML文件。在helloapp下创建index.html文件，内容如下：
<p>&lt;html&gt;<br>&nbsp;&lt;head&gt;<br>&nbsp;&nbsp;&lt;title&gt;Alec's Addressing&lt;/title&gt;<br>&nbsp;&lt;/head&gt;<br>&nbsp;&lt;body&gt;<br>&nbsp;&nbsp;&lt;p&gt;&lt;font size="7"&gt;Welcome to Alec's Home&lt;/p&gt;<br>&nbsp;&nbsp;&lt;p&gt;&lt;a href="login.jsp?language=English"&gt;English version&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br>&lt;/html&gt;
<p>在浏览器地址栏键入<a href="http://localhost:8080/helloapp/index.html"><u><font color=#800080>http://localhost:8080/helloapp/index.html</font></u></a>
<p>5、部署JSP。创建两个JSP文件，一个login.jsp,一个hello.jsp。前者显示登陆页面，要求输入用户名和口令，这个页面链接到名为DispatcherServlet的Servlet。后者被这个Servlet调用，显示hello页面。如前面所说，JSP文件都放在helloapp下。
<p>&lt;html&gt;<br>&nbsp;&lt;head&gt;<br>&nbsp;&nbsp;&lt;title&gt;Alex's Addressing&lt;/title&gt;<br>&nbsp;&lt;/head&gt;<br>&nbsp;&lt;body&gt;<br>&nbsp;&nbsp;&lt;br&gt;<br>&nbsp;&nbsp;&lt;form name="loginForm" method="post" action="dispatcher"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;table&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;div align="right"&gt;用户名：&lt;/div&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input type="text" name="username"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;div align="right"&gt;密码：&lt;/div&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input type="password" name="password"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input type="Submit" name="Submit" value="提交"&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br>&nbsp;&nbsp;&lt;/form&gt;<br>&nbsp;&lt;/body&gt;<br>&lt;/html&gt;
<p>上述是login.jsp文件内容。
<p>&lt;html&gt;<br>&lt;head&gt;<br>&nbsp;&lt;title&gt;Alec's Addressing&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&lt;b&gt;欢迎：&lt;%=request.getAttribute("USER")%&gt;&lt;/b&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<p>这是hello.jsp文件内容。
<p>6、部署Servlet。创建名为DispatcherServlet.java的文件编译成Servlet，它调用HttpServletRequest对象的getParameter方法读取提交的loginForm表单数据，获取用户名和口令，然后将用户名和口令保存在HttpServletRequest对象的属性中，在把请求转发给hello.jsp。
<p>
<p>package mypack;
<p>import javax.servlet.*;<br>import javax.servlet.http.*;<br>import java.io.*;<br>import java.util.*;
<p>public class DispatcherServlet extends HttpServlet <br>{<br>&nbsp;public String target="/hello.jsp";
<p>&nbsp;public void init(ServletConfig config)<br>&nbsp;&nbsp;throws ServletException{<br>&nbsp;&nbsp;super.init(config);<br>&nbsp;}
<p>&nbsp;public void doGet(HttpServletRequest request,HttpServletResponse response)<br>&nbsp;&nbsp;throws ServletException,IOException{<br>&nbsp;&nbsp;doPost(request,response);<br>&nbsp;}
<p>&nbsp;public void doPost(HttpServletRequest request,HttpServletResponse response)<br>&nbsp;&nbsp;throws ServletException,IOException{<br>&nbsp;&nbsp;String username=request.getParameter("username");<br>&nbsp;&nbsp;String password=request.getParameter("password");
<p>&nbsp;&nbsp;request.setAttribute("USER",username);<br>&nbsp;&nbsp;request.setAttribute("PASSWORD",password);
<p>&nbsp;&nbsp;//将请求定向到目标文件<br>&nbsp;&nbsp;ServletContext context=getServletContext();
<p>&nbsp;&nbsp;System.out.println("重定向到"+target);<br>&nbsp;&nbsp;RequestDispatcher dispatcher=context.getRequestDispatcher(target);<br>&nbsp;&nbsp;dispatcher.forward(request,response);<br>&nbsp;}
<p>&nbsp;public void destroy(){<br>&nbsp;}<br>}
<p>上述是DispatcherServlet.java文件，用来编译成servlet。编译成class文件后存放位置为/helloapp/WEB-INF/classes/mypack/DispatcherServlet.class；然后在/helloapp下的web.xml中作如下修改：
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
<p>&nbsp;&nbsp; &lt;!DOCTYPE web-app PUBLIC
<p>&nbsp;&nbsp;&nbsp;&nbsp; '-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN'
<p>&nbsp;&nbsp;&nbsp;&nbsp; 'http://java.sun.com/j2ee/dtds/web-app_2_3.dtd'&gt;
<p>&nbsp;&nbsp;&nbsp; &lt;web-app&gt;
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;mypack.DispatcherServlet&lt;/servlet-class&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/dispatcher&lt;/url-pattern&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;
<p><br>&nbsp;&nbsp;&nbsp; &lt;/web-app&gt;
<p>说明一下，&lt;servlet-name&gt;定义Servlet的名字；&lt;servlet-class&gt;指定实现这个Servlet的类；&lt;init-param&gt;定义Servlet的初始化参数（包括参数名和参数值），一个&lt;servlet&gt;元素中可以有多个&lt;init-param&gt;元素；&lt;load-on-startup&gt;指当Web应用启动时，装载Servlet的次序。当这个值为正数或零时，Servlet容器先加载数值小的servlet，再依次加载其他数值大的servlet，如果这个值为负数或者没有设定，那么Servlet容器将在Web客户首次访问这个Servlet时加载它。我这里没用到后两个元素。
<p>7、部署JSP Tag Library
<p>Tag Library向用户提供了自定义JSP标签的功能。我们定义一个名为mytaglib的标签库，包含一个简单的hello标签，它能将JSP页面中所有的&lt;mm:hello/&gt;解析为字符串&#8220;Hello&#8221;。
<p>（1）
<p>package mypack;
<p>import javax.servlet.jsp.JspException;<br>import javax.servlet.jsp.JspTagException;<br>import javax.servlet.jsp.tagext.TagSupport;
<p>public class HelloTag extends TagSupport <br>{<br>&nbsp;public void HelloTag(){}<br>&nbsp;public int doEndTag() throws JspException{
<p>&nbsp;&nbsp;try{<br>&nbsp;&nbsp;&nbsp;pageContext.getOut().print("Hello");<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;catch(Exception e){<br>&nbsp;&nbsp;&nbsp;throw new JspTagException(e.getMessage());<br>&nbsp;&nbsp;}
<p>&nbsp;&nbsp;return SKIP_BODY;<br>&nbsp;}
<p>&nbsp;public void release(){<br>&nbsp;&nbsp;super.release();<br>&nbsp;}<br>}
<p>这是HelloTag.java文件，编译成用于处理hello标签的类。
<p>（2）创建Tag Library的描述文件mytaglib.tld文件，这个文件定义mytaglib标签库和hello标签。它存放为/WEB-INF/mytaglib.tld。源码如下：
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>&lt;taglib xmlns="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><u><font color=#0000ff>http://www.w3.org/2001/XMLSchema-instance</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</font></u></a>"<br>&nbsp;&nbsp;&nbsp; version="2.4"&gt;
<p>&nbsp;&lt;tlibversion&gt;1.0&lt;/tlibversion&gt;<br>&nbsp;&lt;jspversion&gt;1.1&lt;/jspversion&gt;<br>&nbsp;&lt;shortname&gt;mytaglib&lt;/shortname&gt;<br>&nbsp;&lt;uri&gt;mytaglib&lt;/uri&gt;
<p>&nbsp;&lt;tag&gt;<br>&nbsp;&nbsp; &lt;name&gt;hello&lt;/name&gt;<br>&nbsp;&nbsp; &lt;tagclass&gt;mypack.HelloTag&lt;/tagclass&gt;<br>&nbsp;&nbsp; &lt;bodycontent&gt;empty&lt;/bodycontent&gt;<br>&nbsp;&nbsp; &lt;info&gt;Just Says Hello&lt;/info&gt;<br>&nbsp;&lt;/tag&gt;<br>&lt;/taglib&gt;
<p>（3）在/helloapp/WEB-INF下的web.xml添加&lt;taglib&gt;元素，如下：
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>&lt;web-app xmlns="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><u><font color=#0000ff>http://www.w3.org/2001/XMLSchema-instance</font></u></a>"<br>&nbsp;&nbsp;&nbsp; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</font></u></a>"<br>&nbsp;&nbsp;&nbsp; version="2.4"&gt;<br>&nbsp;&nbsp;&lt;servlet&gt;<br>&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;mypack.DispatcherServlet&lt;/servlet-class&gt;<br>&nbsp;&nbsp;&lt;/servlet&gt;<br>&nbsp;&nbsp;&lt;servlet-mapping&gt;<br>&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/dispatcher&lt;/url-pattern&gt;<br>&nbsp;&nbsp;&lt;/servlet-mapping&gt;
<p>&nbsp;&nbsp;<font color=#ffff00><font color=#ff0000>&lt;taglib&gt;<br>&nbsp;&nbsp;&nbsp;&lt;taglib-uri&gt;/mytaglib&lt;/taglib-uri&gt;<br>&nbsp;&nbsp;&nbsp;&lt;taglib-location&gt;/WEB-INF/mytaglib.tld&lt;/taglib-location&gt;<br>&nbsp;&nbsp;&lt;/taglib&gt;</font><br></font>&nbsp;&nbsp;&nbsp; &lt;/web-app&gt;
<p>&lt;taglib&gt;中包含&lt;taglib-uri&gt;和&lt;taglib-location&gt;属性。前者指定Tag Library标示符；后者指定Tag Library的描述文件(TLD)的位置。
<p>（4）在hello.jsp文件中加入hello标签。prefix用来指定引用mytaglib标签库时的前缀，修改后如下：
<p><font color=#ff0000>&lt;%@ taglib uri="/mytaglib" prefix="mm"%&gt;<br></font>&lt;html&gt;<br>&lt;head&gt;<br>&nbsp;&lt;title&gt;Alec's Addressing&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&lt;b&gt;&lt;<font color=#ff0000>mm:hello/</font>&gt;&lt;%=request.getAttribute("USER")%&gt;&lt;/b&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;
<p>经测试OK！
<p>8、创建并发布WAR文件。一般来说，在Web应用的开发阶段，为了方便调试，采用开放式的目录结构来发布Web应用，这样方便更新或替换文件。产品发布时，应将整个Web应用打包为WAR文件，再进行发布。
<p>（1）MS-DOS下进入/helloapp目录下键入如下命令：jar cvf helloapp.war *.*；
<p>（2）把helloapp.war拷贝到/webapps目录下；
<p>（3）删除原来的helloapp目录；
<p>（4）启动Tomcat服务器。
<p>Tomcat服务器启动时，会把webapps下所有WAR文件自动展开为开放式的目录结构，变为/webapps/helloapp目录。<br>文章来源：<a href="http://syneer1981.spaces.live.com/blog/cns!6F8B2C7500427759!120.entry?_c=BlogPart">http://syneer1981.spaces.live.com/blog/cns!6F8B2C7500427759!120.entry?_c=BlogPart</a><br></p>
</div>
</div>
<img src ="http://www.blogjava.net/jianke/aggbug/110849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-04-16 00:13 <a href="http://www.blogjava.net/jianke/articles/110849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>◆用UDP编写网络聊天程序</title><link>http://www.blogjava.net/jianke/articles/96607.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Mon, 29 Jan 2007 12:31:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/96607.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/96607.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/96607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/96607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/96607.html</trackback:ping><description><![CDATA[/**<br /> * @(#)Chat1.java<br /> *<br /> * Chat1 application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/29<br /> */<br /> import java.awt.List;<br /> import java.awt.*;<br /> import java.awt.event.*;<br /> import java.net.*;<br /> import java.util.*;<br />public class Chat1 extends Frame<br />{<br /> List lst=new List(6);<br /> TextField tfIP=new TextField(15);<br /> TextField tfData=new TextField(20);<br /> DatagramSocket ds=null;<br />    public Chat1()<br />    {<br />     this.addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       ds.close();<br />       e.getWindow().dispose();<br />       System.exit(0);<br />      }<br />     });<br />     Panel pl=new Panel();<br />     pl.setLayout(new BorderLayout());<br />     pl.add(tfIP,BorderLayout.WEST);<br />     pl.add(tfData,BorderLayout.EAST);<br />     this.add(lst,BorderLayout.CENTER);<br />     this.add(pl,BorderLayout.SOUTH);<br />     <br />     try<br />     {<br />    ds=new DatagramSocket(3000);<br />     }<br />     catch(Exception e)<br />     {<br />      e.printStackTrace();<br />     }<br />     <br />     new Thread(new Runnable()<br />     {<br />      public void run()<br />      {<br />       byte []buf=new byte [1024];<br />       DatagramPacket dp=new DatagramPacket(buf,1024);<br />       while(true)<br />       {<br />        try<br />        {<br />         ds.receive(dp);<br />         Calendar c=Calendar.getInstance();<br />         lst.add(new String(dp.getData(),0,dp.getLength())+"    from: "+<br />          dp.getAddress().getHostAddress()+":"+dp.getPort()+new Date(),0); <br />        }<br />        catch(Exception e)<br />        {<br />         if(ds.isClosed()==false)<br />         {<br />          e.printStackTrace();<br />         } <br />        } <br />       }<br />      }<br />     }).start();<br />     <br />     tfData.addActionListener(new ActionListener()<br />     {<br />      public void actionPerformed(ActionEvent e)<br />      {<br />       byte []buf=tfData.getText().getBytes();<br />       try<br />       {<br />        DatagramPacket dp=new DatagramPacket(buf,buf.length,<br />         InetAddress.getByName(tfIP.getText()),3000);<br />        ds.send(dp);<br />       }<br />       catch(Exception ex)<br />       {<br />        ex.printStackTrace();<br />       }<br />       //lst.add(tfData.getText());<br />       tfData.setText("");<br />       <br />      }<br />     });<br />     <br />     <br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     Chat1 mainFrame=new Chat1();<br />     mainFrame.setTitle("Chat");<br />     mainFrame.setBounds(300,200,300,400);<br />     mainFrame.setVisible(true);<br />     mainFrame.setResizable(false);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/96607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-29 20:31 <a href="http://www.blogjava.net/jianke/articles/96607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第九讲 网络编程</title><link>http://www.blogjava.net/jianke/articles/96296.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 27 Jan 2007 10:32:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/96296.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/96296.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/96296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/96296.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/96296.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第九讲</span>
				<span style="FONT-SIZE: 18pt; mso-bidi-font-size: 12.0pt">
				</span>
				<span style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络编程</span>
				<span lang="EN-US" style="FONT-SIZE: 18pt; mso-bidi-font-size: 12.0pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">●<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络编程的基础知识</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络协议与</span>
				<span lang="EN-US">TCP/IP</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">IP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址和</span>
				<span lang="EN-US">Port</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（端口号）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">▼本地回路的</span>
				<span lang="EN-US">IP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址：</span>
				<span lang="EN-US">127.0.0.1</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: -10.5pt; mso-char-indent-count: -1.0; mso-char-indent-size: 10.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">▼端口号的范围为</span>
				<span lang="EN-US">0</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">～</span>
				<span lang="EN-US">65535</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间，</span>
				<span lang="EN-US">0</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">～</span>
				<span lang="EN-US">1023</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间的端口数是用于一些知名的网络服务和应用。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">●<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络程序</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">◆</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用户数据报协议（</span>
				<span lang="EN-US">User Datagram Protocol</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），是无连接通信协议。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">●<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络程序</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，传输控制协议（</span>
				<span lang="EN-US">Transmission Control Protocol</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是面向连接的通信协议。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的数据帧格式简单图例：</span>
		</p>
		<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN-LEFT: 21pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 58.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" valign="top" width="78">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">协议类型</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 34.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="45">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源</span>
												<span lang="EN-US">IP</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="60">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目标</span>
												<span lang="EN-US">IP</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="60">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源端口</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 54pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="72">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目标端口</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="60">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帧序号</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 45pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="60">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帧数据</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 8">                                                        </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中协议类型用于区分</span>
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">UDP</span>
		</p>
		<h1 style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="5">Socket</font>
				</span>
		</h1>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是网络驱动层提供给应用程序编程的接口和一种机制。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以把</span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">比喻成是一个港口码头，应用程序只要把货物放到港口码头上，就算完成了货物的运送。应用程序只需等待货物到达码头后，将货物取走。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是应用程序中创建，通过一种绑定机制与驱动程序建立关系，告诉自己所对应的</span>
				<span lang="EN-US">IP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">Port</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据发送过程</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US">
						<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?>
						<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
								<v:stroke joinstyle="miter">
								</v:stroke>
								<v:formulas>
										<v:f eqn="if lineDrawn pixelLineWidth 0">
										</v:f>
										<v:f eqn="sum @0 1 0">
										</v:f>
										<v:f eqn="sum 0 0 @1">
										</v:f>
										<v:f eqn="prod @2 1 2">
										</v:f>
										<v:f eqn="prod @3 21600 pixelWidth">
										</v:f>
										<v:f eqn="prod @3 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @0 0 1">
										</v:f>
										<v:f eqn="prod @6 1 2">
										</v:f>
										<v:f eqn="prod @7 21600 pixelWidth">
										</v:f>
										<v:f eqn="sum @8 21600 0">
										</v:f>
										<v:f eqn="prod @7 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @10 21600 0">
										</v:f>
								</v:formulas>
								<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
								</v:path>
								<o:lock aspectratio="t" v:ext="edit">
								</o:lock>
						</v:shapetype>
						<v:shape id="_x0000_i1025" style="WIDTH: 369pt; HEIGHT: 272.25pt" o:ole="" type="#_x0000_t75">
								<v:imagedata o:title="" src="file:///E:/temp/msoclip1/01/clip_image001.png">
								</v:imagedata>
						</v:shape>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据接收过程</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US">
						<v:shape id="_x0000_i1026" style="WIDTH: 370.5pt; HEIGHT: 278.25pt" o:ole="" type="#_x0000_t75">
								<v:imagedata o:title="" src="file:///E:/temp/msoclip1/01/clip_image003.png">
								</v:imagedata>
						</v:shape>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 18pt; mso-bidi-font-size: 12.0pt">Java</span>
				<span style="FONT-SIZE: 18pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的网络编程类</span>
				<span lang="EN-US" style="FONT-SIZE: 18pt; mso-bidi-font-size: 12.0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位于</span>
				<span lang="EN-US">java.net</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包中</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">DatagramSocket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类用于</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通信</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">ServerSocket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类用于</span>
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通信的服务器端（接受客户端连接的）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">Socket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类用于</span>
				<span lang="EN-US">TCP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通信的服务器（专用于和客户端进行数据传输的）和客户端</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 22pt; mso-bidi-font-size: 12.0pt">UDP</span>
				<span style="FONT-SIZE: 22pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络程序</span>
				<span lang="EN-US" style="FONT-SIZE: 22pt; mso-bidi-font-size: 12.0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">DatagramSocket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 150%">
				<font face="宋体">此类表示用来发送和接收数据报包的套接字。<span lang="EN-US"></span></font>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt 39pt; LINE-HEIGHT: 150%">
				<span style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt">
						<font face="宋体">数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由，也可能按不同的顺序到达。<span lang="EN-US"><o:p></o:p></span></font>
				</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt 39pt; LINE-HEIGHT: 150%">
				<span style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt">
						<font face="宋体">在<span lang="EN-US"> DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包，应该将 DatagramSocket 绑定到通配符地址。在某些实现中，将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。 <o:p></o:p></span></font>
				</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt 39pt; LINE-HEIGHT: 150%">
				<span style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt">
						<font face="宋体">示例：</font>
				</span>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 黑体; mso-bidi-font-size: 10.0pt">DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));</span>
				</code>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt">
						<font face="宋体"> 这等价于：</font>
				</span>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 黑体; mso-bidi-font-size: 10.0pt">DatagramSocket s = new DatagramSocket(8888);</span>
				</code>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt">
						<font face="宋体"> 两个例子都能创建能够在 UDP 8888 端口上接收广播的 DatagramSocket<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函数</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 84pt; TEXT-INDENT: 3pt">
				<code>
						<b>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">▼<span lang="EN-US"><a href="/java/net/DatagramSocket.html#DatagramSocket()">DatagramSocket</a></span></span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造数据报套接字并将其绑定到本地主机上任何可用的端口。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 84pt; TEXT-INDENT: 3pt">
				<code>
						<b>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">▼<span lang="EN-US"><a href="/java/net/DatagramSocket.html#DatagramSocket(int)">DatagramSocket</a></span></span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(int</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">port)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建数据报套接字并将其绑定到本地主机上的指定端口</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 84pt; TEXT-INDENT: 3pt">
				<code>
						<b>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">▼<span lang="EN-US"><a href="/java/net/DatagramSocket.html#DatagramSocket(int, java.net.InetAddress)">DatagramSocket</a></span></span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(int</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">port, <a title="java.net 中的类" href="/java/net/InetAddress.html">InetAddress</a></span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">laddr)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建数据报套接字，将其绑定到指定的本地地址。</span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">
										<o:p>
										</o:p>
								</span>
						</b>
				</code>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">
										<a href="/java/net/DatagramSocket.html#close()">close</a>
								</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关闭此数据报套接字。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">
										<a href="/java/net/DatagramSocket.html#send(java.net.DatagramPacket)">send</a>
								</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(<a title="java.net 中的类" href="/java/net/DatagramPacket.html">DatagramPacket</a></span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">p)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从此套接字发送数据报包。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">
										<a href="/java/net/DatagramSocket.html#receive(java.net.DatagramPacket)">receive</a>
								</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(<a title="java.net 中的类" href="/java/net/DatagramPacket.html">DatagramPacket</a></span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">p)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从此套接字接收数据报包。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">DatagramPacket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果把</span>
				<span lang="EN-US">DatagramSocket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">比作创建的港口码头，那么</span>
				<span lang="EN-US">DatagramPacket</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就是发送和接收数据的集装箱。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函数：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt">
				<code>
						<b>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">▼<span lang="EN-US"><a href="/java/net/DatagramPacket.html#DatagramPacket(byte[], int)">DatagramPacket</a></span></span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(byte[]</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">buf, int</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">length)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造</span>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">DatagramPacket</span>
				</code>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用来接收长度为</span>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">length</span>
				</code>
				<span lang="EN-US">
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的数据包</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt">
				<code>
						<b>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">▼<span lang="EN-US"><a href="/java/net/DatagramPacket.html#DatagramPacket(byte[], int, java.net.InetAddress, int)">DatagramPacket</a></span></span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(byte[]</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">buf, int</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">length, InetAddress</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">address, int</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">port)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造数据报包，用来将长度为</span>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">length</span>
				</code>
				<span lang="EN-US">
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的包发送到指定主机上的指定端口号。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getAddress</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回某台机器的</span>
				<span lang="EN-US"> IP </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址，此数据报将要发往该机器或者是从该机器接收到的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getPort</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回某台远程主机的端口号，此数据报将要发往该主机或者是从该主机接收到的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getData</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回数据缓冲区。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getLength</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回将要发送或接收到的数据的长度。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">InetAddress</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">InetAddress</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是用于表示计算机</span>
				<span lang="EN-US">IP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址的一个类，而在日常应用中的计算机地址是用“</span>
				<span lang="EN-US">192.168.0.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”、</span>
				<span lang="EN-US">www.it315.org</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等字符串格式来表示的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getByName</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">(String</span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 黑体"> </span>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">host)</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在给定主机名的情况下确定主机的</span>
				<span lang="EN-US"> IP </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getHostAddress</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回</span>
				<span lang="EN-US"> IP </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址字符串（以文本表现形式）。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getHostName</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">获取此</span>
				<span lang="EN-US"> IP </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址的主机名。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<code>
						<b>
								<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">getLocalHost</span>
						</b>
				</code>
				<code>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 黑体">()</span>
				</code>
				<span lang="EN-US">
						<br />          </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回本地主机。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最简单的</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字符串与字节数组之间的双向转换</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接收程序必须先启动运行，才能接收</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发送程序发送的数据。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用</span>
				<span lang="EN-US">start</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令来打开新命令行窗口的好处。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 81pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 81.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">■<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决发送中文字符串的问题。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">◆<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用</span>
				<span lang="EN-US">UDP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编写网络聊天程序<br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br /><font style="BACKGROUND-COLOR: #7fffd4"><font style="BACKGROUND-COLOR: #ffffff" color="#000000">import java.net.*;<br />public class UdpSend <br />{<br /> <br /> /**<br />  * Method main<br />  *<br />  *<br />  * @param args<br />  *<br />  */<br /> public static void main(String[] args) <br /> {<br />  // TODO: Add your code here<br />  try<br />  {<br />   DatagramSocket ds=new DatagramSocket();<br />   /*<br />   String strInfo="hello <a href="http://www.it315.org">www.it315.org</a>";<br />   ds.send(new DatagramPacket(strInfo.getBytes(),strInfo.length(),InetAddress.getByName("192.168.0.239"),2000));<br />   */<br />   String str="hello 中国";<br />   ds.send(new DatagramPacket(str.getBytes(),str.getBytes().length,InetAddress.getByName("192.168.0.239"),2500));<br />   ds.close();<br />  }<br />  catch(Exception e)<br />  {<br />   e.printStackTrace();<br />  }<br />  <br /> } <br />}<br />import java.net.*;<br />public class UdpReceive <br />{<br /> <br /> /**<br />  * Method main<br />  *<br />  *<br />  * @param args<br />  *<br />  */<br /> public static void main(String[] args) <br /> {<br />  // TODO: Add your code here<br />  try<br />  {<br />   DatagramSocket ds=new DatagramSocket(2500);<br />   byte []buf=new byte [1024];<br />   DatagramPacket dp=new DatagramPacket(buf,1024);<br />   ds.receive(dp);<br />   System.out.println(new String(dp.getData(),0,dp.getLength())+<br />    " from:"+" IP: "+dp.getAddress().getHostAddress()+" Port: "+dp.getPort());<br />   ds.close();<br />  }<br />  catch(Exception e)<br />  {<br />   e.printStackTrace();<br />  }<br />  <br />  <br /> } <br />}<br /><br /></font></font><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="FONT: 7pt 'Times New Roman'">     </span>
				</span>
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
<img src ="http://www.blogjava.net/jianke/aggbug/96296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-27 18:32 <a href="http://www.blogjava.net/jianke/articles/96296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BoxLayout组件</title><link>http://www.blogjava.net/jianke/articles/96165.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Fri, 26 Jan 2007 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/96165.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/96165.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/96165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/96165.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/96165.html</trackback:ping><description><![CDATA[
		<p>/**<br /> * @(#)TestBoxLayout.java<br /> *<br /> * TestBoxLayout application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/25<br /> */<br />import javax.swing.*; <br />import java.awt.*;<br />import java.awt.event.*;<br />import java.util.EventListener;<br />public class TestBoxLayout extends JFrame implements ActionListener<br />{<br /> JTextField jtf=new JTextField(); <br />    public TestBoxLayout()<br />    {<br />     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />     Container c=this.getContentPane();<br />     <br />     JPanel jpl1=new JPanel();<br />     JPanel jpl2=new JPanel();<br />     JPanel jpl3=new JPanel();<br />     JPanel jpl4=new JPanel();<br />     <br />     //BoxLayout blo=new BoxLayout(jtf,BoxLayout.LINE_AXIS);<br />     BoxLayout blo1=new BoxLayout(jpl1,BoxLayout.X_AXIS);<br />     BoxLayout blo2=new BoxLayout(jpl2,BoxLayout.X_AXIS);<br />     BoxLayout blo3=new BoxLayout(jpl3,BoxLayout.X_AXIS);<br />     BoxLayout blo4=new BoxLayout(jpl4,BoxLayout.X_AXIS);<br />     /*<br />     blo1.maximumLayoutSize(jpl1);<br />     blo2.maximumLayoutSize(jpl2);<br />     blo3.maximumLayoutSize(jpl3);<br />     blo4.maximumLayoutSize(jpl4);<br />     */<br />     jpl1.setLayout(blo1);<br />     jpl2.setLayout(blo2);<br />     jpl3.setLayout(blo3);<br />     jpl4.setLayout(blo4);<br />     <br />     JButton jb=null;<br />    <br />     for(int i=0;i&lt;4;i++)<br />     {<br />      String str=new String("123+");<br />      Character ch=str.charAt(i);<br />      jb=new JButton(ch.toString());<br />      jb.setSize(100,100);<br />      jpl1.add(jb);<br />      jb.addActionListener(this);<br />     }<br />     for(int i=0;i&lt;4;i++)<br />     {<br />      String str=new String("456-");<br />      Character ch=str.charAt(i);<br />      jb=new JButton(ch.toString());<br />      jpl2.add(jb);<br />      jb.addActionListener(this);<br />     }<br />      <br />     for(int i=0;i&lt;4;i++)<br />     {<br />      String str=new String("789*");<br />      Character ch=str.charAt(i);<br />      jb=new JButton(ch.toString());<br />      jpl3.add(jb);<br />      jb.addActionListener(this);<br />     }<br />     for(int i=0;i&lt;4;i++)<br />     {<br />      String str=new String("0.=\\");<br />      Character ch=str.charAt(i);<br />      jb=new JButton(ch.toString());<br />      jpl4.add(jb);<br />      jb.addActionListener(this);<br />     }<br />     c.setLayout(new GridLayout(5,1));<br />     c.add(jtf);<br />     c.add(jpl1);<br />     c.add(jpl2);<br />     c.add(jpl3);<br />     c.add(jpl4);<br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestBoxLayout mainFrame=new TestBoxLayout();<br />     mainFrame.setTitle("TestBoxLayout");<br />     mainFrame.setBounds(300,200,200,200);<br />     mainFrame.setVisible(true);<br />    }</p>
		<p> /**<br />  * Method actionPerformed<br />  *<br />  *<br />  * @param e<br />  *<br />  */<br /> public void actionPerformed(ActionEvent e) <br /> {<br />  // TODO: Add your code here<br />  jtf.setText(jtf.getText()+e.getActionCommand());<br />  //d.setText(jfd.getText()+e.getActionCommand());<br /> }<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/96165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-26 15:16 <a href="http://www.blogjava.net/jianke/articles/96165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GridLayout,JPane组件</title><link>http://www.blogjava.net/jianke/articles/96162.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Fri, 26 Jan 2007 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/96162.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/96162.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/96162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/96162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/96162.html</trackback:ping><description><![CDATA[
		<p>/**<br /> * @(#)TestCalculator.java<br /> *<br /> * TestCalculator application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/22<br /> */<br /> import java.*;<br /> import java.awt.*;<br /> import java.awt.event.*;<br /> import javax.swing.*;<br />import java.util.EventListener;<br />public class TestCalculator extends JFrame implements ActionListener<br />{<br /> private JTextField jfd=new JTextField();<br /> String str=new String("123+456-789*0.=\\");<br /> String strch=null;<br /> Character ch=null;<br /> <br />    public TestCalculator()<br />    {<br />     <br />     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />     Container c=this.getContentPane();<br />     jfd.setHorizontalAlignment(JTextField.RIGHT);<br />     JPanel jpl=new JPanel();<br />     jpl.setLayout(new GridLayout(4,4));<br />     c.add(jfd,BorderLayout.NORTH);<br />     c.add(jpl,BorderLayout.CENTER);<br />     //System.out.println(str.substring(1));<br />     JButton b=null;</p>
		<p>     for(int i=0;i&lt;16;i++)<br />     {<br />      ch=str.charAt(i);<br />      b=new JButton(ch.toString());<br />      //b=new JButton(new Integer(i+1).toString());<br />      b.addActionListener(this);<br />      jpl.add(b);<br />     }<br />     /*b=new JButton("1");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("2");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("3");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("+");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("4");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("5");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("6");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("-");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("7");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("8");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("9");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("*");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("0");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton(".");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("=");<br />     b.addActionListener(this);<br />     jpl.add(b);<br />     <br />     b=new JButton("\\");<br />     b.addActionListener(this);<br />     jpl.add(b);*/<br />     <br />     <br />     <br />    <br />      <br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestCalculator mainFrame=new TestCalculator();<br />     mainFrame.setTitle("TestCalculator");<br />     mainFrame.setBounds(300,200,300,400);<br />     mainFrame.setVisible(true);<br />    }</p>
		<p>
				<br /> public void actionPerformed(ActionEvent e) <br /> {<br />  // TODO: Add your code here<br />     //||strnum.indexOf("-")!=-1||strnum.indexOf("*")!=-1||strnum.indexOf("<a href="file://\\&quot;)!=-1">\\")!=-1</a><br />  <br />  String strnum=jfd.getText();<br />  //System.out.println(strnum);<br />  Character c1='+';<br />  //Character c2='-';<br />  int n1=0;<br />  float num1=0;<br />  float num2=0;<br />  float sum=0;<br />  Integer len=new Integer(0);<br />  <br />  if(e.getActionCommand().equals("+")||e.getActionCommand().equals("-")||e.getActionCommand().equals("*")||e.getActionCommand().equals("\\"))<br />  {<br />   <br />   num1=new Float(strnum.substring(0,len));<br />   <br />   System.out.println(num1);<br />   if(strnum.indexOf(c1)!=-1||strnum.indexOf("-")!=-1||strnum.indexOf("*")!=-1||strnum.indexOf("<a href="file://\\&quot;)!=-1">\\")!=-1</a>)<br />   {<br />    //System.out.println(strnum.length());<br />    jfd.setText(jfd.getText());<br />    //System.out.println(e.getActionCommand());<br />   }<br />   else<br />   {<br />    jfd.setText(jfd.getText()+e.getActionCommand());<br />     <br />    //System.out.println("no find.");<br />   }<br />   <br />  }<br />  else if(e.getActionCommand().equals("."))<br />  {<br />   <br />   if(strnum.indexOf(".")!=-1)<br />   {<br />    <br />    n1=strnum.indexOf(".");<br />    <br />    //System.out.println(strnum.length());<br />    if(strnum.substring(n1+1,n1+1).equals(".")==false)<br />    {<br />     //System.out.println(strnum.substring(n1+1,n1+1).equals("."));<br />     jfd.setText(jfd.getText());<br />     <br />    }<br />    else<br />    {<br />     jfd.setText(jfd.getText()+e.getActionCommand());<br />     <br />    }<br />   }<br />   else<br />   {<br />    jfd.setText(jfd.getText()+e.getActionCommand());<br />   }<br />   <br />  }<br />  else<br />  {<br />   if(e.getActionCommand().equals("="))<br />   {<br />    if(strnum.indexOf("=")!=-1)<br />    {<br />     jfd.setText(jfd.getText());<br />    }<br />    else<br />    {<br />     <br />     jfd.setText(jfd.getText()+e.getActionCommand());<br />    <br />    <br />     //System.out.println(strnum.substring(len+1,strnum.length()));<br />    }<br />   }<br />   else<br />   {<br />    jfd.setText(jfd.getText()+e.getActionCommand());<br />   }<br />   <br />  }<br />  <br /> }<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/96162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-26 15:14 <a href="http://www.blogjava.net/jianke/articles/96162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing中的标准对话框</title><link>http://www.blogjava.net/jianke/articles/95195.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 17:32:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95195.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95195.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95195.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestJOptionPane.java<br /> *<br /> * TestJOptionPane application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/22<br /> */<br /> import javax.swing.*;<br /> import javax.swing.event.*;<br /> import java.awt.event.*;<br />public class TestJOptionPane extends JFrame<br />{<br /> String strValue=null;<br />    public TestJOptionPane()<br />    {<br />     JOptionPane.showMessageDialog(/*this*/null,"程序已开始运行...","运行",JOptionPane.DEFAULT_OPTION);<br />     JTextArea jta=new JTextArea();<br />     JScrollPane jsp=new JScrollPane();<br />     jsp.getViewport().add(jta);<br />     this.getContentPane().add(jsp);<br />     this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);<br />     strValue=JOptionPane.showInputDialog(null,"请输入姓名：");<br />     //jta.setText(strValue);<br />     jta.append(strValue);<br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       if(JOptionPane.OK_OPTION==JOptionPane.showConfirmDialog(TestJOptionPane.this,"确认要退出程序吗？","Exit",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE))<br />       {<br />        e.getWindow().dispose();<br />       }<br />       <br />      }<br />     });<br />     <br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestJOptionPane mainFrame=new TestJOptionPane();<br />     mainFrame.setTitle("TestJOptionPane");<br />     mainFrame.setBounds(300,200,400,400);<br />     mainFrame.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-22 01:32 <a href="http://www.blogjava.net/jianke/articles/95195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JscrollPane组件</title><link>http://www.blogjava.net/jianke/articles/95193.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95193.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95193.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95193.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestSwing.java<br /> *<br /> * TestSwing application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/21<br /> */<br /> import javax.swing.*;<br />public class TestSwing extends JFrame<br />{<br />    public TestSwing()<br />    {<br />     JTextArea jta=new JTextArea(50,50);<br />      JScrollPane jsp=new JScrollPane();<br />      jsp.getViewport().add(jta);<br />      this.getContentPane().add(jsp);<br />      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestSwing mainFrame=new TestSwing();<br />     mainFrame.setTitle("TestSwing");<br />     mainFrame.setBounds(300,200,400,400);<br />     mainFrame.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 23:57 <a href="http://www.blogjava.net/jianke/articles/95193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFrame来创建程序的主框架窗口</title><link>http://www.blogjava.net/jianke/articles/95173.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 13:22:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95173.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95173.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95173.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestSwing.java<br /> *<br /> * TestSwing application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/21<br /> */<br /> import javax.swing.*;<br />public class TestSwing extends JFrame<br />{<br />    public TestSwing()<br />    {<br />     this.getContentPane().add(new JButton("hello"),"South");<br />     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestSwing mainFrame=new TestSwing();<br />     mainFrame.setTitle("TestSwing");<br />     mainFrame.setBounds(300,200,400,400);<br />     mainFrame.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 21:22 <a href="http://www.blogjava.net/jianke/articles/95173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>取消布局管理器</title><link>http://www.blogjava.net/jianke/articles/95120.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95120.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95120.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95120.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取消布局管理器</span>
				<span lang="EN-US" style="FONT-SIZE: 16pt; mso-bidi-font-size: 12.0pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l1 level1 lfo4">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">●<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">调用</span>
				<span lang="EN-US">Container.setLayout(null)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法取消布局管理器设置，在这种情况下，可以调用</span>
				<span lang="EN-US">Component.setBounds</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来用绝对坐标设置容器上的每个组件的大小和位置。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l1 level1 lfo4">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">●<span style="FONT: 7pt 'Times New Roman'">     </span></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不使用布局管理器将会给程序</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">带来一个潜在的问题，当容器大小改变时，所有组件仍保持原来的位置和大小，将导致整个程序界面比较“难看”。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
<img src ="http://www.blogjava.net/jianke/aggbug/95120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 13:28 <a href="http://www.blogjava.net/jianke/articles/95120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>布局管理器—CardLayout、GridLayout(Panel组件)</title><link>http://www.blogjava.net/jianke/articles/95117.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95117.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95117.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95117.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestCardLayout.java<br /> *<br /> * TestCardLayout application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/21<br /> */<br /> import java.awt.*;<br /> import java.awt.event.*;<br /> <br />public class TestCardLayout extends Frame<br />{ <br /> CardLayout cl=new CardLayout();<br />    Panel plCenter=new Panel(cl);<br />    public TestCardLayout()<br />    {<br />     GridLayout gl=new GridLayout(5,1);<br />     Panel plWest=new Panel(gl);<br />     Button first=new Button("first");<br />     Button prev=new Button("prev");<br />     Button next=new Button("next");<br />     Button three=new Button("three");<br />     Button last=new Button("last");<br />     plWest.add(first);<br />     plWest.add(prev);<br />     plWest.add(next);<br />     plWest.add(three);<br />     plWest.add(last);<br />   <br />     plCenter.add(new Button("one"),"1");<br />     plCenter.add(new Button("two"),"2");<br />     plCenter.add(new Button("three"),"3");<br />     plCenter.add(new Button("four"),"4");<br />     plCenter.add(new Button("five"),"5");<br />     add(plWest,"West");<br />     add(plCenter);<br />     class MyactionListener implements ActionListener<br />     {<br />      public void actionPerformed(ActionEvent e)<br />      {<br />       if(e.getActionCommand().equals("first"))<br />       {<br />        cl.first(plCenter);<br />       }<br />       else if(e.getActionCommand().equals("prev"))<br />       {<br />        cl.previous(plCenter);<br />       }<br />       else if(e.getActionCommand().equals("next"))<br />       {<br />        cl.next(plCenter);<br />       }<br />       else if(e.getActionCommand().equals("three"))<br />       {<br />        cl.show(plCenter,"3");<br />       }<br />       else<br />       {<br />        cl.last(plCenter);<br />       }<br />      }<br />     }<br />     MyactionListener ml=new MyactionListener();<br />     first.addActionListener(ml);<br />     prev.addActionListener(ml);<br />     next.addActionListener(ml);<br />     three.addActionListener(ml);<br />     last.addActionListener(ml);<br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestCardLayout mainFrame=new TestCardLayout();<br />     mainFrame.setTitle("TestCardLayout");<br />     mainFrame.setBounds(300,200,400,400);<br />     mainFrame.setVisible(true);<br />     <br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 13:01 <a href="http://www.blogjava.net/jianke/articles/95117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>布局管理器—FlowLayout</title><link>http://www.blogjava.net/jianke/articles/95113.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95113.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95113.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95113.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestFlowLayout.java<br /> *<br /> * TestFlowLayout application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/21<br /> */<br /> import java.awt.*;<br /> import java.awt.event.*;<br />public class TestFlowLayout extends Frame<br /> {<br />    public void init()<br /> {<br />  add(new Button("第一个"));<br />  add(new Button("第二个"));<br />  add(new Button("第三个"));<br />  add(new Button("第四个"));<br /> }<br />    public TestFlowLayout()<br />    {<br />     FlowLayout fl=new FlowLayout();<br />     setLayout(fl);<br />     init();<br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />    }<br />    public static void main(String[] args) <br />    {<br />     System.out.println("Hello World!");<br />     TestFlowLayout mainFram=new TestFlowLayout();<br />     mainFram.setTitle("TestBorderLayout");<br />     mainFram.setBounds(300,200,400,400);<br />     mainFram.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 11:13 <a href="http://www.blogjava.net/jianke/articles/95113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>布局管理器—BorderLayout组件</title><link>http://www.blogjava.net/jianke/articles/95109.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sun, 21 Jan 2007 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95109.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95109.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95109.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestBorderLayout.java<br /> *<br /> * TestBorderLayout application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/21<br /> */<br /> import java.awt.*;<br /> import java.awt.event.*;<br />public class TestBorderLayout extends Frame<br />{<br /> public void init()<br /> {<br />  add(new Button("East"),"East");<br />  add(new Button("South"),"South");<br />  add(new Button("West"),"West");<br />  add(new Button("North"),"North");<br />  add(new Button("Center"),/*"Center"*/BorderLayout.CENTER);<br /> }<br />    public TestBorderLayout()<br />    {<br />     init();<br />  <br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />    }<br />    public static void main(String[] args) <br />    {<br />     System.out.println("Hello World!");<br />     TestBorderLayout mainFram=new TestBorderLayout();<br />     mainFram.setTitle("TestBorderLayout");<br />     mainFram.setBounds(300,200,400,400);<br />     mainFram.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-21 10:42 <a href="http://www.blogjava.net/jianke/articles/95109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ScrollPane与TextArea组件</title><link>http://www.blogjava.net/jianke/articles/95078.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95078.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95078.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95078.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestScrollPane.java<br /> *<br /> * TestScrollPane application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/20<br /> */<br /> import java.awt.*;<br /> import java.awt.event.*;<br />public class TestScrollPane extends Frame<br />{<br />    public TestScrollPane()<br />    {<br />     TextArea ta=new TextArea("",10,50,TextArea.SCROLLBARS_NONE);<br />     ScrollPane sp=new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);<br />     add(sp);<br />     sp.add(ta);<br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />    }<br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestScrollPane mainFrame=new TestScrollPane();<br />     mainFrame.setTitle("TestScrollPane");<br />     mainFrame.setBounds(300,200,200,200);<br />     mainFrame.setVisible(true);<br />    }<br />}<br /><img src ="http://www.blogjava.net/jianke/aggbug/95078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 20:14 <a href="http://www.blogjava.net/jianke/articles/95078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Choice组件</title><link>http://www.blogjava.net/jianke/articles/95076.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 11:50:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95076.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95076.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95076.html</trackback:ping><description><![CDATA[
		<p>/**<br /> * @(#)TestChoice.java<br /> *<br /> * TestChoice application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/20<br /> */<br /> <br /> import java.awt.*;<br /> import java.awt.event.*;<br />public class TestChoice extends Frame<br />{<br /> Choice ch=new Choice();<br />    public TestChoice()<br />    {<br />     FlowLayout fl=new FlowLayout();<br />     setLayout(fl);<br />     ch.add("choice1");<br />     ch.add("choice2");<br />     ch.add("choice3");<br />     <br />     add(ch);<br />     ch.addItemListener(new ItemListener()<br />     {<br />      public void itemStateChanged(ItemEvent e)<br />      {<br />       System.out.println(e.getItem());<br />      } <br />     });<br />     addWindowListener(new WindowAdapter()<br />  {<br />   public void windowClosing(WindowEvent e)<br />   {<br />    e.getWindow().dispose();<br />   }<br />  });<br />    }</p>
		<p>    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestChoice mainFrame=new TestChoice();<br />     mainFrame.setTitle("TestChoice");<br />     mainFrame.setBounds(300,200,200,100);<br />     mainFrame.setVisible(true);<br />    }<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/95076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 19:50 <a href="http://www.blogjava.net/jianke/articles/95076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Checkbox组件</title><link>http://www.blogjava.net/jianke/articles/95069.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 10:54:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95069.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95069.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95069.html</trackback:ping><description><![CDATA[
		<p>/**<br /> * @(#)TestCheckbox.java<br /> *<br /> * TestCheckbox application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/20<br /> */<br /> import java.awt.*;<br /> import java.awt.event.*;<br />public class TestCheckbox extends Frame<br />{<br />    <br />    Checkbox cb1=new Checkbox("Are you a boy or gril?",true);<br /> CheckboxGroup cbg=new CheckboxGroup();<br /> Checkbox cb2=new Checkbox("Boy",true,cbg);<br /> Checkbox cb3=new Checkbox("Girl",false,cbg);</p>
		<p>
				<br /> class CbItemListener implements ItemListener<br /> {<br />  public void itemStateChanged(ItemEvent e)<br />  {<br />   Checkbox cb=(Checkbox)e.getItemSelectable();<br />   /*if(cb.getLabel().equals("Are you a boy or gril?"))<br />   {<br />    ....<br />   }*/<br />   if(cb==cb1)<br />   {<br />    if(cb.getState()==true)<br />    {<br />     System.out.println("你选择了复选框");<br />    }<br />    else<br />    {<br />     System.out.println("你取消选择复选框");<br />    }<br />   }<br />   else if(cb==cb2)<br />   {<br />    if(cb.getState()==true)<br />    {<br />     System.out.println("你是个男孩");<br />    }<br />    else<br />    {<br />     System.out.println("你是个女孩");<br />    }<br />   }<br />   else <br />   {<br />    if(cb.getState()==true)<br />    {<br />     System.out.println("你是个女孩");<br />    }<br />    else<br />    {<br />     System.out.println("你是个男孩");<br />    } <br />   }<br />    <br />  }<br /> }</p>
		<p> public TestCheckbox()<br /> {<br />  FlowLayout fl=new FlowLayout();<br />  setLayout(fl);<br />  add(cb1);<br />  add(cb2);<br />  add(cb3);<br />  addWindowListener(new WindowAdapter()<br />  {<br />   public void windowClosing(WindowEvent e)<br />   {<br />    e.getWindow().dispose();<br />   }<br />  });<br />  CbItemListener cbit=new CbItemListener();<br />  cb1.addItemListener(cbit);<br />  cb2.addItemListener(cbit);<br />  cb3.addItemListener(cbit);<br /> }</p>
		<p>
				<br />    <br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestCheckbox mainFrame=new TestCheckbox();<br />  mainFrame.setTitle("TestCheckbox");<br />  mainFrame.setBounds(300,200,400,400);<br />  mainFrame.setVisible(true);<br />    }<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/95069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 18:54 <a href="http://www.blogjava.net/jianke/articles/95069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MenuBar、Menu、MenuItem组件</title><link>http://www.blogjava.net/jianke/articles/95046.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95046.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95046.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95046.html</trackback:ping><description><![CDATA[
		<p>
				<br /> import java.awt.*;<br /> import java.awt.event.*;<br /> import javax.swing.*;<br />import java.util.EventListener;<br />public class TestMenuBar extends Frame /*implements ActionListener*/<br />{<br /> MenuBar menubar=new MenuBar();<br /> <br /> Menu fileM=new Menu("File");<br /> Menu editM=new Menu("Edit");<br /> Menu toolsM=new Menu("Tools");<br /> Menu helpM=new Menu("Help");<br /> <br /> MenuItem fileM1=new MenuItem("New");<br /> MenuItem fileM2=new MenuItem("Open");<br /> MenuItem fileM3=new MenuItem("Save");<br /> Menu fileM4=new Menu("Print");<br /> CheckboxMenuItem fileM5=new CheckboxMenuItem("Quit",true);<br /> MenuItem printM=new MenuItem("Preview");<br /> MenuItem setM=new MenuItem("Setting");<br /> MenuItem editM1=new MenuItem("连接");<br /> <br />    public TestMenuBar()<br />    {<br />     setM.setActionCommand("set");<br />     editM1.setActionCommand("connect");<br />     printM.addActionListener(new MenuBarListener());<br />     setM.addActionListener(new MenuBarListener());<br />     <br />        menubar.add(fileM);<br />  menubar.add(editM);<br />  menubar.add(toolsM);<br />  menubar.add(helpM); </p>
		<p>  fileM.add(fileM1);<br />  fileM.add(fileM2);<br />  fileM.add(fileM3);<br />  fileM.add(fileM4);<br />  fileM.addSeparator();<br />  fileM4.add(printM);<br />  fileM4.add(setM);<br />  fileM.add(fileM5);<br />  <br />  editM.add(editM1);<br />  //editM1.addActionListener(this);<br />  <br />  this.setMenuBar(menubar); <br />     <br />     this.addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />     editM1.addActionListener(new ActionListener()<br />     {<br />      public void actionPerformed(ActionEvent e)<br />      {<br />       if(editM1.getActionCommand().equals("connect"))<br />       {<br />        editM1.setActionCommand("disconnect");<br />        editM1.setLabel("断开");<br />       }<br />       else if(editM1.getActionCommand().equals("disconnect"))<br />       {<br />        editM1.setActionCommand("connect");<br />        editM1.setLabel("连接");<br />       }<br />      }<br />     });<br />    }<br />    public static void main(String[] args) <br />    {<br />     System.out.println("Hello World!");<br />     TestMenuBar mainFrame=new TestMenuBar();<br />     mainFrame.setTitle("TestMenuBar");<br />     mainFrame.setSize(400,400);<br />     mainFrame.setVisible(true);<br />    }<br />    <br /> /*public void actionPerformed(ActionEvent e) <br /> {<br />  // TODO: Add your code here<br />  if(e.getActionCommand().equals("connect"))<br />  {<br />   editM1.setActionCommand("disconnect");<br />   editM1.setLabel("断开");<br />  }<br />  else if(e.getActionCommand().equals("disconnect"))<br />  {<br />   editM1.setActionCommand("connect");<br />   editM1.setLabel("连接");<br />  }<br /> }*/<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/95046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 14:40 <a href="http://www.blogjava.net/jianke/articles/95046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用双缓冲来DrawLine</title><link>http://www.blogjava.net/jianke/articles/95044.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95044.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95044.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95044.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95044.html</trackback:ping><description><![CDATA[
		<p>/**<br /> * @(#)DrawLine.java<br /> *<br /> * DrawLine application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/17<br /> */</p>
		<p>import java.awt.*; <br />import java.awt.event.*;<br />public class DrawLine extends Frame <br />{<br /> private int begX;<br /> private int begY;<br /> private int endX;<br /> private int endY;<br /> Image oimg=null;<br /> Graphics og=null;<br /> public void paint(Graphics g)<br /> {<br />  /*<br />  Image img=this.getToolkit().getImage("..\\我要学习啦.gif");<br />  g.drawImage(img,100,100,this);<br />  if(oimg!=null)<br />  {<br />   //g.drawImage(oimg,0,0,this);<br />  }<br />  */<br />  g.drawImage(oimg,0,0,this);<br />  <br /> }<br />    public DrawLine()<br />    {<br />     setTitle("DrawLines");<br />     setSize(400,400);<br />     setVisible(true);<br />     Dimension d=this.getSize();<br />     oimg=this.createImage(d.width,d.height);<br />     og=oimg.getGraphics();<br />     addWindowListener(new WindowAdapter()<br />     {<br />      public void windowClosing(WindowEvent e)<br />      {<br />       e.getWindow().dispose();<br />      }<br />     });<br />     addMouseListener(new MouseAdapter()<br />     {<br />      <br />      public void mousePressed(MouseEvent e)<br />      {<br />       begX=e.getX();<br />       begY=e.getY();<br />      }<br />      public void mouseReleased(MouseEvent e)<br />      {<br />       endX=e.getX();<br />       endY=e.getY();<br />       Graphics g=getGraphics();<br />       g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));<br />       g.setColor(Color.RED);<br />       g.drawString(begX+","+begY,begX,begY);<br />       g.drawString(endX+","+endY,endX,endY);<br />       g.drawLine(begX,begY,endX,endY);<br />       og.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));<br />       og.setColor(Color.RED);<br />       og.drawString(begX+","+begY,begX,begY);<br />       og.drawString(endX+","+endY,endX,endY);<br />       og.drawLine(begX,begY,endX,endY);<br />      <br />      }<br />     });<br />    }<br />    public static void main(String[] args) {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     DrawLine mainFrame=new DrawLine();<br />     <br />     <br />    }<br />}<br /></p>
<img src ="http://www.blogjava.net/jianke/aggbug/95044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 14:26 <a href="http://www.blogjava.net/jianke/articles/95044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dialog组件</title><link>http://www.blogjava.net/jianke/articles/95043.html</link><dc:creator>大头剑客</dc:creator><author>大头剑客</author><pubDate>Sat, 20 Jan 2007 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/jianke/articles/95043.html</guid><wfw:comment>http://www.blogjava.net/jianke/comments/95043.html</wfw:comment><comments>http://www.blogjava.net/jianke/articles/95043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jianke/comments/commentRss/95043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jianke/services/trackbacks/95043.html</trackback:ping><description><![CDATA[/**<br /> * @(#)TestDialog2.java<br /> *<br /> * TestDialog2 application<br /> *<br /> * @author <br /> * @version 1.00 2007/1/20<br /> */<br />import java.awt.*;<br />import java.awt.event.*; <br />public class TestDialog2 extends Frame<br />{<br /> private TextField tf=new TextField(10);<br /> <br />   public TestDialog2()<br />   {<br />     Button bt1=new Button("打开模态窗口");<br />     Button bt2=new Button("打开非模态窗口");<br />     add(tf,"North");<br />     add(bt1,"Center");<br />     add(bt2,"East");<br />    <br />    bt1.addActionListener(new ActionListener()<br />    {<br />     public void actionPerformed(ActionEvent e)<br />     {<br />      MyDialog dlg=new MyDialog(TestDialog2.this,"模态窗口",true);<br />      dlg.setTF(tf.getText());<br />      dlg.setVisible(true);<br />     }<br />    });<br />    <br />    bt2.addActionListener(new ActionListener()<br />    {<br />     public void actionPerformed(ActionEvent e)<br />     {<br />      MyDialog dlg=new MyDialog(TestDialog2.this,"非模态窗口",false);<br />      dlg.setTF(tf.getText());<br />      dlg.setVisible(true);<br />     }<br />    });<br />        <br />    addWindowListener(new WindowAdapter()<br />    {<br />     public void windowClosing(WindowEvent e)<br />     {<br />      e.getWindow().dispose();<br />     }<br />    });<br />   }<br />   <br />   public void setTF(String setInfo)<br />   {<br />     tf.setText(setInfo);<br />   }<br />   <br />   <br />    public static void main(String[] args) <br />    {<br />     <br />     // TODO, add your application code<br />     System.out.println("Hello World!");<br />     TestDialog2 mainFram=new TestDialog2();<br />     mainFram.setTitle("hello");<br />     //mainFram.setBackground(Color.lightGray);<br />     mainFram.setBounds(300,200,400,400);<br />     mainFram.setVisible(true);<br />    }<br />}<br /><font color="#008000">//**************************************************************<br /></font>import java.awt.*;<br />import java.awt.event.*;<br />import java.awt.Dialog;<br />public class MyDialog extends Dialog <br />{<br /> private TextField tf=new TextField(10);<br /> <br /> public MyDialog(Frame owner,String title,boolean modal)<br /> {<br />  super(owner,title,modal);<br />  Button b1=new Button("应用");<br />  Button b2=new Button("确定");<br />  <br />  add(tf,"North");<br />  add(b1,"Center");<br />  add(b2,"East");<br />  setBounds(0,0,200,200);<br /> <br />  if(this.isModal()==true)<br />  {<br />   b1.setEnabled(false);<br />  }<br />  <br />  b1.addActionListener(new ActionListener()<br />  {<br />   public void actionPerformed(ActionEvent e)<br />   {<br />    ((TestDialog2)MyDialog.this.getOwner()).setTF(tf.getText()); <br />   }<br />  });<br />  <br />  b2.addActionListener(new ActionListener()<br />  {<br />   public void actionPerformed(ActionEvent e)<br />   {<br />    ((TestDialog2)MyDialog.this.getOwner()).setTF(tf.getText());<br />    dispose();<br />   }<br />  });<br />  <br />  <br />  addWindowListener(new WindowAdapter()<br />  {<br />   public void windowClosing(WindowEvent e)<br />   {<br />    e.getWindow().dispose();<br />   }<br />  });<br /> }<br /> public void setTF(String setInfo)<br /> {<br />  tf.setText(setInfo);<br /> }<br /><br />}<br /><br /><img src ="http://www.blogjava.net/jianke/aggbug/95043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jianke/" target="_blank">大头剑客</a> 2007-01-20 14:18 <a href="http://www.blogjava.net/jianke/articles/95043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>