收集java的常用函数代码!大家分享,共同学习!
解决方案 »
- java多线程一个问题。
- 怪!编译时不检查数组下标越界?
- java.net.SocketException: Broken pipe 是什么原因引起的啊
- 请问一下,我将数据存到VECTOR里,为何取出来重复的是最后一条数据。
- 可否解释为何出现这样的结果
- 向大侠们求救:java使用Socket和win平台下的C程序通信,传输的信息包括数据、字符串,应该怎么进行??用对象流可以吗??
- 急!socket传输多个图片,接收端没办法区分开各个图片
- 请教一组问题,关于string/int/date/time之间的转化函数。
- Class database.DBConnectionManager not found!为什么?
- java的日期问题(今天下班前结账2002-7-24)
- 常量池解析中的直接引用是什么?
- 淘宝笔试题 Stringbuffer和StringBuilder的区别是什么?
楼主【jdlsfl】截止到2008-07-01 23:53:51的历史汇总数据(不包括此帖):
发帖的总数量:52 发帖的总分数:2494
结贴的总数量:52 结贴的总分数:2494
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
你好歹自己带个头,搞2个坐坐样子杂。
==========================
纯java的?
trim
q.append
for(){}
while(){}
substring
replaceall
lookup
rs.next
xxx.parseInt
new算不算
xxx.valueof
smipleformatdate算么
xxx.equals
xxx.tostring
sum
max
min
avg
*@&#@%(……@#(*……@¥()
for(int i=0;i<xxx;i++)
Iterator it = xx.iterator();
XXX x = new XXX();
xxx.split();
xxx.equals();
xxx.tostring();
xxx.getXxx(x);
xxx.setXxx(x);
xxx = Xxx.parseXxx();trim()
.append()想不起来了... - -
还是谢谢各位
我的本意是实际项目中可以用的常用函数代码(不在保密范围之内的)
当然提供原始的代码大家温习一下也是可以的先贴几个代码
/**
* 将某个日期以固定格式转化成字符串
*
* @param date
* @return String
*/
public static String dateToStr(java.util.Date date)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
return str;
}
/**
* 判断任意一个整数是否素数
*
* @param n
* @return boolean
*/
public static boolean isPrimes(int n)
{
for (int i = 2; i <= Math.sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
* 获得任意一个整数的阶乘,递归
*
* @param n
* @return n!
*/
public static int factorial(int n)
{
if (n == 1)
{
return 1;
}
return n * factorial(n - 1);
}
* 将指定byte数组以16进制的形式打印到控制台
*
* @param hint
* String
* @param b
* byte[]
* @return void
*/
public static void printHexString(String hint, byte[] b)
{
System.out.print(hint);
for (int i = 0; i < b.length; i++)
{
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1)
{
hex = '0' + hex;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
notify();//激活一个线程
package net.java2000.tools;/**
* Title: Java Bean 工具
* Description:
* Copyright: Copyright (c) 2001
* Company: JAVA世纪网 http://www.java2000.net
* @author 赵学庆
* @version 1.0
*/
import java.util.*;
import java.util.regex.Pattern;public class StrTools {
/**
* 分割字符串
*
* @param str String 原始字符串
* @param splitsign String 分隔符
* @return String[] 分割后的字符串数组
*/
@SuppressWarnings("unchecked")
public static String[] split(String str, String splitsign) {
int index;
if (str == null || splitsign == null)
return null;
ArrayList al = new ArrayList();
while ((index = str.indexOf(splitsign)) != -1) {
al.add(str.substring(0, index));
str = str.substring(index + splitsign.length());
}
al.add(str);
return (String[]) al.toArray(new String[0]);
} /**
* 替换字符串
*
* @param from String 原始字符串
* @param to String 目标字符串
* @param source String 母字符串
* @return String 替换后的字符串
*/
public static String replace(String from, String to, String source) {
if (source == null || from == null || to == null)
return null;
StringBuffer bf = new StringBuffer("");
int index = -1;
while ((index = source.indexOf(from)) != -1) {
bf.append(source.substring(0, index) + to);
source = source.substring(index + from.length());
index = source.indexOf(from);
}
bf.append(source);
return bf.toString();
} /**
* 替换字符串,能能够在HTML页面上直接显示(替换双引号和小于号)
*
* @param str String 原始字符串
* @return String 替换后的字符串
*/
public static String htmlencode(String str) {
if (str == null) {
return null;
} return replace("\"", """, replace("<", "<", str));
} /**
* 替换字符串,将被编码的转换成原始码(替换成双引号和小于号)
*
* @param str String
* @return String
*/
public static String htmldecode(String str) {
if (str == null) {
return null;
} return replace(""", "\"", replace("<", "<", str));
} private static final String _BR = "<br/>"; /**
* 在页面上直接显示文本内容,替换小于号,空格,回车,TAB
*
* @param str String 原始字符串
* @return String 替换后的字符串
*/
public static String htmlshow(String str) {
if (str == null) {
return null;
} str = replace("<", "<", str);
str = replace(" ", " ", str);
str = replace("\r\n", _BR, str);
str = replace("\n", _BR, str);
str = replace("\t", " ", str);
return str;
} /**
* 返回指定字节长度的字符串
*
* @param str String 字符串
* @param length int 指定长度
* @return String 返回的字符串
*/
public static String toLength(String str, int length) {
if (str == null) {
return null;
}
if (length <= 0) {
return "";
}
try {
if (str.getBytes("GBK").length <= length) {
return str;
}
} catch (Exception ex) {
}
StringBuffer buff = new StringBuffer(); int index = 0;
char c;
length -= 3;
while (length > 0) {
c = str.charAt(index);
if (c < 128) {
length--;
} else {
length--;
length--;
}
buff.append(c);
index++;
}
buff.append("...");
return buff.toString();
} /**
* 判断是否为整数
*
* @param str 传入的字符串
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
} /**
* 判断是否为浮点数,包括double和float
*
* @param str 传入的字符串
* @return 是浮点数返回true,否则返回false
*/
public static boolean isDouble(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");
return pattern.matcher(str).matches();
} /**
* 判断输入的字符串是否符合Email样式.
*
* @param str 传入的字符串
* @return 是Email样式返回true,否则返回false
*/
public static boolean isEmail(String str) {
Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
return pattern.matcher(str).matches();
} /**
* 判断输入的字符串是否为纯汉字
*
* @param str 传入的字符窜
* @return 如果是纯汉字返回true,否则返回false
*/
public static boolean isChinese(String str) {
Pattern pattern = Pattern.compile("[\u0391-\uFFE5]+$");
return pattern.matcher(str).matches();
} /**
* 是否为空白,包括null和""
*
* @param str
* @return
*/
public static boolean isBlank(String str) {
return str == null || str.trim().length() == 0;
} /**
* 判断是否为质数
*
* @param x
* @return
*/
public static boolean isPrime(int x) {
if (x <= 7) {
if (x == 2 || x == 3 || x == 5 || x == 7)
return true;
}
int c = 7;
if (x % 2 == 0)
return false;
if (x % 3 == 0)
return false;
if (x % 5 == 0)
return false;
int end = (int) Math.sqrt(x);
while (c <= end) {
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 6;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 6;
}
return true;
} public static void main(String[] args) {
String[] numbers = { "12345", "-12345", "123.45", "-123.45", ".12345", "-.12345", "a12345", "12345a", "123.a45" };
for (String str : numbers) {
System.out.println(str + "=" + isInteger(str) + " " + isDouble(str));
} String[] emails = { "[email protected]", "[email protected]", "[email protected]" };
for (String str : emails) {
System.out.println(str + "=" + isEmail(str));
}
String[] chineses = { "中国", "1中国", "中国1", "1中国2", "中1国" };
for (String str : chineses) {
System.out.println(str + "=" + isChinese(str));
}
}
}
Created on 2007年8月20日, 上午 8:37
*/
import java.io.*;
import java.sql.*;
import java.util.Properties;
public class Db {
private String driver;
private String url;
private String user;
private String password;
private Connection conn;
private Statement stm;
private ResultSet rs;
public Db(){
this("DBConf.properties");
}
public Db(String conf) {
loadProperties(conf);
setConn();
}
public Connection getConn(){
return this.conn;
}
//handle the properties file to get the informations for connection
private void loadProperties(String conf){
Properties props = new Properties();
try {
props.load(new FileInputStream(conf));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.driver = props.getProperty("driver");
this.url = props.getProperty("url");
this.user = props.getProperty("user");
this.password = props.getProperty("password");
}
//implement the Connection
private void setConn(){
try {
Class.forName(driver);
this.conn = DriverManager.getConnection(url,user,password);
} catch(ClassNotFoundException classnotfoundexception) {
classnotfoundexception.printStackTrace();
System.err.println("db: " + classnotfoundexception.getMessage());
} catch(SQLException sqlexception) {
System.err.println("db.getconn(): " + sqlexception.getMessage());
}
}
public void doInsert(String sql) {
try {
Statement statement = conn.createStatement();
int i = stm.executeUpdate(sql);
} catch(SQLException sqlexception) {
System.err.println("db.executeInset:" + sqlexception.getMessage());
}
}
public void doDelete(String sql) {
try {
stm = conn.createStatement();
int i = stm.executeUpdate(sql);
} catch(SQLException sqlexception) {
System.err.println("db.executeDelete:" + sqlexception.getMessage());
}
}
public void doUpdate(String sql) {
try {
stm = conn.createStatement();
int i = stm.executeUpdate(sql);
} catch(SQLException sqlexception) {
System.err.println("db.executeUpdate:" + sqlexception.getMessage());
}
}
public ResultSet doSelect(String sql) {
try {
stm = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
} catch(SQLException sqlexception) {
System.err.println("db.executeQuery: " + sqlexception.getMessage());
}
return rs;
}
public static void main(String[] args){
try{
Db db = new Db();
Connection conn = db.getConn();
if(conn != null && !conn.isClosed()) {
System.out.println("連結成功");
ResultSet rs = db.doSelect("select * from content");
while(rs.next()){
System.out.println(rs.getString(1)+":"+rs.getString(2)+":"+rs.getString(3));
}
rs.close();
conn.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
}DBConf.properties:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@tdt151:1521:train
user=XX
password=XX
import java.sql.DriverManager;
import java.sql.SQLException;public class ConnectDB {
private static final String MYSQL = "jdbc:mysql://"; private static final String ORACLE = "jdbc:oracle:thin:@"; private ConnectDB() {
} public static Connection getInstance(String DBType, String url)
throws NoSuchDBException, SQLException {
if ("mysql".equalsIgnoreCase(DBType))
return getMySqlConn(url);
if ("oracle".equalsIgnoreCase(DBType))
return getOracleConn(url);
return null;
} public static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} private static Connection getMySqlConn(String url) throws SQLException {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection(MYSQL + url, "root", "root"); return conn;
} private static Connection getOracleConn(String url) throws SQLException {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection(ORACLE + url, "scott", "tiger"); return conn;
}
}
* 人民币转成大写
*
* @param value
* @return String
*/
public static String hangeToBig(double value)
{
char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示
char[] vunit = { '万', '亿' }; // 段名表示
char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示
long midVal = (long) (value * 100); // 转化成整形
String valStr = String.valueOf(midVal); // 转化成字符串 String head = valStr.substring(0, valStr.length() - 2); // 取整数部分
String rail = valStr.substring(valStr.length() - 2); // 取小数部分 String prefix = ""; // 整数部分转化的结果
String suffix = ""; // 小数部分转化的结果
// 处理小数点后面的数
if (rail.equals("00"))
{ // 如果小数部分为0
suffix = "整";
}
else
{
suffix = digit[rail.charAt(0) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来
}
// 处理小数点前面的数
char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组
char zero = '0'; // 标志'0'表示出现过0
byte zeroSerNum = 0; // 连续出现0的次数
for (int i = 0; i < chDig.length; i++)
{ // 循环处理每个数字
int idx = (chDig.length - i - 1) % 4; // 取段内位置
int vidx = (chDig.length - i - 1) / 4; // 取段位置
if (chDig[i] == '0')
{ // 如果当前字符是0
zeroSerNum++; // 连续0次数递增
if (zero == '0')
{ // 标志
zero = digit[0];
}
else if (idx == 0 && vidx > 0 && zeroSerNum < 4)
{
prefix += vunit[vidx - 1];
zero = '0';
}
continue;
}
zeroSerNum = 0; // 连续0次数清零
if (zero != '0')
{ // 如果标志不为0,则加上,例如万,亿什么的
prefix += zero;
zero = '0';
}
prefix += digit[chDig[i] - '0']; // 转化该数字表示
if (idx > 0)
prefix += hunit[idx - 1];
if (idx == 0 && vidx > 0)
{
prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿
}
} if (prefix.length() > 0)
prefix += '圆'; // 如果整数部分存在,则有圆的字样
return prefix + suffix; // 返回正确表示
}
public static String getURLByDBInfo(DBInfo dbInfo)
{
String url = "";
if(dbInfo.getDbType() != null)
if(dbInfo.getDbType().equals("SQLSERVER"))
url = (new StringBuilder("jdbc:microsoft:sqlserver://")).append(dbInfo.getDbHost()).append(":").append(dbInfo.getDbPort()).append(";DatabaseName=").append(dbInfo.getDbSID()).toString();
else
if(dbInfo.getDbType().equals("ORACLE"))
url = (new StringBuilder("jdbc:oracle:thin:@")).append(dbInfo.getDbHost()).append(":").append(dbInfo.getDbPort()).append(":").append(dbInfo.getDbSID()).toString();
else
if(dbInfo.getDbType().equals("ORACLE_DSP"))
url = (new StringBuilder("jdbc:dsp@")).append(dbInfo.getDbHost()).append(":").append(dbInfo.getDbPort()).append("/").append(dbInfo.getDbSID()).append("/").append(dbInfo.getNamespace()).toString();
else
if(dbInfo.getDbType().equals("SYBASE"))
url = "jdbc:sybase:Tds:...";
else
url = "sun.jdbc.odbc.JdbcOdbcDriver";
return url;
}
* 全角字符转半角字符
*
* @param QJStr
* @return String
*/
public static final String QJToBJChange(String QJStr)
{
char[] chr = QJStr.toCharArray();
String str = "";
for (int i = 0; i < chr.length; i++)
{
chr[i] = (char) ((int) chr[i] - 65248);
str += chr[i];
}
return str;
}
* 去掉字符串中重复的子字符串
*
* @param str
* @return String
*/
private static String removeSameString(String str)
{
Set<String> mLinkedSet = new LinkedHashSet<String>();
String[] strArray = str.split(" ");
StringBuffer sb = new StringBuffer(); for (int i = 0; i < strArray.length; i++)
{
if (!mLinkedSet.contains(strArray[i]))
{
mLinkedSet.add(strArray[i]);
sb.append(strArray[i] + " ");
}
}
System.out.println(mLinkedSet);
return sb.toString().substring(0, sb.toString().length() - 1);
}
/**
* 设置JSpinner的编辑属性
* @param spinner 目标JSpinner
* @param isAllowInvalid 是否允许输入非法值
* @param isEditable 是否允许编辑
*/
public static void setAllowsInvalid(JSpinner spinner, boolean isAllowInvalid, boolean isEditable)
{
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "#");
spinner.setEditor(editor);
JFormattedTextField tf = ((JSpinner.NumberEditor)spinner.getEditor()).getTextField();
tf.setEditable(isEditable);
DefaultFormatterFactory factory = (DefaultFormatterFactory)tf.getFormatterFactory();
NumberFormatter formatter = (NumberFormatter)factory.getDefaultFormatter();
formatter.setAllowsInvalid(isAllowInvalid);
}
/**
* 根据指定方法的参数去构造一个新的对象的拷贝并将他返回
* @param obj 原始对象
* @return 新对象
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SecurityException
* @throws IllegalArgumentException
*/
@SuppressWarnings("unchecked")
public static Object copy(Object obj) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException
{
//获得对象的类型
Class classType = obj.getClass(); //通过默认构造方法去创建一个新的对象,getConstructor的视其参数决定调用哪个构造方法
Object objectCopy = classType.getConstructor(new Class[]{}).newInstance(new Object[]{}); //获得对象的所有属性
Field[] fields = classType.getDeclaredFields(); for(int i = 0; i < fields.length; i++)
{
//获取数组中对应的属性
Field field = fields[i]; String fieldName = field.getName();
String stringLetter = fieldName.substring(0, 1).toUpperCase(); //获得相应属性的getXXX和setXXX方法名称
String getName = "get" + stringLetter + fieldName.substring(1);
String setName = "set" + stringLetter + fieldName.substring(1); //获取相应的方法
Method getMethod = classType.getMethod(getName, new Class[]{});
Method setMethod = classType.getMethod(setName, new Class[]{field.getType()}); //调用源对象的getXXX()方法
Object value = getMethod.invoke(obj, new Object[]{}); //调用拷贝对象的setXXX()方法
setMethod.invoke(objectCopy, new Object[]{value});
} return objectCopy;
}
* (#)ThrowableManager.java 1.0 Apr 10, 2008
*
* Copyright 2007- wargrey , Inc. All rights are reserved.
*/
package net.wargrey.application;import java.awt.Component;
import javax.swing.JOptionPane;/**
* This class <code>ExceptionManager</code> and its subclasses are a form of
* <code>Exception</code>. It is used to wrap all the <code>Throwable</code> instances
* and handle them in a unified way. It will show the information which consists of
* StackTraces and Messages by using JOptionPanel.
*
* @author Estelle
* @version 1.0
* @see java.lang.Exception
* @since jdk 1.5
*/
public class ExceptionManager extends Exception {
/**
* This field <code>alerter</code> is used to show the information the Class offered.
*
* @see javax.swing.JOptionPane
*/
private JOptionPane alerter;
/**
* This static method create an instance of the ExceptionManager by invoking the
* constructor <code>ExceptionManager(String msg)</code>.
*
* @param msg The message will pass the specified constructor
* @return An instance of the ExceptionManager created by invoking the constructor
* <code>ExceptionManager(String msg)</code>.
*/
public static ExceptionManager wrap(String msg){
return new ExceptionManager(msg);
}
/**
* This static method create an instance of the ExceptionManager by invoking the
* constructor <code>ExceptionManager(Throwable throwable)</code>.
*
* @param throwable The cause will pass the specified constructor
* @return An instance of the ExceptionManager created by invoking the constructor
* <code>ExceptionManager(Throwable throwable)</code>.
*/
public static ExceptionManager wrap(Throwable throwable){
return new ExceptionManager(throwable);
}
/**
* This static method create an instance of the ExceptionManager by invoking the
* constructor <code>ExceptionManager(String msg,Throwable throwable)</code>.
*
* @param msg The message will pass the specified constructor
* @param throwable The cause will pass the specified constructor
* @return An instance of the ExceptionManager created by invoking the constructor
* <code>ExceptionManager(String msg, Throwable throwable)</code>
*/
public static ExceptionManager wrap(String msg,Throwable throwable){
return new ExceptionManager(msg,throwable);
}
/**
* Constructs a new instance with the specified detail message. The concrete handler
* is its super class. This constructor always used to construct a custom exception
* not wrapping the exist exception.
*
* @param msg the detail message which is the part of the information will be
* shown.
*/
public ExceptionManager(String msg){
super(msg);
}
/**
* Constructs a new instance with the specified detail cause. The concrete handler
* is its super class. This constructor always used to wrap an exist exception.
*
* @param throwable the cause which has been caught. It's detail message and
* stacktrace are the parts the information will be shown.
*/
public ExceptionManager(Throwable throwable){
super(throwable);
}
/**
* Constructs a new instance with the specified detail message and cause. The
* concrete handler is its super class. This constructor always used to construct
* an exception wrapping the exist exception but requires a custom message.
*
* @param msg the detail message which is the part of the information will
* be shown.
* @param throwable the cause which has been caught. It's stacktrace is the parts
* the information will be shown.
*/
public ExceptionManager(String msg,Throwable throwable){
super(msg,throwable);
}
/**
* Show the information with everything is default.
*/
public synchronized void alert(){
alert((Component)null);
}
/**
* Show the information in a dialog with the specified title
* "ThrowableManager Alerter". The dialog belongs to the given component which
* default is the screen.
*
* @param parent The component cause the exception.
*/
public synchronized void alert(Component parent){
alert(parent,"ThrowableManager Alerter");
}
/**
* Show the information in a dialog with the specified title.
*
* @param title The title of the dialog.
*/
public synchronized void alert(String title){
alert((Component)null,title);
}
/**
* Show the information in a dialog which has the specified title and belongs to the
* specified component.
*
* @param parent The component cause the exception.
* @param title The title of the dialog.
*/
public synchronized void alert(Component parent,String title){
StringBuilder errorMessage=new StringBuilder();
errorMessage.append(this.toString());
for (StackTraceElement st:((this.getCause()==null)?this:this.getCause()).getStackTrace()){
errorMessage.append("\n\t at ");
errorMessage.append(st.toString());
}
alerter.showMessageDialog(parent, errorMessage, title ,JOptionPane.ERROR_MESSAGE);
}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;public class ToolTipCtrl
{
private static boolean flag = true;
public static void main(String[] args)
{
JFrame frame = new JFrame();
final JButton btnSH = new JButton("Show or Hide");
final JButton btnS = new JButton("Show Only");
btnSH.setToolTipText(btnSH.getText());
btnS.setToolTipText(btnS.getText());
frame.add(btnSH, BorderLayout.WEST);
frame.add(btnS, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
btnSH.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(flag)
{
postToolTip(btnSH);
}
else
{
hideToolTip(btnSH);
}
flag = !flag;
}
});
btnS.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
postToolTip(btnS);
}
});
} public static void postToolTip(JComponent comp)
{
Action action = comp.getActionMap().get("postTip");
if(action != null)
{
ActionEvent ae = new ActionEvent(comp, ActionEvent.ACTION_PERFORMED, "postTip", EventQueue.getMostRecentEventTime(), 0);
action.actionPerformed(ae);
}
} public static void hideToolTip(JComponent comp)
{
Action action = comp.getActionMap().get("hideTip");
if(action != null)
{
ActionEvent ae = new ActionEvent(comp, ActionEvent.ACTION_PERFORMED, "hideTip", EventQueue.getMostRecentEventTime(), 0);
action.actionPerformed(ae);
}
}
}
//过滤特殊字符
public static String encoding(String src){
if (src==null)
return "";
StringBuilder result=new StringBuilder();
if (src!=null){
src=src.trim();
for (int pos=0;pos<src.length();pos++){
switch(src.charAt(pos)){
case '\"':result.append(""");break;
case '<':result.append("<");break;
case '>':result.append(">");break;
case '\'':result.append("'");break;
case '&':result.append("&");break;
case '%':result.append("&pc;");break;
case '_':result.append("&ul;");break;
case '#':result.append("&shap;");break;
case '?':result.append("&ques;");break;
default:result.append(src.charAt(pos));break;
}
}
}
return result.toString();
}
//反过滤特殊字符
public static String decoding(String src){
if (src==null)
return "";
String result=src;
result=result.replace(""", "\"").replace("'", "\'");
result=result.replace("<", "<").replace(">", ">");
result=result.replace("&", "&");
result=result.replace("&pc;", "%").replace("&ul", "_");
result=result.replace("&shap;", "#").replace("&ques", "?");
return result;
}//利用反射调用一个继承层次上的函数族,比如安装程序,有安装数据库的,安装文件系统的等,命名均已“install”开始,你就可以将参数part设为“install”,src是其实类实例,root是终止父类
public static <T> void invokeMethods(String part,T src,Class root) throws ExceptionManager{
if (root!=null){
if (!root.isInstance(src))return;
root=(Class)root.getGenericSuperclass();
}
HashMap<String,Method> invokees=new HashMap<String,Method>();
Class target=src.getClass();
do{
Method [] methods=target.getDeclaredMethods();
for (Method method:methods){
String mn=method.getName();
Boolean isPass=mn.startsWith(part);
if (isPass){
Integer nopt=method.getParameterTypes().length;
Boolean isStatic=Modifier.isStatic(method.getModifiers());
if ((nopt==0)&&(!isStatic)){
if (!invokees.containsKey(mn))
invokees.put(mn, method);
}
}
}
target=(Class)target.getGenericSuperclass();
}while(target!=root);
Iterator<String> methods=invokees.keySet().iterator();
while (methods.hasNext()){
Method invokee=invokees.get(methods.next());
Boolean access=invokee.isAccessible();
invokee.setAccessible(true);
try {
invokee.invoke(src);
} catch (InvocationTargetException e) {
throw ExceptionManager.wrap(e.getTargetException());
}catch (Exception e){}
invokee.setAccessible(access);
}
}
String Driver="com.mysql.jdbc.Driver"; //驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).new Instance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Microsoft SQL Server 2.0驱动(3个jar的那个):
String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接SQL数据库的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).new Instance(); //加载数据可驱动
Connection con=DriverManager.getConnection(URL,UserName,Password); //
Microsoft SQL Server 3.0驱动(1个jar的那个): // 老紫竹完善
String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //连接SQL数据库的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).new Instance(); //加载数据可驱动
Connection con=DriverManager.getConnection(URL,UserName,Password); //
Sysbase:
String Driver="com.sybase.jdbc.SybDriver"; //驱动程序
String URL="jdbc:Sysbase://localhost:5007/db_name"; //db_name为数据可名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Oracle(用thin模式):
String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法
String URL="jdbc:oracle:thin:@loaclhost:1521:orcl"; //orcl为数据库的SID
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance(); //加载数据库驱动
Connection con=DriverManager.getConnection(URL,Username,Password);
PostgreSQL:
String Driver="org.postgresql.Driver"; //连接数据库的方法
String URL="jdbc:postgresql://localhost/db_name"; //db_name为数据可名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
DB2:
String Driver="com.ibm.db2.jdbc.app.DB2.Driver"; //连接具有DB2客户端的Provider实例
//String Driver="com.ibm.db2.jdbc.net.DB2.Driver"; //连接不具有DB2客户端的Provider实例
String URL="jdbc:db2://localhost:5000/db_name"; //db_name为数据可名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
Informix:
String Driver="com.informix.jdbc.IfxDriver";
String URL="jdbc:Informix-sqli://localhost:1533/db_name:INFORMIXSER=myserver"; //db_name为数据可名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
JDBC-ODBC:
String Driver="sun.jdbc.odbc.JdbcOdbcDriver";
String URL="jdbc:odbc:dbsource"; //dbsource为数据源名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
方法的天下~~~~~~~~~~~~~~~~~~~~~~~~
我现在改不了标题了,java里应该是方法
支持一下搂主,写几个控制小数点的几个常用方法:import java.text.DecimalFormat;public class NumberUtil {
public static double decimalFormatD(int num, double d){
String format = "0.";
String result = "";
double db;
for(int i=0;i<num;i++)
format = format.concat("0");
DecimalFormat decimal = new DecimalFormat(format);
result = decimal.format(d);
db = Double.parseDouble(result);
return db;
}
public static float decimalFormatF(int num, float f){
String format = "0.";
String result = "";
float fl;
for(int i=0;i<num;i++)
format = format.concat("0");
DecimalFormat decimal = new DecimalFormat(format);
result = decimal.format(f);
fl = Float.parseFloat(result);
return fl;
}
public static String doubleToString(double f){
String s = "";
double a = 0;
while(f >= 1) {
a = f%((double)10);
s = String.valueOf((int)a) + s;
f=(f - a)/10;
}
return s;
}
}
*一个for循环打印九九乘法表
*/
public void nineNineMultiTable()
{
for (int i = 1,j = 1; j <= 9; i++) {
System.out.print(i+"*"+j+"="+i*j+" ");
if(i==j)
{
i=0;
j++;
System.out.println();
}
}
}
jdbc连接sql server package util;import java.sql.*;public class JdbcUtil
{
public static void close(Statement st, Connection con)
{
try
{
st.close();
}catch(Exception e)
{
}
try
{
con.close();
}catch(Exception e)
{
}
}
public static void close(ResultSet rs, Statement st, Connection con)
{
try
{
rs.close();
}catch(Exception e)
{
}
close(st, con);
}
public static Connection getConnection() throws Exception
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
return DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db", "sa", "54321"); }
}
Class.forName("com.jdbc.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:数据库名称?user='root'&password='root'");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from table1");
while(rs.next) {
}
刚学会杂连
package com.liu;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.StringTokenizer;public class TxtToXml {
private String strTxtFileName; private String strXmlFileName; public TxtToXml() {
strTxtFileName = new String();
strXmlFileName = new String();
} public void createXml(String strTxt, String strXml) {
strTxtFileName = strTxt;
strXmlFileName = strXml;
String strTmp;
try {
BufferedReader inTxt = new BufferedReader(new FileReader(
strTxtFileName));
BufferedWriter outXml = new BufferedWriter(new FileWriter(
strXmlFileName));
outXml.write("<?xml version= \"1.0\" encoding=\"gb2312\"?>");
outXml.newLine();
outXml.write("<people>");
while ((strTmp = inTxt.readLine()) != null) {
StringTokenizer strToken = new StringTokenizer(strTmp, ",");
String arrTmp[];
arrTmp = new String[3];
for (int i = 0; i < 3; i++)
arrTmp[i] = new String("");
int index = 0;
outXml.newLine();
outXml.write(" <students>");
while (strToken.hasMoreElements()) {
strTmp = (String) strToken.nextElement();
strTmp = strTmp.trim();
arrTmp[index++] = strTmp;
}
outXml.newLine();
outXml.write(" <name>" + arrTmp[0] + "</name>");
outXml.newLine();
outXml.write(" <sex>" + arrTmp[1] + "</sex>");
outXml.newLine();
outXml.write(" <age>" + arrTmp[2] + "</age>");
outXml.newLine();
outXml.write(" </students>");
}
outXml.newLine();
outXml.write("</people>");
outXml.flush();
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
String txtName = "testtxt.txt";
String xmlName = "testxml.xml";
TxtToXml thisClass = new TxtToXml();
thisClass.createXml(txtName, xmlName);
}
}
/**
* 写入日志
* filePath 日志文件的路径
* code 要写入日志文件的内容
*/
public static boolean print(String filePath,String code) {
try {
File tofile=new File(filePath);
FileWriter fw=new FileWriter(tofile,true);
BufferedWriter bw=new BufferedWriter(fw);
PrintWriter pw=new PrintWriter(bw);
System.out.println(getDate()+":"+code);
pw.println(getDate()+":"+code);
pw.close();
bw.close();
fw.close();
return true;
} catch (IOException e) {
return false;
}
}
/**
* 判断是不是合法手机
* handset 手机号码
*/
public static boolean isHandset(String handset) {
try {
if(!handset.substring(0,1).equals("1")) {
return false;
}
if (handset==null || handset.length()!=11) {
return false;
}
String check = "^[0123456789]+$";
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(handset);
boolean isMatched = matcher.matches();
if(isMatched) {
return true;
} else {
return false;
}
} catch (RuntimeException e) {
return false;
}
}
}
字符串匹配的算法.
public String getMaxMatch(String a,String b) {
StringBuffer tmp = new StringBuffer();
String maxString = "";
int max = 0;
int len = 0;
char[] aArray = a.toCharArray();
char[] bArray = b.toCharArray();
int posA = 0;
int posB = 0;
while(posA<aArray.length-max) {
posB = 0;
while(posB<(bArray.length-max)) {
if(aArray[posA]==bArray[posB]) {
len = 1;
tmp = new StringBuffer();
tmp.append(aArray[posA]);
while((posA+len<aArray.length)&&(posB+len<bArray.length)&&(aArray[posA+len]==bArray[posB+len])) {
tmp.append(aArray[posA+len]);
len++;
}
if(len>max) {
max = len;
maxString = tmp.toString();
}
}
posB++;
}
posA++;
}
return maxString;
}
Time t1 = new Time(1, 11, 32, 18);
Time t2 = new Time(16, 58, 18);
System.out.println(" t1: " + t1);
System.out.println(" t2: " + t2);
System.out.println("t1-t2: " + t1.subtractTime(t2));
System.out.println("t1+t2: " + t1.addTime(t2));
Time t3 = new Time("13:22:44");
System.out.println(" t3: " + t3);
Time t4 = new Time("16-58-18", "-");
System.out.println(" t4: " + t4);
System.out.println("t2==t4? " + t2.equals(t4));
}
}import java.text.DecimalFormat;
import java.util.Arrays;/**
* 时间计算工具类
*/
public class Time { /**
* 时间字段常量,表示“秒”
*/
public final static int SECOND = 0;
/**
* 时间字段常量,表示“分”
*/
public final static int MINUTE = 1;
/**
* 时间字段常量,表示“时”
*/
public final static int HOUR = 2;
/**
* 时间字段常量,表示“天”
*/
public final static int DAY = 3; /**
* 各常量允许的最大值
*/
private final int[] maxFields = { 59, 59, 23, Integer.MAX_VALUE - 1 };
/**
* 各常量允许的最小值
*/
private final int[] minFields = { 0, 0, 0, Integer.MIN_VALUE };
/**
* 默认的字符串格式时间分隔符
*/
private String timeSeparator = ":";
/**
* 时间数据容器
*/
private int[] fields = new int[4];
/**
* 无参构造,将各字段置为 0
*/
public Time() {
this(0, 0, 0, 0);
} /**
* 使用时、分构造一个时间
* @param hour 小时
* @param minute 分钟
*/
public Time(int hour, int minute) {
this(0, hour, minute, 0);
} /**
* 使用时、分、秒构造一个时间
* @param hour 小时
* @param minute 分钟
* @param second 秒
*/
public Time(int hour, int minute, int second) {
this(0, hour, minute, second);
}
/**
* 使用一个字符串构造时间<br/>
* Time time = new Time("14:22:23");
* @param time 字符串格式的时间,默认采用“:”作为分隔符
*/
public Time(String time) {
this(time, null);
} /**
* 使用天、时、分、秒构造时间,进行全字符的构造
* @param day 天
* @param hour 时
* @param minute 分
* @param second 秒
*/
public Time(int day, int hour, int minute, int second) {
set(DAY, day);
set(HOUR, hour);
set(MINUTE, minute);
set(SECOND, second);
}
/**
* 使用一个字符串构造时间,指定分隔符<br/>
* Time time = new Time("14-22-23", "-");
* @param time 字符串格式的时间
*/
public Time(String time, String timeSeparator) {
if(timeSeparator != null) {
setTimeSeparator(timeSeparator);
}
String pattern = patternQuote(this.timeSeparator);
String matcher = new StringBuffer()
.append("\\d+?").append(pattern)
.append("\\d+?").append(pattern)
.append("\\d+?")
.toString();
if(!time.matches(matcher)) {
throw new IllegalArgumentException(time + ", time format error, HH"
+ this.timeSeparator + "mm" + this.timeSeparator + "ss");
}
String[] times = time.split(pattern);
set(DAY, 0);
set(HOUR, Integer.parseInt(times[0]));
set(MINUTE, Integer.parseInt(times[1]));
set(SECOND, Integer.parseInt(times[2]));
}
/**
* 设置时间字段的值
* @param field 时间字段常量
* @param value 时间字段的值
*/
public void set(int field, int value) {
if(value < minFields[field]) {
throw new IllegalArgumentException(value +
", time value must be positive.");
}
fields[field] = value % (maxFields[field] + 1);
// 进行进位计算
int carry = value / (maxFields[field] + 1);
if(carry > 0) {
int upFieldValue = get(field + 1);
set(field + 1, upFieldValue + carry);
}
} /**
* 获得时间字段的值
* @param field 时间字段常量
* @return 该时间字段的值
*/
public int get(int field) {
if(field < 0 || field > fields.length - 1) {
throw new IllegalArgumentException(field + ", field value is error.");
}
return fields[field];
} /**
* 将时间进行“加”运算,即加上一个时间
* @param time 需要加的时间
* @return 运算后的时间
*/
public Time addTime(Time time) {
Time result = new Time();
int up = 0; // 进位标志
for (int i = 0; i < fields.length; i++) {
int sum = fields[i] + time.fields[i] + up;
up = sum / (maxFields[i] + 1);
result.fields[i] = sum % (maxFields[i] + 1);
}
return result;
} /**
* 将时间进行“减”运算,即减去一个时间
* @param time 需要减的时间
* @return 运算后的时间
*/
public Time subtractTime(Time time) {
Time result = new Time();
int down = 0; // 退位标志
for (int i = 0, k = fields.length - 1; i < k; i++) {
int difference = fields[i] + down;
if (difference >= time.fields[i]) {
difference -= time.fields[i];
down = 0;
} else {
difference += maxFields[i] + 1 - time.fields[i];
down = -1;
}
result.fields[i] = difference;
}
result.fields[DAY] = fields[DAY] - time.fields[DAY] + down;
return result;
}
/**
* 获得时间字段的分隔符
* @return
*/
public String getTimeSeparator() {
return timeSeparator;
} /**
* 设置时间字段的分隔符(用于字符串格式的时间)
* @param timeSeparator 分隔符字符串
*/
public void setTimeSeparator(String timeSeparator) {
this.timeSeparator = timeSeparator;
} /**
* 正则表达式引用处理方法,源自 JDK @link java.util.regex.Pattern#quote(String)
*/
private String patternQuote(String s) {
int slashEIndex = s.indexOf("\\E");
if (slashEIndex == -1)
return "\\Q" + s + "\\E"; StringBuilder sb = new StringBuilder(s.length() * 2);
sb.append("\\Q");
slashEIndex = 0;
int current = 0;
while ((slashEIndex = s.indexOf("\\E", current)) != -1) {
sb.append(s.substring(current, slashEIndex));
current = slashEIndex + 2;
sb.append("\\E\\\\E\\Q");
}
sb.append(s.substring(current, s.length()));
sb.append("\\E");
return sb.toString();
} public String toString() {
DecimalFormat df = new DecimalFormat("00");
return new StringBuffer().append(fields[DAY]).append(", ")
.append(df.format(fields[HOUR])).append(timeSeparator)
.append(df.format(fields[MINUTE])).append(timeSeparator)
.append(df.format(fields[SECOND]))
.toString();
} public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + Arrays.hashCode(fields);
return result;
} public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Time other = (Time) obj;
if (!Arrays.equals(fields, other.fields)) {
return false;
}
return true;
}
}
System.out.println("9787302155638 " + ISBN.checkISBN("9787302155638"));
System.out.println("7564105607 " + ISBN.checkISBN("7564105607"));
System.out.println("730213880X " + ISBN.checkISBN("730213880X"));
System.out.println("7302138800 " + ISBN.checkISBN("7302138800"));
System.out.println("9790000000000 " + ISBN.checkISBN("9790000000000"));
try {
System.out.println(ISBN.checkISBN("9770000000000"));
}catch(Exception e) {
System.out.println("9770000000000 " + e.getMessage());
}
try {
System.out.println(ISBN.checkISBN("123456545"));
}catch(Exception e) {
System.out.println("123456545 " + e.getMessage());
}
}
}public final class ISBN { /**
* 根据输入的ISBN号,检验ISBN的有效性。依据 GB/T 5795-2006 和 ISO 2108:2005 ISBN
* 10位标准和13位标准实现(13位标准自2007年1月1日开始实行,在此之前采用10位标准)。
*
* @param String isbn:需要进行校验的ISBN字符串
* @return true:所输入的ISBN校验正确;<br/> false:所输入的ISBN校验错误
*/
public static boolean checkISBN(String isbn) { int count = 0;
int checkBitInt = 0; // 将ISBN数据全取大写字母
//isbn = isbn.toUpperCase();
char[] cs = isbn.toCharArray();
switch (isbn.length()) {
case 10:
// ****************************************************************
// 当ISBN为10位时,进行的校验,用于2007年1月1日前的出版物
// 数据格式:从左至右前9位为ISBN数据,第10位为校验位
// 校验方法:
// (1) 从左至右将前9位数据从10开始至2进行编号,作为位权
// (2) 将9位数据与各位位权进行加权,并求其9位和(称为加权和,记作M)
// (3) 第10位校验位计算方法,校验位为C:
// M + C ≡ 0 (mod 11)
// C为10时,记作“X”
// **************************************************************** // 取出前9位数字进行加权和计算
for (int i = 0; i < 9; i++) {
// 若前9位数据中有非数字字符,则抛出异常
if (cs[i] < '0' || cs[i] > '9') {
throw new ISBNFormatException("ISBN " + isbn +
" 第 " + (i + 1) + " 位中出现非法字符 " + cs[i]);
}
int c = cs[i] - '0';
// 求加权和
count += c * (10 - i);
} // 取出校验位数据0~9和X符合校验字符要求
if (cs[9] >= '0' && cs[9] <= '9') {
checkBitInt = cs[9] - '0';
} else if (cs[9] == 'X' || cs[9] == 'x') {
// 校验位中的“X”表示数据“10”
checkBitInt = 10;
} else {
// 非0~9或X时抛出异常
throw new ISBNFormatException("ISBN " + isbn +
" 第 10 位中出现非法字符 " + cs[9]);
} // 进行校验
if ((count + checkBitInt) % 11 == 0) {
return true; // 校验成功
} else {
return false; // 校验失败
}
case 13:
// ****************************************************************
// 当ISBN为13位时,进行的校验,用于2007年1月1日后的出版物
// 数据格式:从左至右前12位为ISBN数据,第13位为校验位
// 校验方法:
// (1) 从左至右将前12位数的取其奇位数和和偶位数和
// (2) 将偶位数和乘3,并其与奇位数和的和,得加权和
// (3) 第13位校验位计算方法,校验位为C:
// M + C ≡ 0 (mod 10)
// **************************************************************** // ISBN为13位数据时,前3位目前只能是“978”(已实行)或“979”(暂未实行)
if (!isbn.startsWith("978") && !isbn.startsWith("979")) {
throw new ISBNFormatException("ISBN-13 格式不符合标准");
}
// 取出前12位数字进行加权和计算
int countEven = 0;
int countOdd = 0;
for (int i = 0; i < 12; i++) {
int c = cs[i] - '0';
// 若前12位数据中有非数字字符,则抛出异常
if (c < 0 || c > 9) {
throw new ISBNFormatException("ISBN " + isbn +
" 第 " + (i + 1) + " 位中出现非法字符 " + cs[i]);
}
// 分别计算奇位数和偶位数的和
if ((i & 0x1) == 0) {
countOdd += c;
} else {
countEven += c;
}
}
// 求加权和
count = countOdd + (countEven * 3); // 取出校验位数据
if (cs[12] < '0' || cs[12] > '9') {
// 校验位为非0~9字符时,抛出异常
throw new ISBNFormatException("ISBN " + isbn
+ " 第 13 位中出现非法字符 " + cs[12]);
} checkBitInt = cs[12] - '0';
// 进行校验
if ((count + checkBitInt) % 10 == 0) {
return true; // 校验成功
} else {
return false; // 校验失败
}
default:
// ISBN为非10位或13位时抛出异常
throw new ISBNFormatException("ISBN 格式不符合标准");
}
}
}public class ISBNFormatException extends RuntimeException { private static final long serialVersionUID = 1L; public ISBNFormatException() {
super("ISBN Error ...");
} public ISBNFormatException(String arg0) {
super(arg0);
}
}
xxx.tostring
sum
max
min ..................
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;/**
* JSON utility class
*
* @since 2008-04-21
*/
public class Json { // test
public static void main(String[] args) {
Json json1 = new Json();
json1.add("totalCount", 2);
json1.add("isTest", true);
Json json_a = new Json();
json_a.add("menuid", 1);
json_a.add("menuname", "testmenu");
json1.add("topics", json_a);
Json json_b = new Json();
json_b.add("menuid", 2);
json_b.add("menuname", "testmenu");
json1.add("topics", json_b);
System.out.println(json1.toString());
} private Map map = new LinkedHashMap(); /**
* 添加一个 JSON 属性,值为一个字符串,重复添加时产生数组<p/>
*
* add("name", "value");<br/>
* 添加一个字符串,产生的 JSON 如:{"name":"value"}<p/>
*
* add("name", "value1");<br/>
* add("name", "value2");<br/>
* 添加两个同属性的字符串,产生的 JSON 如:{"name":["value1", "value2"]}<p/>
*
* @param key JSON 属性名
* @param str 字符串格式的属性值
*/
public void add(String key, String value) {
addElement(key, value);
}
public void add(String key, int num) {
addElement(key, new Integer(num));
}
public void add(String key, boolean b) {
addElement(key, new Boolean(b));
} /**
* 添加一个 JSON 属性,值为一个 JSON,重复添加时产生 JSON 数组<p/>
*
* Json json1 = new Json();<br/>
* json1.add("name1", "value1");<br/>
* json1.add("name2", "value2");<br/>
* Json json = new Json();<br/>
* json.add("message", json1);<br/>
* 添加一个 JSON,产生的 JSON 如:{"message":{"name1":"value1", "name2":"value2"}}<p/>
*
* Json json1 = new Json();<br/>
* json1.add("name1", "value1");<br/>
* json1.add("name2", "value2");<br/>
* Json json2 = new Json();<br/>
* json2.add("name1", "value3");<br/>
* json2.add("name2", "value4");<br/>
* Json json = new Json();<br/>
* json.add("message", json1);<br/>
* json.add("message", json2);<br/>
* 添加两个同属性的 JSON,产生的 JSON 如:{"message":[{"name1":"value1", "name2":"value2"}, {"name1":"value3", "name2":"value4"}]}<p/>
*
* @param key JSON 属性名
* @param json JSON 格式的属性值
*/
public void add(String key, Json json) {
addElement(key, json);
} public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
int k = 0;
for (Iterator i = map.keySet().iterator(); i.hasNext();) {
String key = (String)(i.next());
Object obj = map.get(key);
if (k > 0) {
sb.append(",");
}
appendKey(sb, key);
if (obj instanceof String) {
appendString(sb, (String)obj);
} else if (obj instanceof List) {
appendList(sb, (List)obj);
} else if (obj instanceof Json) {
appendJson(sb, (Json)obj);
} else {
appendOther(sb, obj);
}
k++;
}
sb.append("}");
return sb.toString();
} private void addElement(String key, Object obj) {
if (!map.containsKey(key)) {
if(obj instanceof Json) {
List list = new ArrayList();
list.add(obj);
map.put(key, list);
} else {
map.put(key, obj);
}
return;
} Object o = map.remove(key); if (o instanceof List) {
((List)o).add(obj);
map.put(key, o);
return;
} // o is a String
List list = new ArrayList();
list.add(o);
list.add(obj);
map.put(key, list);
} /**
* Append JSON property name
*
* @param sb
* @param key
*/
private void appendKey(StringBuilder sb, String key) {
sb.append("\"").append(key).append("\":");
} /**
* Append JSON property value that is a String
*
* @param sb
* @param str
*/
private void appendString(StringBuilder sb, String str) {
sb.append("\"").append(str).append("\"");
}
/**
* Append JSON property value that is a Integer
*
* @param sb
* @param num
*/
private void appendOther(StringBuilder sb, Object obj) {
sb.append(obj);
} /**
* Append JSON property value that is a List
*
* @param sb
* @param list
*/
private void appendList(StringBuilder sb, List list) {
sb.append("[");
for (int j = 0, m = list.size(); j < m; j++) {
if (j > 0) {
sb.append(",");
}
Object obj = list.get(j);
if (obj instanceof String) {
appendString(sb, (String)obj);
} else if (obj instanceof Json) {
appendJson(sb, (Json)obj);
} else {
appendOther(sb, obj);
}
}
sb.append("]");
} /**
* Append JSON property value that is a JSON
*
* @param sb
* @param json
*/
private void appendJson(StringBuilder sb, Json json) {
sb.append(json.toString());
}
}
推荐本书
apress - pro jakarta commons
/**
* 从指定的字符串中提取Email
* content 指定的字符串
*/
public static String parse(String content) {
String email = null;
if (content==null || content.length()<1) {
return email;
}
//找出含有@
int beginPos;
int i;
String token = "@";
String preHalf="";
String sufHalf = "";
beginPos = content.indexOf(token);
if (beginPos>-1) {
//前项扫描
String s = null;
i= beginPos;
while(i>0) {
s = content.substring(i-1,i);
if (isLetter(s))
preHalf = s+preHalf;
else
break;
i--;
}
//后项扫描
i= beginPos+1;
while( i<content.length()) {
s = content.substring(i,i+1);
if (isLetter(s))
sufHalf = sufHalf +s;
else
break;
i++;
}
//判断合法性
email = preHalf + "@" + sufHalf;
if (isEmail(email)) {
return email;
}
}
return null;
}
/**
* 判断是不是合法Email
* email Email地址
*/
public static boolean isEmail(String email) {
try {
if (email==null || email.length()<1 || email.length()>256) {
return false;
}
String check = "^([0-9a-zA-Z]+[_.0-9a-zA-Z-]+)@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2,3})$";
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(email);
boolean isMatched = matcher.matches();
if(isMatched) {
return true;
} else {
return false;
}
} catch (RuntimeException e) {
return false;
}
}
/**
* 判断是不是合法字符
* c 要判断的字符
*/
public static boolean isLetter(String c) {
boolean result = false;
if (c==null || c.length()<0) {
return false;
}
//a-z
if (c.compareToIgnoreCase("a")>=0 && c.compareToIgnoreCase("z")<=0) {
return true;
}
//0-9
if (c.compareToIgnoreCase("0")>=0 && c.compareToIgnoreCase("9")<=0) {
return true;
}
//. - _
if (c.equals(".") || c.equals("-") || c.equals("_") ) {
return true;
}
return result;
}
* 列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤
*
* @param path
*/
public static void list(File path)
{
if (!path.exists())
{
System.out.println("文件名称不存在!");
}
else
{
if (path.isFile())
{
if (path.getName().toLowerCase().endsWith(".pdf")
|| path.getName().toLowerCase().endsWith(".doc")
|| path.getName().toLowerCase().endsWith(".html")
|| path.getName().toLowerCase().endsWith(".htm"))
{
System.out.println(path);
System.out.println(path.getName());
}
}
else
{
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++)
{
list(files[i]);
}
}
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;public class DateUtil
{ /**
* 格式化日期
*
* @param dateStr
* 字符型日期
* @param format
* 格式
* @return 返回日期
*/
public static java.util.Date parseDate(String dateStr, String format)
{
java.util.Date date = null;
try
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
String dt = dateStr.replaceAll("-", "/");
if ((!dt.equals("")) && (dt.length() < format.length()))
{
dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]", "0");
}
date = (java.util.Date) df.parse(dt);
}
catch (Exception e)
{
}
return date;
} /**
* @param dateStr
* @return Date
*/
public static java.util.Date parseDate(String dateStr)
{
return parseDate(dateStr, "yyyy/MM/dd");
} /**
* 格式化输出日期
*
* @param date
* 日期
* @param format
* 格式
* @return 返回字符型日期
*/
public static String format(java.util.Date date, String format)
{
String result = "";
try
{
if (date != null)
{
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
result = df.format(date);
}
}
catch (Exception e)
{
}
return result;
} public static String format(java.util.Date date)
{
return format(date, "yyyy/MM/dd");
} /**
* 返回年份
*
* @param date
* 日期
* @return 返回年份
*/
public static int getYear(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.YEAR);
} /**
* 返回月份
*
* @param date
* 日期
* @return 返回月份
*/
public static int getMonth(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.MONTH) + 1;
} /**
* 返回日份
*
* @param date
* 日期
* @return 返回日份
*/
public static int getDay(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.DAY_OF_MONTH);
} /**
* 返回小时
*
* @param date
* 日期
* @return 返回小时
*/
public static int getHour(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.HOUR_OF_DAY);
} /**
* 返回分钟
*
* @param date
* 日期
* @return 返回分钟
*/
public static int getMinute(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.MINUTE);
} /**
* 返回秒钟
*
* @param date
* 日期
* @return 返回秒钟
*/
public static int getSecond(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.get(java.util.Calendar.SECOND);
} /**
* 返回毫秒
*
* @param date
* 日期
* @return 返回毫秒
*/
public static long getMillis(java.util.Date date)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
} /**
* 返回字符型日期
*
* @param date
* 日期
* @return 返回字符型日期
*/
public static String getDate(java.util.Date date)
{
return format(date, "yyyy/MM/dd");
} /**
* 返回字符型时间
*
* @param date
* 日期
* @return 返回字符型时间
*/
public static String getTime(java.util.Date date)
{
return format(date, "HH:mm:ss");
} /**
* 返回字符型日期时间
*
* @param date
* 日期
* @return 返回字符型日期时间
*/
public static String getDateTime(java.util.Date date)
{
return format(date, "yyyy/MM/dd HH:mm:ss");
} /**
* 日期相加
*
* @param date
* 日期
* @param day
* 天数
* @return 返回相加后的日期
*/
public static java.util.Date addDate(java.util.Date date, int day)
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
return c.getTime();
} /**
* 日期相减
*
* @param date
* 日期
* @param date1
* 日期
* @return 返回相减后的日期
*/
public static int diffDate(java.util.Date date, java.util.Date date1)
{
return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
} /**
* 取得指定月份的第一天
*
* @param strdate
* String
* @return String
*/
public static String getMonthBegin(String strdate)
{
java.util.Date date = parseDate(strdate);
return format(date, "yyyy-MM") + "-01";
} /**
* 取得指定月份的最后一天
*
* @param strdate
* String
* @return String
*/
public static String getMonthEnd(String strdate)
{
java.util.Date date = parseDate(getMonthBegin(strdate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return formatDate(calendar.getTime());
} /**
* 常用的格式化日期
*
* @param date
* Date
* @return String
*/
public static String formatDate(java.util.Date date)
{
return formatDateByFormat(date, "yyyy-MM-dd");
} /**
* 以指定的格式来格式化日期
*
* @param date
* Date
* @param format
* String
* @return String
*/
public static String formatDateByFormat(java.util.Date date, String format)
{
String result = "";
if (date != null)
{
try
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
result = sdf.format(date);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return result;
}}
要求排序 为 {'A','a','F','f','j','K','z'} 发个个人认为比较好的方案
import java.util.Arrays;
import java.util.Comparator;public class SortTest
{
public static void main(String args[])
{
char[] chs = {'f', 'F', 'K', 'A', 'a', 'j', 'z'};
chs = sortChars(chs, false);
for(char c: chs)
{
System.out.println(c);
}
} /**
* 对给定的字符数组进行字典排序
* @param chs 目标字符数组
* @param upperFisrt 大写字母是否在前
* @return 排序后的字符数组
*/
public static char[] sortChars(char[] chs, final boolean upperFisrt)
{
Character[] srcArray = new Character[chs.length];
char[] retArray = new char[chs.length];
int index = 0;
for(char ch: chs)
{
srcArray[index++] = ch;
}
Arrays.sort(srcArray, new Comparator<Character>()
{
public int compare(Character c1, Character c2)
{
char ch1 = Character.toUpperCase(c1);
char ch2 = Character.toUpperCase(c2); if(ch1 == ch2)
{
int tempRet = c1.charValue() - c2.charValue();
return upperFisrt? tempRet: -tempRet;
}
else
{
return ch1 - ch2;
}
}
});
index = 0;
for(char ch: srcArray)
{
retArray[index++] = ch;
}
return retArray;
}
}
/*socket是网络应用程序的核心,在服务器端或客户端网络应用程序中,socket皆为不可缺少的要素
*在服务器常见的应用有:FTP服务器,MAIL服务器(SMTP,POP3,IMAP4协议),WEB(HTTP协议)
*建立服务器端SOCKET的应用程序步骤如下:
*1。建立服务器端的SOCKET,并且以此侦听客户端的连接请求
*2。当服务器端侦测到来自客户端的连接请求时则接收此请求并建立客户端的SOCKET,该SOCEKT将作为
* 客户端连接及后续处理发送及接收数据的依据,至此则完成服务器端与客户端的SOCKET通信链接
*3。处理来自客户端的信息,一般称为请求,可视为客户端的指令需求。例如HTTP通信协议的URL请求,
* 或FTP通信协议的FTP命令(如GET,PUT)等
*4。根据客户端传来的请求服务器端需经过程序逻辑处理之后,发送回相对应的招待结果或错误信息至
* 客户端如HTTP服务器须发送回HTML网页内容,而FTP服务器则发送回FTP指令的结果
*5。当程序完成数据或命令的处理之后,便关闭SOCKET通信链接
*/
/*
simpleServer.java
*/import java.net.*;
import java.io.*;public class simpleServer
{
private static ServerSocket serverSocket;
private static listenClient listen; public static void main(String[] args) throws Exception
{
int port; if(args.length==0)
{
System.out.println("Usage:java simpleServer [port]");
System.exit(1);
}
port=Integer.parseInt(args[0]);
startServer(port);
} public static void startServer(int port)throws Exception
{
try
{
serverSocket=new ServerSocket(port);
Thread thread=new Thread(new listenClient(serverSocket));
thread.start();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}class listenClient implements Runnable
{
private ServerSocket serverSocket;
private Socket clientSocket; DataInputStream in;
DataOutputStream out; public listenClient(ServerSocket serverSocket)throws Exception
{
this.serverSocket=serverSocket;
} public void run()
{
try
{
while(true)
{
clientSocket=serverSocket.accept();
System.out.println("Connection from "+clientSocket.getInetAddress().getHostAddress());
in=new DataInputStream(clientSocket.getInputStream());
out=new DataOutputStream(clientSocket.getOutputStream()); String lineSep=System.getProperty("line.separator");//行分隔符,即回车换行 InetAddress addr=serverSocket.getInetAddress().getLocalHost(); String outData="Server Information: "+lineSep+" Local Host: "+serverSocket.getInetAddress().getLocalHost()+lineSep+" port :"+serverSocket.getLocalPort();
byte[] outByte=outData.getBytes();
out.write(outByte,0,outByte.length);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
};
*1。服务器端SOCKET应用程序主要用于侦听及接收客户端的连接,而客户端的SOCKET
* 应用程序则用于尝试与服务器端建立连接
*2。客户端SOCKET应用程序发送信息指令至服务器端,并接收服务器端所返回的结果;
* 而服务器端SOCEKT应用程序则处理指令逻辑,并将结果或错误信息发送至客户端
*
*常见的客户端应用有:CHAT客户端,FTP客户端,POP3客户端,SMTP客户端和TELNET客户端
*建立客户端SOCKET应用程序的步骤大致如下:
*1。建立客户端SOCKET,在建立时需指定欲连接服务器端的主机名称(或IP)与INTERNET
* 通信端口
*2。发送特定信息或指令至服务器端
*3。接收服务器端返回的执行结果或错误信息,并以特定格式显示,例如HTTP通信协议会通过
* HTML显示
*4。当客户端不需服务器端的处理时,便关闭SOCEKT通信链接
*//*
simpleClient.java
*/
import java.net.*;
import java.io.*;
public class simpleClient
{
private static Socket socket;
public static void main(String[] args)throws Exception
{
String host;
int port;
if(args.length<2)
{
System.out.println("Usage:java simpleClient [remote IP/Host] [port]");
System.exit(1);
}
host=args[0];
port=Integer.parseInt(args[1]);
connectServer(host,port);
}
public static void connectServer(String host,int port)
{
try
{
socket=new Socket(InetAddress.getByName(host),port);
DataInputStream in=new DataInputStream(socket.getInputStream());
DataOutputStream out=new DataOutputStream(socket.getOutputStream()); byte[] inByte=new byte[1024];
in.read(inByte);
String response=new String(inByte,0,inByte.length);
System.out.println("Message from server: ");
System.out.println(response.trim());
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
* 写入日志
* filePath 日志文件的路径
* code 要写入日志文件的内容
*/
public static boolean print(String filePath,String code) {
try {
File tofile=new File(filePath);
FileWriter fw=new FileWriter(tofile,true);
BufferedWriter bw=new BufferedWriter(fw);
PrintWriter pw=new PrintWriter(bw);
System.out.println(getDate()+":"+code);
pw.println(getDate()+":"+code);
pw.close();
bw.close();
fw.close();
return true;
} catch (IOException e) {
return false;
}
}
java里也能这样?
* 拷贝一个目录或者文件到指定路径下
*
* @param source
* @param target
*/
public static void copy(File source, File target)
{
File tarpath = new File(target, source.getName());
if (source.isDirectory())
{
tarpath.mkdir();
File[] dir = source.listFiles();
for (int i = 0; i < dir.length; i++)
{
copy(dir[i], tarpath);
}
}
else
{
try
{
InputStream is = new FileInputStream(source);
OutputStream os = new FileOutputStream(tarpath);
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1)
{
os.write(buf, 0, len);
}
is.close();
os.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
import java.util.*;public class csdntest3{
@SuppressWarnings("unchecked")
public static void main(String[] args){
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <=5; i++){
list.add(i);
}
Collections.sort(list, new Comparatorsort());
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}class Comparatorsort implements Comparator{
public int compare(Object o1,Object o2)
{
Integer str1=(Integer)o1;
Integer str2=(Integer)o2;
if(str1.compareTo(str2)>0)
return -1;
if(str1.compareTo(str2)<0)
return 1;
return 0;
}
}
*判断任意一个整数是否素数
*@paramn
*@return boolean
*/
public boolean isPrimes(int n)
{
for (int i = 2; i <= Math.sqrt(n); i++) {
if(n%i==0)
{
return false;
}
}
return true;
}
都已经这么多了,再支持一个小程序。