API学习笔记

 

练习1java高级1_02,上机练习

class APIStudy

{

       public static void main(String args [])

       {

              if(args.length>0)

              {

                     System.out.println("the first Demon is"+args[0]);

              }

              else

              {

                     new APIStudy().call(new A());

              }

       }

       public void call(A a)

       {

              a.say();

       }

}

 

class A

{

       void say()

       {

              System.out.println("Hello World");

       }

}

练习2StringStringBuffer的学习

1)  可以把StringBuffer转成String来使用String的类

2)  Stringbyte[] bytes,int offset,int length)把字节数组的某部分转化成字符串

3)  equalIgnorCase比较字符串内容时忽略大小写。

4)  indexOfint ch)查找字符串中某个字符出现的位置

5)  intdexOf(char a,int i)在某个范围内查找字符出现的第一个位置

6)  substring()截取字符串

读取字符串源代码:

package API;

 

import java.io.IOException;

 

public class ReadLine {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

           byte [] buf=new byte[1024];

           String strInfo=null;

           int pos=0;

           int ch=0;

           System.out.println("please enter info:");

           while(true)

           {

              try {

                  ch=System.in.read();

              } catch (IOException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

              }

              switch (ch) {

              case '/r':

                  break;

              case '/n':

                  strInfo=new String(buf,0,pos);

                  if(strInfo.equals("bye"))

                  {

                     return;

                  }else {

                     System.out.println(strInfo);

                     pos=0;

                     break;

                  }

 

              default:

                  buf[pos++]=(byte)ch;

                  break;

              }

           }

             

    }

 

}

练习3java高级1_04,类型间转换

package API;

 

public class TestInteger {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

      

       if(args.length==0)

       {

           args=new String[]{"3","3"};

           int h=new Integer(args[0]).intValue();

           int w=Integer.valueOf(args[1]).intValue();

           for (int i = 0; i < h; i++) {

              StringBuffer sb=new StringBuffer();

              for (int j = 0; j < w; j++) {

                  sb.append('*');

              }

              System.out.println(sb.toString());

           }

       }

       else {

           System.out.println("请为主方法输入参数");

       }

      

    }

 

}

问题:该段代码在运行中不能正常运行

练习4:集合类

1)      Vector和接口Enumeration的使用

源代码:

package API;

import java.io.IOException;

import java.util.*;

 

import com.sun.org.apache.bcel.internal.generic.NEW;

public class TestVector {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Vector vector=new Vector();

       System.out.println("please enter number");

       while (true) {

           int b=0;

           try {

              b=System.in.read();

           } catch (IOException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

           if (b=='/r'||b=='/n') {

              break;

           }else {

              int num=b-'0';

              vector.addElement(new Integer(num));

           }

       }

       int sum=0;

       Enumeration e=vector.elements();

       while(e.hasMoreElements()) {

         Integer integer=(Integer)e.nextElement();

         sum+=integer;

       }

       System.out.println(sum);

    }

 

}

2)      ArrayListIterator接口的使用,用法同上,该接口不提供线程同步,但是效率比较高。

3)      CollectionsetList的区别

Collection:为父类,内可以有重复元素和null,无顺序

Set:子类,无重复元素,只有一个null,无顺序

List:有顺序,可以有重复元素,多个null

4Collections的排序方法

package API;

 

import java.util.*;

 

public class TestSort {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       ArrayList a=new ArrayList();

       a.add(1);

       a.add(4);

       a.add(3);

       System.out.println(a.toString());

       Collections.sort(a);

       System.out.println(a.toString());

    }

 

}

练习5hashTableObject keyObject value)的应用

1)  创建一个key的类,重写equals方法、hashiCode方法

 

package API;

 

import javax.security.auth.PrivateCredentialPermission;

 

public class MyKey {

    public MyKey(String name,int age)

    {

       this.name=name;

       this.age=age;

    }

    private String name;

    private int age;

    public boolean equals(Object object)

    {

       if(object instanceof MyKey)

       {

           MyKey objTemp=(MyKey)object;

           if(name.equals(objTemp.name)&&age==objTemp.age)

           {

              return true;

           }else {

              return false;

           }

          

       }

       else {

           return false;

       }

    }

    public int hashCode()

    {

       return name.hashCode()+age;

    }

    public String toString()

    {

       return name+","+age;

    }

   

}

2)  存入对象,取出对象的key,测试在hashtabe中存取数据的过程

 package API;

 

import javax.security.auth.PrivateCredentialPermission;

 

public class MyKey {

    public MyKey(String name,int age)

    {

       this.name=name;

       this.age=age;

    }

    private String name;

    private int age;

    public boolean equals(Object object)

