2月 06

配置JDK,环境变量添加

JAVA_HOME=C:\Java\jdk1.7
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH=%JAVA_HOME%\bin;%PATH%

虽然各式各样的IDE已经很强大了
但是了解一下命令方式的编译和执行应该也算不上是件坏事
学习了一下
做个记录

编译

javac -classpath .;D:\study_java\lib\junit.jar D:\Ysuhy\StudentTest.java

执行

java -cp .;D:\study_java\lib\junit.jar junit.awtui.TestRunner StudentTest

written by ocean

10月 20

java的枚举真是坑爹啊,想根据value值获得枚举本身竟然需要写个switch一个个case返回,因为反射的话影响效率

想起C#的方便真是内牛满面啊

看见一个同事写的一个方法挺好,写了一个转换方法,记录一下

public enum FeedStatusEnum {

   / **
    * 未处理
    */
   untreated(0),
   / **
    *人工回复
    */
   adminReply(1),
   / **
    * 自动回复
    */
   autoReply(2),
   / **
    * 忽略
    */
   ignore(6);

   private int status;

   private FeedStatusEnum(int status) {
       this.status = status;
   }

   public int getStatus() {
       return this.status;
   }
}

转换类:

   / **
    * FeedStatusEnum 枚举转换
    *
    * @param status
    * @return
    */
   private static FeedStatusEnum getFeedStatusEnum(int status) {
       for (FeedStatusEnum e : FeedStatusEnum.values()) {
           if (e.getStatus() == status) {
               return e;
           }
       }
       return null;

   }


这样就不用一个个去转换了

不过也比较麻烦,每个枚举都需要写一个对应的类,根据泛型应该可以只写一次的

有空了研究一下,先完成任务再说,吼吼

   

written by ocean

10月 14

他大爷的,java的时间日期真难操作,写个方法封装一下了

照着C#写的

public class DateHelper {

   
   
    / **
    * 构建一个date
    * @param year
    * @param month
    * @param day
    * @param hour
    * @param minute
    * @param second
    * @return
    */
   public static Date Ceate(int year,int month,int day,int hour,int minute,int second){
       Calendar calendar=Calendar.getInstance();
       calendar.set(Calendar.YEAR, year);
       calendar.set(Calendar.MONTH,month1);//尼玛的,月的索引是从0开始的,神经病啊
       calendar.set(Calendar.DAY_OF_MONTH, day);
       calendar.set(Calendar.HOUR,hour);
       calendar.set(Calendar.MINUTE, minute);
       calendar.set(Calendar.SECOND,second);
       return calendar.getTime();
   }
   
   / **
    * 添加年
    * @param date
    * @param amount
    * @return
    */
   public static Date AddYear(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.YEAR, amount);
       return calendar.getTime();
   }
   
   / **
    * 添加月
    * @param date
    * @param amount
    * @return
    */
   public static Date AddMonth(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.MONTH, amount);
       return calendar.getTime();
   }
   
   / **
    * 添加日
    * @param date
    * @param amount
    * @return
    */
   public static Date AddDay(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.DAY_OF_WEEK, amount);
       return calendar.getTime();
   }
   
   / **
    * 添加小时
    * @param date
    * @param amount
    * @return
    */
   public static Date AddHour(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.HOUR, amount);
       return calendar.getTime();
   }
   / **
    * 添加分钟
    * @param date
    * @param amount
    * @return
    */
   public static Date AddMinute(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.MINUTE, amount);
       return calendar.getTime();
   }
   / **
    * 添加秒
    * @param date
    * @param amount
    * @return
    */
   public static Date AddSecond(Date date,int amount){
       Calendar calendar=Calendar.getInstance();
       calendar.setTime(date);
       calendar.add(Calendar.SECOND, amount);
       return calendar.getTime();
   }
   

   / **
    * 格式化输出字符串
    * @param date
    * @param pattern
    * @return
    */
   public static String DateToString(Date date,String pattern){
        java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(pattern);  
        String str=format.format(date);
        return str;
   }
}

written by ocean

8月 25

在java.util包中提供了一些集合类,常用的有List、Set和Map类,其中List类和Set类继承了Collection接口。这些集合类又称为容器,它们与数组不同,数组的长度是固定的,而集合的长度是可变的,数组用来存放基本数据类型的数据,集合用来存放类对象的引用。
List接口、Set接口、Map接口以及Collection接口的主要特征如下:
● Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用。
● List接口继承了Collection接口,List接口允许存放重复的对象,排序方式为按照对象的插入顺序。
● Set接口继承了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。
● Map接口以键值对(key—value)的形式存放对象,其中键(key)对象不可以重复,值(value)对象可以重复,排序方式为按照自身内部的规则。

Collection接口的方法

int size();  

boolean isEmpty();

boolean contains(Object o);

Iterator<E> iterator();

Object[] toArray();

<T> T[] toArray(T[] a);

boolean add(E e);

boolean remove(Object o);

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c);

boolean removeAll(Collection<?> c);

boolean retainAll(Collection<?> c);

void clear();

