<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>zwm512327</title>
    <description>有喜欢Java的朋友请加我qq：34022430，大家一起探讨</description>
    <link>http://zwm512327.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Java做的文件分割合并工具</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/197665" style="color:red;">http://zwm512327.javaeye.com/blog/197665</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JMenuItem;
import java.awt.Rectangle;
import javax.swing.JMenu;
import javax.swing.JToolBar;
import javax.swing.JMenuBar;
import javax.swing.JTabbedPane;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JScrollPane;
import java.util.*;
import javax.swing.JComboBox;;
public class Menu {
	static File cunDir=new File("d:\\");
	static File[] fl;
	static File[] chuanFile;
	//static File yFile;
	//static File fMuLu;
	static  File fenGeFile;
	static  File cunMuLu;
	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="64,31"
	private JTabbedPane jTabbedPane = null;
	private JPanel jPanel = null;
	private JPanel jPanel1 = null;
	private JLabel jLabel = null;
	private JTextField jTextField = null;
	private JButton jButton = null;
	private JLabel jLabel1 = null;
	private JTextField jTextField1 = null;
	private JButton jButton1 = null;
	private JLabel jLabel2 = null;
	private JTextField jTextField2 = null;
	private JLabel jLabel3 = null;
	private JButton jButton2 = null;
	private JButton jButton3 = null;
	private JButton jButton4 = null;
	private JButton jButton5 = null;
	private JFileChooser jFileChooser = null;
	private JFileChooser jFileChooser1 = null;
	private JScrollPane jScrollPane = null;
	private JLabel jLabel4 = null;
	private JTextArea jTextArea = null;
	private JButton jButton6 = null;
	private JLabel jLabel41 = null;
	private JComboBox jComboBox = null;
	private JTextField jTextField3 = null;
	private JButton jButton7 = null;
	/**
	 * This method initializes jFrame	
	 * 	
	 * @return javax.swing.JFrame	
	 */
	private JFrame getJFrame() {
		if (jFrame == null) {
			jFrame = new JFrame("分割合并工具");
			jFrame.setSize(new Dimension(361, 274));
			jFrame.setContentPane(getJTabbedPane());
			jFrame.setVisible(true);
			jFrame.setLocation(300,300);
			jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
		}
		return jFrame;
	}

	/**
	 * This method initializes jTabbedPane	
	 * 	
	 * @return javax.swing.JTabbedPane	
	 */
	private JTabbedPane getJTabbedPane() {
		if (jTabbedPane == null) {
			jTabbedPane = new JTabbedPane();
			jTabbedPane.addTab("分割", getJPanel());
			jTabbedPane.addTab("合并", getJPanel1());
		}
		return jTabbedPane;
	}

