1.拆分字符串
遇到特殊字符,比如:对‘$’符号,就应该使用‘\\$’,后总结可以加个方括号如 "[.]"。

2.遍历HASHMAP
Iterator itr = map.keySet().itrator();
while(itr.hasNext())
{
    Object temp1 = itr.next();
    Object temp2 = tab.get(temp1);
}

3.日历操作
Calendar c = Canlendar.getInstance();
c.get(c.YEAR);//获取年份,其他同理
c.add(c.MONTH,-1);//上个月的日期
 
4.随机数
Random random = new Random();
int ran = random.nextInt(100);
注意:范围[0,100)

5.读取配置文件
对于ini 文件或者 properties文件,其实只要内容是 ds=dfjh或者 kd: ksadkf这种,就可以用
Properties pro = new Properties();
//pro.load (Main.class.getResourceAsStream("/test.properties"));或者
//pro.load (new FileInputStream ("test.properties"));
pro.getProperty ("test")

6.遍历vector
两种方式:
//        for (Enumeration e = v.elements ();e.hasMoreElements ();)
//        {
//             System.out.println (e.nextElement ().toString ());
//        }    
       Iterator item = v.iterator ();
       while(item.hasNext ())
       {
           System.out.println (item.next ().toString ());
       }

7.JAVA在WINDOWS下调用其他程序
try
{
    Process p = Runtime.getRuntime().exec("mspaint");
    p.waitFor();
}catch ...

8.获取键盘输入
BufferedReader input = new BufferedReader(new InputStream(System.in));
String s = input.readLine();

9.子类无参构造会隐式super(),若父类没有声明无参构造函数,而且有含参数构造函数,程序编译不通过。

10.命令提示符下,编译java文件 建议使用"javac -d . xxx.java" 能自动生成程序中的包。而运行只需要"java packname.mainclass".

11.使用 "pack200 x.gz y.jar"则将jar文件压缩成gz文件,对class文件压缩率极高,解压缩使用"unpack200 x.gz y.jar".

12.代码中'@'标记符号使用,例如@ Override 在方法前面,表示此方法是覆盖父类方法,那么在编译时会自动检查父类中是否有该方法。

13.周期性事件:
private java.util.Timer timer;
timer.schedule(new java.util.TimerTask()
{
   public void run()
   {
       //……要做的事
   }
},0,5*60*1000);
timer本身是多线程同步的,不需要自己启动线程。

14.介绍下JDK5.0 新特性

1.枚举类型:
public class EnumDemo
{
 enum MyColors
 {
   red,
   black,
   blue,
   green,
   yellow
 };
 public static void main(String args[])
 {
    MyColors color = MyColors.red;
    //for 也是JDK 5中新特性
    for(MyColors option : color.values())
    {
      System.out.println(option);
    }
   switch(color)
   {
    case red:
         System.out.println("best color is "+color.red);
         break;
     default:
          System.out.println("What");
          break;
   }
 }
}
几点注意:1. enum不能写成局部变量。
      2. switch()参数为枚举常量。
      3. case 后red实际是 color.red(由于其机制强制省略color)而其他地方是不能直接用red的.

15.正则表达式:(检验邮箱)
   String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$" ;
   Pattern regex = Pattern.compile (check) ;
   Matcher matcher = regex.matcher (Emailname) ;
   boolean isMatched = matcher.matches () ;

16.序列化
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(combo);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in =new ObjectInputStream(byteIn);
JComboBox comb2 = (JComboBox)in.readObject();

17.数据库操作
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
Connection m_objConnection = DriverManager.getConnection (jdbc:odbc:smstransmitDB;uid=sa;pwd=leslie);
/*
Statement objStatement = m_objConnection.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
*/
String m_objDelSql = "delete from " + m_objTable +
" where " + m_objFldTagId + "=?";
PreparedStatement objStatement = m_objConnection.prepareStatement (m_objDelSql);
objStatement.setInt (1, objSms.id);
objStatement.execute ();
/*executeQuery()返回ResultSet结果*/


18.JAVA 截取小数位数
float a = 1234.5678f;
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
String a=df.format(a);
System.out.println(a); //1234.56
//写#的是有值就写值,没值就不写
//写0的是有值就写值,没值就写0


19.大小写互换

public static void main (String[] args)

         Scanner sc = new Scanner (System.in); 
         sc.useDelimiter ("\n"); 
         String temp = sc.next (); 
         chang_two(temp); 
         sc.close ();
}

//大小写 互换
public staic void chang_two (String text)

      char tem [] = text.toCharArray (); 
      for (int i = 0; i <tem.length;i++) 
      { 
            if(tem[i]>=97&&tem[i]<=122) 
            { 
                  tem[i]=(char)(tem[i]-32);

              }else if (tem[i]>=65&&tem[i]<=90) 
            { 
                  tem[i]=(char)(tem[i]+32); 
            } 
      }

   System.out.println(new String (tem));
}
20.java中格式化输出数字