boolean equals(Object o);

int hashCode();

written by ocean

8月 01

在Java中提供了字符串与其他数据类型之间的转换,尤其是与基本数据类型和包装类间的转换,会被经常用到。

1、将其他数据类型转换为字符串

将其他数据类型转换为字符串存在两种方法:调用类的toString()方法和调用String类的valueOf()方法。

(1)调用类的toString()方法。如果该类为基本数据的包装类,则可以使用带参数的或不带参数的toString()方法。

不带参数的toString()方法为类的非静态方法,因此必须通过类对象进行调用。例如将一个Integer对象转换为字符串:

Java代码

  1. Integer num = new Integer(300);

  2. System.out.println("result="+(num.toString()+200));

运行结果如下:
result=300200

带参数的toString()方法为类的静态方法,因此可以通过类直接进行调用。方法中的参数应为与包装类对应得基本数据类型变量或字面常数。例如转换一个float类型数据为字符串:

Java代码

  1. float f=12.345f;

  2. System.out.println("result="+(Float.toString(f)+1.02f));

运行结果如下:
result=12.3451.02
通常情况下,不带参数的toString()方法用来将包装类数据转换为字符串,而带有参数的toString()方法则用来将基本数据类型转换为字符串。
在Java中的java.lang.Object类中提供了一个不带参数的toString()方法,该方法返回当前对象的字符串表示,返回值的形式为类名+“@”+十六进制数表示对象的地址。所有从Object类派生的子类都可以调用toString()返回类对象的字符串表示,并且子类可以覆盖toString()方法来返回其他值。另外在一些情况下,系统会自动调用对象的toString()方法,例如print()方法和字符串“+”运算。例如:

Java代码

  1. public class ConversionDemo1{

  2. public static void main(String args[]){

  3. ConversionDemo1 c=new ConversionDemo1();//创建ConversionDemo1类对象

  4. String s="输出:"+c;//系统会先调用c对象的toString()方法,然后再进行字符串“+”运算

  5. System.out.println(c);//系统会先调用c对象的toString()方法,然后输出方法的返回值

  6. System.out.println(s);

  7. }

  8. }

运行结果如下:
ConversionDemo1@7d8a992f
输出:ConversionDemo1@7d8a992f

(2)调用String类的valueOf()方法。通过调用String类的valueOf()方法既可以将包装类型数据转换为字符串,也可以将基本数据类型或字面常量转换为字符串,另外,在转换其他引用类型对象时,等价于调用该对象的toString()方法。例如分别转换float型数据为字符串,转换Double类型数据为字符串,转换ConversionDemo2类对象为字符串:

Java代码

  1. public class ConversionDemo2{

  2. public static void main(String args[]){

  3. float f = 45.678f;//定义一个float型变量,并赋值为45.678

  4. Double d = new Double(12.345);//创建一个Double对象

  5. ConversionDemo2 c=new ConversionDemo2();//创建一个ConversionDemo2类对象

  6. System.out.println(String.valueOf(f)+10);//调用String的valueOf(float f)方法转换float型数据为字符串,然后与整数10进行运算

  7. System.out.println(String.valueOf(d)+10);//调用String的valueOf(Object obj)方法转换Double对象为字符串,然后与整数10进行运算

  8. System.out.println(String.valueOf(c));//调用String的valueOf(Object obj)方法转换类对象c为字符串,然后输出

  9. }

  10. }

运算结果如下:
45.67810
12.34510
ConversionDemo2@8dc8569

Java中的基本数据类型都可以通过String中对应的valueOf()方法转换为字符串,然而在String类中并没有提供valueOf(byte b)和valueOf(short s)方法来转换byte和short型数据为字符串,但如下的方法调用是合法的:

Java代码

  1. byte b='a';

  2. short s=123;

  3. System.out.println(String.valueOf(b));//输出结果:97

  4. System.out.println(String.valueOf(s));//输出结果:123

这是因为byte和short被自动转换为了int型,从而调用的是valueOf(int i)方法。

2、将字符串转换为基本数据类型

(1)通过包装类的parseXxx()方法将一个字符串转换为该包装类对应的基本数据类型,但要求字符串必须为数字形式,例如int num = Integer.parseInt("123");是合法的,而int num = Integer.paseInt("abc");则会抛出“java.lang.NumberFormatException:For input string:”abc””异常。
各包装类所具有的parseXxx()方法如下表所示:

注意:其中,parseBoolean()方法中的字符串参数取值为“True”(大小写均可)时,结果为True;否则结果为False。

(2)通过包装类的对象调用xxxValue()方法。
例如:int i = new Integer("123").intValue();
各包装类所具有的xxxValue()方法如下表2所示:

通过表2可以看出:基本数据类型间除了boolean和char类型外,都可以相互转换,并且可以将包装类对象转换为对应的基本数据类型。

written by ocean

7月 26

java.text.DateFormatformat3=newjava.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s =format3.format(newDate());
System.out.println(s);

输出

2011-07-26 14:19:54

基本上跟C#是一样的了

written by ocean