	/**
	 * This method initializes jPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jLabel3 = new JLabel();
			jLabel3.setBounds(new Rectangle(283, 106, 51, 18));
			jLabel3.setText("M");
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(11, 103, 87, 28));
			jLabel2.setText("分割大小");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(11, 60, 83, 28));
			jLabel1.setText("存储目录");
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.gridx = 0;
			gridBagConstraints.gridy = 0;
			jLabel = new JLabel();
			jLabel.setText("源文件");
			jLabel.setBounds(new Rectangle(11, 16, 76, 33));
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.add(jLabel, gridBagConstraints);
			jPanel.add(getJTextField(), null);
			jPanel.add(getJButton(), null);
			jPanel.add(jLabel1, null);
			jPanel.add(getJTextField1(), null);
			jPanel.add(getJButton1(), null);
			jPanel.add(getJFileChooser(), null);
			jPanel.add(jLabel2, null);
			jPanel.add(getJTextField2(), null);
			jPanel.add(jLabel3, null);
			jPanel.add(getJButton2(), null);
			jPanel.add(getJButton3(), null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel41 = new JLabel();
			jLabel41.setBounds(new Rectangle(164, 3, 108, 22));
			jLabel41.setText("合并后文件后缀：");
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.add(getJButton4(), null);
			jPanel1.add(getJButton5(), null);
			jPanel1.add(getJFileChooser1(), null);
			jPanel1.add(getJScrollPane(), null);
			jPanel1.add(getJButton6(), null);
			jPanel1.add(jLabel41, null);
			jPanel1.add(getJComboBox(), null);
			jPanel1.add(getJTextField3(), null);
			jPanel1.add(getJButton7(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(105, 16, 165, 25));
		}
		return jTextField;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton("...");
			jButton.setBounds(new Rectangle(285, 16, 35, 30));
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					jFileChooser.setMultiSelectionEnabled(false);
					jFileChooser.setFileSelectionMode(0);
					int state=jFileChooser.showOpenDialog(null);
					System.out.println("state="+state);
					//File fy=jFileChooser.getSelectedFile();
					if(state==0){
						fenGeFile=jFileChooser.getSelectedFile();
						jTextField.setText(fenGeFile.getAbsolutePath());
					}
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jTextField1	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField1() {
		if (jTextField1 == null) {
			jTextField1 = new JTextField();
			jTextField1.setBounds(new Rectangle(105, 60, 165, 25));
		}
		return jTextField1;
	}

	/**
	 * This method initializes jButton1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton("...");
			jButton1.setBounds(new Rectangle(285, 60, 35, 30));
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					jFileChooser.setMultiSelectionEnabled(false);
					jFileChooser.setFileSelectionMode(1);
					int state=jFileChooser.showOpenDialog(null);
					if(state==0){
						cunMuLu=jFileChooser.getSelectedFile();
						System.out.println("****"+cunMuLu.getAbsolutePath());
						jTextField1.setText(cunMuLu.getAbsolutePath());
					}
				}
			});
		}
		return jButton1;
	}

	/**
	 * This method initializes jTextField2	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField2() {
		if (jTextField2 == null) {
			jTextField2 = new JTextField(5);
			jTextField2.setBounds(new Rectangle(105, 104, 165, 25));
		}
		return jTextField2;
	}

	/**
	 * This method initializes jButton2	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton2() {
		if (jButton2 == null) {
			jButton2 = new JButton("分割");
			jButton2.setBounds(new Rectangle(11, 152, 135, 45));
			jButton2.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					int a=0;
					try{
						a=Integer.parseInt(jTextField2.getText());
					}catch(Exception ee){
						System.out.println("erro");
						return;
					}
					FengGeHeBing.fenGe(fenGeFile, cunMuLu, a);
				}
			});
		}
		return jButton2;
	}

	/**
	 * This method initializes jButton3	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton3() {
		if (jButton3 == null) {
			jButton3 = new JButton("退出");
			jButton3.setBounds(new Rectangle(191, 152, 135, 45));
			jButton3.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					System.exit(0);
				}
			});
		}
		return jButton3;
	}

	/**
	 * This method initializes jButton4	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton4() {
		if (jButton4 == null) {
			jButton4 = new JButton("打开");
			jButton4.setBounds(new Rectangle(8, 155, 85, 35));
			jButton4.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jFileChooser1.setFileSelectionMode(0);
					jFileChooser1.setMultiSelectionEnabled(true);
					int state=jFileChooser1.showOpenDialog(null);
					String s="";
					if(state==0){
						fl=jFileChooser1.getSelectedFiles();
						int[] st=new int[fl.length];
						for(int i=0;i&lt;fl.length;i++){
							String name=fl[i].getName();
							int index=name.indexOf('.');
							st[i]=Integer.parseInt(name.substring(0,index));
							s=s+fl[i].getName()+"\r\n";
							jTextArea.setText(s);
						}
						Arrays.sort(st);
						chuanFile=new File[st.length];
						for(int i=0;i&lt;st.length;i++){
							chuanFile[i]=new File(fl[i].getParent()+"\\"+(i+1)+".tem");
						}
					}
				}
			});
		}
		return jButton4;
	}

	/**
	 * This method initializes jButton5	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton5() {
		if (jButton5 == null) {
			jButton5 = new JButton("合并");
			jButton5.setBounds(new Rectangle(113, 155, 85, 35));
			jButton5.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					FengGeHeBing.heBing(chuanFile,cunDir,jComboBox.getSelectedItem().toString());
					jTextArea.setForeground(Color.red);
					jTextArea.setText("合并已完成");
				}
			});
		}
		return jButton5;
	}

	/**
	 * @param args
	 */
	public Menu(){
		this.getJFrame();
	}
	/**
	 * This method initializes jFileChooser	
	 * 	
	 * @return javax.swing.JFileChooser	
	 */
	private JFileChooser getJFileChooser() {
		if (jFileChooser == null) {
			jFileChooser = new JFileChooser();
			jFileChooser.setBounds(new Rectangle(5, 204, 500, 326));
		}
		return jFileChooser;
	}