在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下。
主要使用的类:java.text.DecimalFormat
1。实例化对象,可以用如下两种方法:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
因为DecimalFormat继承自NumberFormat。
2。设定小数位数
系统默认小数位数为3,如:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
System.out.println(df.format(12.3456789));
输出:12.346
现在可以通过如下方法把小数为设为两位:
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789));
则输出为:12.35
3。将数字转化为百分比输出,有如下两种方法:
(1)
df.applyPattern("##.##%");
System.out.println(df.format(12.3456789));
System.out.println(df.format(1));
System.out.println(df.format(0.015));
输出分别为:1234.57% 100% 1.5%
(2)
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789*100)+"%");
System.out.println(df.format(1*100)+"%");
System.out.println(df.format(0.015*100)+"%");
输出分别为:
1,234.57% 100% 1.5%
4。设置分组大小
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
System.out.println(df1.format(123456789));
输出:1,23,45,67,89
还可以通过df1.setGroupingUsed(false);来禁用分组设置,如:
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
df1.setGroupingUsed(false);
System.out.println(df1.format(123456789));
输出:123456789
5。设置小数为必须为2位
DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();
df2.applyPattern("0.00");
System.out.println(df2.format(1.2));
输出:1.20

21.遍历VECTOR

for(int i = 0; i<v.size ();i++)
{
System.out.println (v.elementAt (i));
}

posted on 2007-02-07 10:39 -274°C 阅读(11792) 评论(15)  编辑  收藏 所属分类: JAVA


FeedBack:
# re: JAVA 一句话技巧(不断补充中)
2007-03-09 14:11 | BeanSoft
呵呵, 也不能说这叫钻牛角尖吧, 但是读取配置文件之类的的确是经常会用到的功能代码, 还有解析 XML.  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-03-11 06:39 | Joe
8.获取键盘输入 就不要用了, JDK5.0后就有Scanner 了  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-03-23 16:51 | wangsoft
遍历map是不是应该这样好一点?
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
Map.Entry element = (Map.Entry) iter.next();
Object strKey = element.getKey();
Object strValue = element.getValue();
}

或者
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry element = (Map.Entry) iter.next();
Object strKey = element.getKey();
Object strValue = element.getValue();
}
  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-04-24 14:11 | JAVA-HE
JAVA中日期格式化 分类:java 基础时间格式化
一、JAVA中日期的获取、设置和格式化
1)JAVA提供了3个日期类:Date、Calendar和DateFormat。
Date()方法主要用于创建日期对象并获取日期;
Calendar()方法主要用于获取和设置日期;
DateFormat()方法主要用于创建日期格式化器,然后再由格式化器将日期转换为各种日期格式串输出。
2)JAVA语言规定的基准日期为格林尼治标准时间1970.1.1.00:00:00,当前日期是由基准日期开始所经历的毫秒数转换出来的。
3)DateFomat类在java.text包中,Date和Calendar类在java.util包中。
4)实例如下:
import java.util.*;
import java.text.*;

public class DisplayDate {
public static void main(String[] args){
Date today;
Calendar now;
DateFormat f1,f2;
String s1,s2;

System.out.println("\n显示Date类的相关用法");

today = new Date();
System.out.println("new Date()= \t"+ today);

System.out.println("\n用DateFormat类显示各种日期格式");

//显示各种日期格式
f1 = DateFormat.getDateInstance();
s1 = f1.format(today);
System.out.println("DateFormat.getDateInstance()= \t"+s1);

f1 = DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= \t"+ s1);

f1 = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+ s1);

f1 = DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= \t" + s1);

System.out.println("\n用DateFormat类显示各种时间格式");

//显示各种时间格式
f1 = DateFormat.getTimeInstance();
s1 = f1.format(today);
System.out.println("DateFormat.getTimeInstance()= \t"+s1);

f1 = DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= \t"+s1);

f1 = DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+s1);

f1 = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA);
s1 = f1.format(today);
System.out.println("DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= \t"+s1);

System.out.println("\n显示Calendar的相关时间用法");

now = Calendar.getInstance();
today = now.getTime();
System.out.println("Calendar.getInstance().getTime()= \t"+ today.toString());

}
}

程序运行结果显示如下:

显示Date类的相关用法
new Date()= Fri May 02 13:29:32 CST 2003

用DateFormat类显示各种日期格式
DateFormat.getDateInstance()= 2003-5-2
DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= 2003年5月2日
DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= 2003-5-2
DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= 03-5-2