    {

       if(object instanceof MyKey)

       {

           MyKey objTemp=(MyKey)object;

           if(name.equals(objTemp.name)&&age==objTemp.age)

           {

              return true;

           }else {

              return false;

           }

          

       }

       else {

           return false;

       }

    }

    public int hashCode()

    {

       return name.hashCode()+age;

    }

    public String toString()

    {

       return name+","+age;

    }

   

}

问题1:重写equalshashCode方法的作用?

答:因为key值不是基本数据类型,在要取出hashtable的值时,键值要进行对象比较,对象的比较就需要用户重写原来的比较方法。

问题2:去掉这两个方法,为什么还能正常取出hashtable中的对象。

答:因为取数据所用的key就是原来表中的key,内存中的地址应该是同一个

练习6properties的应用,propertieshashtable的子类,键和值都是字符串类型的,通常用来操作文件中的字符串。

在文件中自动记录程序运行次数的源代码:

package API;

 

import java.util.*;

import java.io.*;

public class PropertiesFile {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

           Properties settings=new Properties();//定义properties对象

           try {

               settings.load(new FileInputStream("count.txt"));//properties对象中读取文件

           } catch (Exception e) {

              // TODO Auto-generated catch block

              settings.setProperty("count", String.valueOf(0));//如果文件不存在,则设置键值对‘count’0为初始值

           }

           int c=Integer.parseInt(settings.getProperty("count"))+1;//读取文件内count信息,并加1

           System.out.println("这是程序第"+c+"次运行");//在控制台中输出这是第几次运行

           settings.setProperty("count",new Integer(c).toString());//+1后的c存储回properties对象中

           try {

              settings.store(new FileOutputStream("count.txt"),"program is used");//properties对象的信息存储到文件中,并存储该条目的标题为"program is used"

           } catch (Exception e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

    }

 

}

应用:收费软件设定的运行次数。

说明:所学新得在注释中

练习7SystemRunTime

1)  System.exit(int a)异常终止,a为非零数,正常终止a0

2)  System.currentTimeMills(),1970到现在的总共毫秒数,可以用来计算程序的运行时间。

3)  System.getProperties获得系统属性

4)  使用runTime来用java虚拟机操作进程

Process p=null;

       try {

           p=Runtime.getRuntime().exec("notepad.exe TestProperties.java");//连接字符串左边为以文本方式打开文件的可执行程序,右边为要执行的文件

           Thread.sleep(5000);//让主线程停5

           p.destroy();//终止该进程

       } catch (Exception e) {

       }

练习8:与日期和时间有关的类

1)  Calendar

package API;

import java.util.*;

 

import javax.crypto.Cipher;

public class TestCalendar {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       Calendar c1=Calendar.getInstance();//通过Calendar的静态方法getInstance()实例化其对象

       System.out.println(c1.get(c1.YEAR)+""

              +c1.get(c1.MONTH)+""+c1.get(c1.DAY_OF_MONTH)+"  "

              +c1.get(c1.HOUR)+":"+c1.get(c1.MINUTE)+":"+c1.get(c1.SECOND));//获得当前的年月日时分秒

       c1.add(c1.DAY_OF_YEAR, 315);//当前时间加315

       System.out.println(c1.get(c1.YEAR)+""+c1.get(c1.MONTH)+""

              +c1.get(c1.DAY_OF_MONTH)+"  "+

              c1.get(c1.HOUR)+":"+c1.get(c1.MINUTE)+":"+c1.get(c1.SECOND));//获得计算后的日期,其中月份要正常显示的话要加1

 

    }

 

}

2)用SimpleDateFormat方法,来转换输出的格式

SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-mm-dd");//定义输入的日期格式

       SimpleDateFormat sdf2=new SimpleDateFormat("yyyymmdd");//定义输出的日期格式

       Date d1=null;

       try {

           d1 = sdf1.parse("2011-01-07");//输入一个字符串日期,转化为日期类型

       } catch (ParseException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

       System.out.println(sdf2.format(d1));//转换日期的输出格式,并输出

3)使用定时器控制程序的运行

class MyTimerTask extends TimerTask//定义一个类继承于TimeTask的子类

       {   private Timer tm=null;//定义一个定时器属性

           public MyTimerTask(Timer tm)

           {

           this.tm=tm;     //输入定时器对象

           }

           public void run() { //重写run方法

              try {

                  Runtime.getRuntime().exec("calc.exe");//调用打开计算器的进程

              } catch (Exception e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

              }

              tm.cancel();//关闭定时器

             

           }

       }

       Timer t=new Timer();//定义一个定时器对象

       t.schedule(new MyTimerTask(t), 30000);//30秒后执行任务

练习9MathRandom

1)  Math类包含了所有用于几何和三角运算的方法

2)  Randomshi一个伪随机数产生器,一般会用当前的时间做为伪随机数的种子。

  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值