	/**
	 * This method initializes jFileChooser1	
	 * 	
	 * @return javax.swing.JFileChooser	
	 */
	private JFileChooser getJFileChooser1() {
		if (jFileChooser1 == null) {
			jFileChooser1 = new JFileChooser();
			jFileChooser1.setFileSelectionMode(0);
			jFileChooser1.setBounds(new Rectangle(5, 193, 500, 326));
		}
		return jFileChooser1;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
			jScrollPane.setBounds(new Rectangle(15, 34, 325, 105));
			jScrollPane.setViewportView(getJTextArea());
			
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextArea();
		}
		return jTextArea;
	}

	/**
	 * This method initializes jButton6	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton6() {
		if (jButton6 == null) {
			jButton6 = new JButton();
			jButton6.setBounds(new Rectangle(227, 155, 85, 35));
			jButton6.setText("退出");
			jButton6.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.exit(0);
				}
			});
		}
		return jButton6;
	}

	/**
	 * This method initializes jComboBox	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getJComboBox() {
		if (jComboBox == null) {
			jComboBox = new JComboBox();
			jComboBox.setBounds(new Rectangle(276, 5, 69, 18));
			jComboBox.addItem(".exe");
			jComboBox.addItem(".pdf");
			jComboBox.addItem(".rm");
			jComboBox.addItem(".rmvb");
			jComboBox.addItem(".avi");
			jComboBox.setEditable(true);
		}
		return jComboBox;
	}

	/**
	 * This method initializes jTextField3	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField3() {
		if (jTextField3 == null) {
			jTextField3 = new JTextField();
			jTextField3.setText(cunDir.getAbsolutePath());
			jTextField3.setBounds(new Rectangle(110, 5, 50, 22));
		}
		return jTextField3;
	}

	/**
	 * This method initializes jButton7	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton7() {
		if (jButton7 == null) {
			jButton7 = new JButton();
			jButton7.setBounds(new Rectangle(1, 6, 105, 18));
			jButton7.setText("存放目录：");
			jButton7.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jFileChooser1.setFileSelectionMode(1);
					jFileChooser1.setMultiSelectionEnabled(false);
					int state=jFileChooser1.showOpenDialog(null);
					if(state==0){
						cunDir=jFileChooser1.getSelectedFile();
						jTextField3.setText(cunDir.getAbsolutePath());
					}
				}
			});
		}
		return jButton7;
	}

	public static void main(String[] args) {
		new Menu();
	}

}
</pre>
<p>&nbsp;</p>
<pre name="code" class="java">import java.io.*;
import java.util.*;
public class FengGeHeBing {
	static int nM=1024*1024;
	static public void fenGe(File fenGeFile,File cunMuLu,int daXiao){
		FileInputStream fis=null;
		try{
			if(!cunMuLu.isDirectory()){
				cunMuLu.mkdirs();
			}
			nM=nM*daXiao;
			int length=(int)fenGeFile.length();
			int num=length/nM;
			int yu=length%nM;
			System.out.println("feGenFile.length:"+length);
			fis=new FileInputStream(fenGeFile);
			//byte[] yByte=new byte[length];
			//fis.read(yByte);
			int wenJianShu=0;
			File[] fl=new File[num+1];
			int begin=0;
			for(int i=0;i&lt;num;i++){
				fl[i]=new File(cunMuLu.getAbsolutePath()+"\\"+(i+1)+".tem");
				if(!fl[i].isFile()){
					fl[i].createNewFile();
				}
				FileOutputStream fos=new FileOutputStream(fl[i]);
				byte[] bl=new byte[nM];
				fis.read(bl);
				//fos.write(yByte,begin,daXiao*1024*1024);
				fos.write(bl);
				begin=begin+daXiao*1024*1024;
				fos.close();
				//System.out.println(fl[i].getName()+"  length"+fl[i].length());
			}
			if(yu!=0){
				fl[num]=new File(cunMuLu.getAbsolutePath()+"\\"+(num+1)+".tem");
				if(!fl[num].isFile()){
					fl[num].createNewFile();
				}
				FileOutputStream fyu=new FileOutputStream(fl[num]);
				byte[] bl=new byte[yu];
				fis.read(bl);
				//fyu.write(yByte,length-yu,yu);
				fyu.write(bl);
				fyu.close();
				//System.out.println(fl[num].getName()+"  length"+fl[num].length());
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		finally{
			//fis.close();
		}
	}
	public static void heBing(File[] f,File cunDir,String hz) {
		try {
			//File[] fl = f.listFiles();
			File heBingFile = new File(cunDir.getAbsoluteFile()+"\\heBing"+hz);
			if (!heBingFile.isFile()) {
				heBingFile.createNewFile();
			}
			FileOutputStream fos = new FileOutputStream(heBingFile);
			for (int i = 0; i &lt; f.length; i++) {
				FileInputStream fis = new FileInputStream(f[i]);
				int len = (int) f[i].length();
				byte[] bRead = new byte[len];
				fis.read(bRead);
				fos.write(bRead);
				fis.close();
			}
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		File fenGeFile=new File("d:\\《金庸全集》典藏版v2.1.exe");
		File ccMuLu=new File("d:\\fenGe\\");
		int daXiao=3;
		//fenGe(fenGeFile,ccMuLu,daXiao);
		File heBingFile=new File("d:\\fenGe\\");
		//heBing(heBingFile);
	}
}
</pre>
<p>&nbsp;</p>
<p>第一个java文件主要写界面，第二个java文件写分割合并应用。老婆给我禁魔，自娱而已。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/197665#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 22:20:54 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/197665</link>
        <guid>http://zwm512327.javaeye.com/blog/197665</guid>
      </item>
      <item>
        <title>八皇后问题</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/190709" style="color:red;">http://zwm512327.javaeye.com/blog/190709</a>&nbsp;
          发表时间: 2008年05月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>上午闲着突然想起八皇后问题，上学时听过但没做过。反正没事，我就试着做下。一个上午在纸上画来画去，还是没有思路，都快崩溃了。到下午时候突然有点想法。试着打了一个满足条件的。看来不错，一鼓作气终于做出来了。做出来后发现其实是因为我对递归及回溯了解的不深，所以老理不清思路。核心的方法代码也就10行。不知道别人是怎么做的，希望高手给提供新的思路。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #00ffff;"><strong><em><span style="color: #333300;">八皇后问题是一个古老而著名的问题，是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出：在8X8格的国际象棋上摆放八个皇后，使其不能互相攻击，即任意两个皇后都不能处于同一行、同一列或同一斜线上，问有多少种摆法。<br />高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解，后来有人用图论的方法解出92种结果。</span><br /></em></strong>&nbsp;&nbsp;&nbsp;</span>&nbsp;</p>
<pre name="code" class="java">package U4;

public class 八皇后 {
	static boolean[][] hh=new boolean[8][8];//8*8棋盘
	static int count=0;//已经放上的皇后数
	static int num=0;//摆放方式的总数
	public boolean tj1(int line){//条件一，判断此列是否有摆放皇后
		for(int i=0;i&lt;8;i++){
			if(hh[i][line]==true){
				return false;
			}
		}
		return true;
	}
	public boolean tj2(int k,int m){//条件二，判断对角线是否有摆放皇后
		int i,j;
		for(i=k,j=m;i&lt;8&amp;&amp;j&lt;8;i++,j++){
			if(hh[i][j]==true){
				return false;
			}
		}
		for(i=k,j=m;i&gt;=0&amp;&amp;j&gt;=0;i--,j--){
			if(hh[i][j]==true){
				return false;
			}
		}
		for(i=k,j=m;i&gt;=0&amp;&amp;j&lt;8;i--,j++){
			if(hh[i][j]==true){
				return false;
			}
		}
		for(i=k,j=m;i&lt;8&amp;&amp;j&gt;=0;i++,j--){
			if(hh[i][j]==true){
				return false;
			}
		}
		return true;
	}
	//主要的递归实现方法
	public void mk(int line){
		if(line==8) return;//超过8行则退出
		for(int i=0;i&lt;8;i++){
			if(tj1(i)&amp;&amp;tj2(line,i)){
				hh[line][i]=true;
				count++;
				if(count==8){
					System.out.println("\r\n");
					pr();//摆放皇后8个则打印结果
					hh[line][i]=false;//再次寻找其他情况
					count--;
					continue;
				}
				mk(line+1);//递归
				hh[line][i]=false;
				count--;
			}
		}
		return;
	}
	public void pr(){//打印满足条件的摆放方法
		num++;
		System.out.println("&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;"+num+"&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;");
		for(int i=0;i&lt;8;i++){
			System.out.println();
			for(int j=0;j&lt;8;j++){
				if(hh[i][j]==true){
					System.out.print("◆ ");
				}
				else{
					System.out.print("○ ");
				}
			}
		}
	}
	public static void main(String[] args) {
		new 八皇后().mk(0);
		System.out.println("\r\n\r\nnum = "+num);
	}

}
</pre>
<p>&nbsp;</p>
<div class="quote_title">部分结果 写道</div>
<div class="quote_div">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;88&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br /><br />○ ○ ○ ○ ○ ○ ◆ ○ <br />○ ○ ○ ○ ◆ ○ ○ ○ <br />○ ○ ◆ ○ ○ ○ ○ ○ <br />◆ ○ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ◆ ○ ○ <br />○ ○ ○ ○ ○ ○ ○ ◆ <br />○ ◆ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ◆ ○ ○ ○ ○ <br /><br />&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;89&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br /><br />○ ○ ○ ○ ○ ○ ○ ◆ <br />○ ◆ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ◆ ○ ○ ○ ○ <br />◆ ○ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ○ ◆ ○ <br />○ ○ ○ ○ ◆ ○ ○ ○ <br />○ ○ ◆ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ◆ ○ ○ <br /><br />&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;90&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br /><br />○ ○ ○ ○ ○ ○ ○ ◆ <br />○ ◆ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ◆ ○ ○ ○ <br />○ ○ ◆ ○ ○ ○ ○ ○ <br />◆ ○ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ○ ◆ ○ <br />○ ○ ○ ◆ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ◆ ○ ○ <br /><br />&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;91&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br /><br />○ ○ ○ ○ ○ ○ ○ ◆ <br />○ ○ ◆ ○ ○ ○ ○ ○ <br />◆ ○ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ◆ ○ ○ <br />○ ◆ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ◆ ○ ○ ○ <br />○ ○ ○ ○ ○ ○ ◆ ○ <br />○ ○ ○ ◆ ○ ○ ○ ○ <br /><br />&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;92&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br /><br />○ ○ ○ ○ ○ ○ ○ ◆ <br />○ ○ ○ ◆ ○ ○ ○ ○ <br />◆ ○ ○ ○ ○ ○ ○ ○ <br />○ ○ ◆ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ◆ ○ ○ <br />○ ◆ ○ ○ ○ ○ ○ ○ <br />○ ○ ○ ○ ○ ○ ◆ ○ <br />○ ○ ○ ○ ◆ ○ ○ ○ <br /><br />num = 92 <br /></div>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/190709#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 May 2008 20:42:19 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/190709</link>
        <guid>http://zwm512327.javaeye.com/blog/190709</guid>
      </item>
      <item>
        <title>华为5分钟的编程题</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/188906" style="color:red;">http://zwm512327.javaeye.com/blog/188906</a>&nbsp;
          发表时间: 2008年05月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>去华为面试的一道编程题，要求五分钟写一个程序。把一个输入的数字完全逆转。比如输入25679，返回97652。我第一想法是用StringBuffer的reverse()一句话就写完了。eg：StringBuffer stb=new StringBuffer("3d3a555445");<br />&nbsp;&nbsp;stb.reverse();然后在先转成String类型，逆转后再转回去。结果面试官说，不能用Java的类库方法。顿时压力就有点大了。然后想先解析成字符用Vector来存储，可以知道长度，比数组简单，应该也能很快搞定。面试官看了下说还是不行，我就说我只是把Vector当数组来使用还不行？他说压根不允许用数组。当时头就大了。数组都不让用那怎么做啊。结果他说不用数组反而一下激发了我，这题就很简单，不让用数组是因为就用不着。想通了算法就简单了，不是五分钟的问题。原来写五行代码就够了。当时是只写了一个方法，面</p>
<pre name="code" class="java">public class Re {
	public static int reverse(int num){
		int returnNum=0;
		int yuShu=0;
		while(num&gt;9){
			yuShu=num%10;
			num=num/10;
			returnNum=returnNum*10+yuShu;
		}
		return returnNum*10+num;
	}
	public static void main(String[] args) {
		System.out.println(reverse(356212232));
	}

}
</pre>
<p>&nbsp;试完后回家在电脑上加了main方法测了下。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/188906#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 02 May 2008 19:40:21 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/188906</link>
        <guid>http://zwm512327.javaeye.com/blog/188906</guid>
      </item>
      <item>
        <title>怎么在没有Java环境的电脑上运行Java程序？</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/188739" style="color:red;">http://zwm512327.javaeye.com/blog/188739</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>如果是用C，VB，C++等做成的应用程序，可以做成exe文件，双击就可以运行。但是用Java做成的就比较麻烦。Class和打包成Jar都得用命令来运行，而且需要安装Java环境。</p>
<p>不知道有方法可以做的像exe那样方便的没有？</p>
<p>Jar文件的执行，Java环境配好有时候双击就能执行，有时候却不行，我至今想不明白是什么问题。写个批处理倒是都可以执行。经常遇到的问题是自己做个程序发给朋友运行时，发现朋友根本没Java环境或者根本就不知Java环境为何物。也不会配置环境变量。一步一步去教的话，又会觉的繁琐。一直想如果不用配置path怎么运行Java程序呢。那天不停的试，终于试出来了。</p>
<p>比如想运行x.jar文件，写个start.bat，在普通运行jar文件的命令上写个path指定。例如：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path=&ldquo;jdk1.5.0_08\jre\bin&rdquo;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -jar x.jar</p>
<p>这样的话，就可以在没有安装java环境的机器或者是没有配置环境变量path的电脑上运行java程序了。当然自己的程序文件夹中要包含一个jre，&ldquo;path=&rdquo;句改成发的文件夹中jre的相对路径。这是我能想到的唯一办法，不知道还有其他的方法在没有Java环境的机器上运行Java程序没有？可以用工具把jar文件变成exe来双击运行，不过Java环境还是需要配置的。而且我试了变成exe后启动会更慢，文件变大了好多倍，不知是什么原因。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/188739#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 May 2008 23:51:14 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/188739</link>
        <guid>http://zwm512327.javaeye.com/blog/188739</guid>
      </item>
      <item>
        <title>用Swing做的文件选择器</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/188560" style="color:red;">http://zwm512327.javaeye.com/blog/188560</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="quote_title">把我曾经遇到的一些问题跟大家分享下。好多问题教材上找不到答案，当时花费了好多时间，有些是网上查了好久查到的，有些是自己试了好久才明白的。</div>
<p>1）不管屏幕大小，始终把界面显示到屏幕固定比例的位置</p>
<p>2）文件选择器的使用，Java API上讲的太少了，就一个如何使文件选择器显示出来都困扰我很久，不知道大家刚接触时是否有同感。</p>
<p>3）事件处理怎么判断是哪个控件触发了事件。</p>
<p>4）选项卡的使用</p>
<p>5）滚动条的加入</p>
<p>6）鼠标左右键的区分</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （5）和（6）的问题本程序中不包含。以后补上。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程序涉及内容包含选项卡布局，文件选择器及一些控件，还包含最简单的事件处理。抛砖引玉，希望对刚学swing及事件驱动的人有所帮助。</p>
<pre name="code" class="java">import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class YFileChooser implements ActionListener{
	JFrame frame=new JFrame("文件选择器实例");
	JTabbedPane tabPane=new JTabbedPane();//选项卡布局
	Container con=new Container();//布局1
	Container con1=new Container();//布局2
	JLabel label1=new JLabel("选择目录");
	JLabel label2=new JLabel("选择文件");
	JTextField text1=new JTextField();
	JTextField text2=new JTextField();
	JButton button1=new JButton("...");
	JButton button2=new JButton("...");
	JFileChooser jfc=new JFileChooser();//文件选择器
	YFileChooser(){
		jfc.setCurrentDirectory(new File("d:\\"));//文件选择器的初始目录定为d盘
		//下面两行是取得屏幕的高度和宽度
		double lx=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
		double ly=Toolkit.getDefaultToolkit().getScreenSize().getHeight();
		frame.setLocation(new Point((int)(lx/2)-150,(int)(ly/2)-150));//设定窗口出现位置
		frame.setSize(300,150);//设定窗口大小
		frame.setContentPane(tabPane);//设置布局
       //下面设定标签等的出现位置和高宽
		label1.setBounds(10,10,70,20);
		label2.setBounds(10,30,100,20);
		text1.setBounds(80,10,120,20);
		text2.setBounds(80,30,120,20);
		button1.setBounds(210,10,50,20);
		button2.setBounds(210,30,50,20);
		
		button1.addActionListener(this);//添加事件处理
		button2.addActionListener(this);//添加事件处理
		con.add(label1);
		con.add(label2);
		con.add(text1);
		con.add(text2);
		con.add(button1);
		con.add(button2);
		con.add(jfc);
		tabPane.add("目录/文件选择",con);//添加布局1
		tabPane.add("暂无内容",con1);//添加布局2
		frame.setVisible(true);//窗口可见
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使能关闭窗口，结束程序
	}                             
	public void actionPerformed(ActionEvent e){//事件处理
		if(e.getSource().equals(button1)){//判断触发方法的按钮是哪个
			jfc.setFileSelectionMode(1);//设定只能选择到文件夹
			int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句
			if(state==1){
				return;//撤销则返回
			}
			else{
				File f=jfc.getSelectedFile();//f为选择到的目录
				text1.setText(f.getAbsolutePath());
			}
		}
		if(e.getSource().equals(button2)){
			jfc.setFileSelectionMode(0);//设定只能选择到文件
			int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句
			if(state==1){
				return;//撤销则返回
			}
			else{
				File f=jfc.getSelectedFile();//f为选择到的文件
				text2.setText(f.getAbsolutePath());
			}
		}
	}
	public static void main(String[] args) {
		new YFileChooser();

	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/188560#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Apr 2008 21:05:45 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/188560</link>
        <guid>http://zwm512327.javaeye.com/blog/188560</guid>
      </item>
      <item>
        <title>文件读写实例模板</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/188173" style="color:red;">http://zwm512327.javaeye.com/blog/188173</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在公司经常做一些文件分析及修改的工具。大多数的同事用vb，也有人用perl。我刚开始也学着用vb和perl来做。后来做了几次后发现，对于文件操作和字符串匹配Java更有优势。perl的正则表达式是很强大，但是一般的应用根本用不着那么深的分析。而vb对于字符串的操作实在是不敢恭维。举个简单的例子，判断一个字符串是否包含一个子串。java中只需要 <br />String s=&ldquo;Hello，World&rdquo;； <br />if（s.contains("llo")){}就可以了 <br />而vb则需要先判断子串在全串中的位置，根据返回的值来判断是否包含。vb中连截取子串都感觉很繁琐。perl语言实在是太随心所欲了，好多的东西是用特定的符合来表示，极其考验我的记忆力。 <br />下面写个简单的文件读写操作，算是我工作常用的一个模板。包括了文件过滤器，目录及文件的递归遍历，文件的读写操作和字符串的分析。没有好的例子，所以不用到正则表达式，其实Java中也有正则表达式匹配的内容。不过根据个人经验，String类的方法已经足够强大。文件读写用的是字符流（以前老搞不清楚字符流跟字节流到底指什么，工作后才恍然大悟） <br />程序从目录开始分析，通过文件过滤器把根目录中的文件（包括子目录）放入文件数组。如果是目录递归执行上一过程，文件则进行读取操作。 <br />Java把目录也看做文件，可以用.isDirectory（）方法来判断是否目录</p>
<pre name="code" class="java">import java.io.*;
class EFileFilter implements FileFilter{//一个文件过滤器
	public boolean accept(File f){
		if(!f.getName().endsWith(".java")){//这里设计过滤文件的规则
			return true;
		}
		return false;
	}
}
public class RFile {
	public static void directory(File f){//目录分析操作
		File[] fl=f.listFiles(new EFileFilter());//将目录中的文件用过滤器过滤后的文件赋给fl数组。
		//File[] fl=f.listFiles();如果不带参数则把目录中的所有文件赋给fl文件数组。
		for(int i=0;i&lt;fl.length;i++){
			if(fl[i].isDirectory()){//如果此文件是目录的话，递归调用directory（）方法，使能够遍历
				directory(fl[i]);//递归
			}
			else{
				readFile(fl[i]);//进入单个文件的读写操作
			}
		}
	}
	public static void readFile(File f){//单个文件的读写操作
		try{
			StringBuffer stb=new StringBuffer();//相比String能提高较大的性能，这点在做Lucene时候体会较深
			File newD=new File("d:\\new\\");//新文件存放的目录
			if(!newD.isDirectory()){
				newD.mkdirs();//如果目录不存在则创建
			}
			File newFile=new File(newD.getAbsoluteFile()+f.getName());//新文件
			FileWriter fw=new FileWriter(newFile);//文件写字符流
			BufferedReader br=new BufferedReader(new FileReader(f));//文件读字符流
			String s;
			while((s=br.readLine())!=null){
				System.out.println(s);//打印文件的内容	
				if(bString(s)){//调用分析字符串的方法
					stb.append(s);//如果满足条件则写到新文件中
				}
			}
			fw.append(stb);
			fw.close();//一定要记得关闭
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static boolean bString(String s){
		//对于String，java有很多实用的方法，可以去查文档，下边注释掉的是我工作中经常用到的一些
		/*if(s.startsWith("")||s.endsWith("")||s.contains("")||s.charAt(4)=='a'){
			return true;
		}*/
		return true;
	}
	public static void main(String[] args) {
		File fd=new File("d:\\");//定义要分析的目录
		directory(fd);//从目录开始执行
	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/188173#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Apr 2008 20:32:27 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/188173</link>
        <guid>http://zwm512327.javaeye.com/blog/188173</guid>
      </item>
      <item>
        <title>构造方法私有化的作用及接口和父类的辨析</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/187745" style="color:red;">http://zwm512327.javaeye.com/blog/187745</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在上篇《难倒高手的五行代码》里边，有人说没有意义，在大多数真正编程中确实是没有意义。但是在面试或者考试中是难免遇上。毕竟面试不可能直接让你写个操作系统什么的。这是一般的看法。另一个角度上来说，我觉的有人在编程，也有人需要分析理论。两者都是不能少的。比如你的老师也许到公司编程不如你，但是要交学生你很难比上你的老师。况且你说没用也许因为你看不懂，如果能真正分析清楚这个，你会对Java语言的设计有一个新的了解。<br />     昨天跟同学讨论了下。同学拿c++运行试了，结果产生了不同的结果。<br />     <span style="color: orange">int c=1；c=c++</span> 这句在Java中运行后c的值是1.但是在C++中是2。 <br />      <span style="color: orange">int[] array=new int[5]; int k=2; array[++k]=k=6；</span> 在Java中运行结果k为6，array[3]=6.而在c++中则产生溢出错误。<br />      看来Java和c++在细微之处设计是有很大不同的。<br />       我又试了c#。c#中与Java运行结果相同。c#不得不承认其更接近Java，而不是C++。下面讨论两个问题，是曾经让我迷茫的东西。<br />      （1）java中构造方法如果用private修饰，会产生不能在其他类中用此构造方法创建此类的对象的情况<br />     如下例所示： private修饰的构造方法，不能在类Gz中用此构造方法创建A的对象。<br />class A{<br />	private A(int a){<br />		System.out.println("This is A");<br />	}<br />	public A(){<br />		<br />	}<br />}<br />public class Gz{<br />	public static void main(String[] args) {<br />		// TODO 自动生成方法存根<br />		A b=new A();//正确<br />		A a=new A(12);//此句会编译出错，因为私有化方法在其他类中不能访问，构造方法也不例外<br />	}<br /><br />}<br />    （2）关于接口和父类，想说明几个问题。首先接口中定义的变量即便不加修饰，默认也是static final的。如果接口和父类创建了一个共同的变量，用子类自己创建的对象去访问这个变量会由于不知道使用哪个而出错。但是如果用子类实例化的接口或父类对象却能够正确的访问自己创建的变量<br />     interface Fc{<br />	int a=44;<br />	int b=66;<br />}<br />class A{<br />	int a=55;<br />}<br />public class Gz extends A implements Fc{<br />	public static void main(String[] args) {<br />		Gz ngz=new Gz();//创建子类的对象<br />		System.out.println(ngz.b);<br />		System.out.println(ngz.a);//此句出错，因为父类和接口都有a，不知道使用哪个<br />		System.out.println(Gz.b);//正确，接口中定义的变量默认是static的，所以可以当作类变量来使用<br />		System.out.println(Gz.a);////此句出错，因为父类和接口都有a，不知道使用哪个<br />		Gz.b=45;//此句出错，接口中的变量默认是final，也就是常量，不能进行修改<br />		System.out.println(Gz.b);<br />		//*********************<br />		Fc f1=new Gz();//用子类来实例化接口对象<br />		System.out.println(f1.a);//此句正确，会自动使用接口中的a<br />		//*********************<br />		A a1=new Gz();//用子类来实例化父类对象<br />		System.out.println(a1.a);//此句正确，会自动使用父类中的a<br />	}<br /><br />}
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/187745#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Apr 2008 19:54:00 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/187745</link>
        <guid>http://zwm512327.javaeye.com/blog/187745</guid>
      </item>
      <item>
        <title>难倒Java高手的五行代码</title>
        <author>zwm512327</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm512327.javaeye.com">zwm512327</a>&nbsp;
          链接：<a href="http://zwm512327.javaeye.com/blog/187233" style="color:red;">http://zwm512327.javaeye.com/blog/187233</a>&nbsp;
          发表时间: 2008年04月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          package U4;<br /><br />public class Pl1 {<br />	public static void main(String[] args) {<br />		int[] array=new int[5];<br />		int k=2;<br />		array[++k]=k=6;<br />		System.out.println("k = "+k);<br />		for(int i=0;i&lt;array.length;i++){<br />			System.out.println(array[i]);<br />		}<br />	}<br /><br />}<br /><span style="color: red">//问题：k最后的值变为多少，数组是哪一位被赋值，且被赋值成多少</span><br />下一个问题也是关于“++”的<br />package U4;<br /><br />public class Plus {<br />	public static void main(String[] args) {<br />		int c=1;<br />		int a;<br />		c=c++;<br />		a=c;<br />		System.out.println("c = "+c+" a="+a);<br /><br />	}<br /><br />}<br />//输出结果是什么？原因<br />// out: c = 1 a = 1
          <br/>
          <span style="color:red;">
            <a href="http://zwm512327.javaeye.com/blog/187233#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Apr 2008 10:25:16 +0800</pubDate>
        <link>http://zwm512327.javaeye.com/blog/187233</link>
        <guid>http://zwm512327.javaeye.com/blog/187233</guid>
      </item>
  </channel>
</rss>