用DateFormat类显示各种时间格式
DateFormat.getTimeInstance()= 13:29:32
DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= 下午01时29分32秒
DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= 13:29:32
DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= 下午1:29

显示Calendar的相关时间用法
Calendar.getInstance().getTime()= Fri May 02 13:29:33 CST 2003

  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-04-24 14:34 | JAVA-HE
java中关于时间日期操作的常用函数
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
(2) Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3.格式化输出日期时间
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(df.format(date));
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);
(2)计算一年中的第几星期是几号
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输出:
2006-01-02
5.add()和roll()的用法
(1)add()方法
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-08-30
2006-09-03
(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
2006-09-29
2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;
6.计算两个任意时间中间的间隔天数
(1)传进Calendar对象

/** *//**计算两个时间之间相隔天数
* @param startday 开始时间
* @param endday 结束时间
* @return
*/
public int getIntervalDays(Calendar startday,Calendar endday)...{
//确保startday在endday之前
if(startday.after(endday))...{
Calendar cal=startday;
startday=endday;
endday=cal;
}
//分别得到两个时间的毫秒数
long sl=startday.getTimeInMillis();
long el=endday.getTimeInMillis();

long ei=el-sl;
//根据毫秒数计算间隔天数
return (int)(ei/(1000*60*60*24));
}

(2)传进Date对象
/** *//**计算两个时间之间相隔天数
* @param startday 开始时间
* @param endday 结束时间
* @return
*/
public int getIntervalDays(Date startday,Date endday)...{
//确保startday在endday之前
if(startday.after(endday))...{
Date cal=startday;
startday=endday;
endday=cal;
}
//分别得到两个时间的毫秒数
long sl=startday.getTime();
long el=endday.getTime();

long ei=el-sl;
//根据毫秒数计算间隔天数
return (int)(ei/(1000*60*60*24));
}同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等
注:以上方法是完全按时间计算,有时并不能令人满意,如:
startday="2006-10-11 20:00:00"
endday="2006-10-12 8:00:00"
计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:
在传参之前,先设定endday的时间,如:
endday.set(Calendar.HOUR_OF_DAY, 23);
endday.set(Calendar.MINUTE, 59);
endday.set(Calendar.SECOND, 59);
endday.set(Calendar.MILLISECOND, 59);
这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:
(3)改进精确计算相隔天数的方法
public int getDaysBetween (Calendar d1, Calendar d2) ...{
if (d1.after(d2)) ...{ // swap dates so that d1 is start and d2 is end
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
int y2 = d2.get(Calendar.YEAR);
if (d1.get(Calendar.YEAR) != y2) ...{
d1 = (Calendar) d1.clone();
do ...{
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
d1.add(Calendar.YEAR, 1);
} while (d1.get(Calendar.YEAR) != y2);
}
return days;
}  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-05-03 03:15 | 我们走在JAVA的光明大道上
很好的收集资料啊!  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-05-07 22:54 | 菜鸟
我来了这几次了 能告诉我背景音乐叫什么吗?? 谢谢了。。。。。
你们写得很好 继续加油补充~~!  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-05-08 00:52 | αβγ
心愿 四个女生唱的。曾经我在it blog也用作背景音乐。  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-05-08 21:21 | 菜鸟
哦 谢谢 呵呵 想起了以前N多 童年 少年 青少年 初中 高中 大学 。。。

大家共勉~!!!!努力JAVA!  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-05-12 23:39 | L2
very good!
  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)
2007-07-13 14:56 | 欢欢~
楼主 谢谢了~好人,好文,好思想……  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-08-10 13:21 | -274°C
@欢欢

客气了。  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-09-18 23:50 | -274°C
@Joe

虽然Scanner可以不用进行显示的声明异常,但是遇到非法的用户输入时程序就直接退出去了。这在实际的用户程序中是不行的,也就是说容错处理不好!所以建议还是用BufferedReader  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-09-18 23:51 | -274°C
好想前面写掉了东西。。BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));  回复  更多评论
  
# re: JAVA 一句话技巧(不断补充中)[未登录]
2007-09-23 23:16 | -274°C
class A{
int a = 10;
void a(){
}
}
class B{
int b = 20;
void b(){
}
}
public class Ex_instanceOf extends A{

public static void main(String[] args) {
A b = new A();
System.out.println(b instanceof A);
}
}
以上代码会输出true,但是将代码System.out.println(b instanceof A);
改为System.out.println(b instanceof B);并不会输出false,而是不能通过编译请问怎么样才能达到输出false的效果呢!!!

答:
一般instanceof用在未知类型(比如Object)之间的比较。由于b显式定义为class A,而A与B之间显式没有继承关系,所以,编译器会报错。你把A b= new A();改成Object b = new A();就行了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 871625
  • 排名 - 37

最新评论