Java EE课程实验
题 目: 实验一Java常用工具类编程学 号 20093272姓 名 顾双凯
院 系 计算机与信息工程学院专业年级 软件工程2009级
2011 年 9 月 20 日
实验一J ava常用工具类编程
§ 1.1实验指导
1、 String类使用
String类表示字符串。 在Java程序中所有的字符串常量如"abc"都被实现为这个类的实例。
1) 、构造函数
String s1="java";
String s2=new String("java") ;
2) 、 比较函数
①==比较引用是否相同if(s1==s2) //返回false
②equals() :比较串内容是否相同if(s1.equals(s2) )//返回true
③compareTo() :比较内容,返回数字s1.compareTo(s2)
如果s1>s2 则返回>0
如果s1=s2 则返回0
如果s1<s2 则返回<0
3) 、取子串substring() ,取字符charAt(index)
String s1="hello java";s1. substring(start,end) ;s1. substring(0,3) ;//start到end-1
String s2=s1. substring(6, 10) ;
4) 、分割split() ;
String s1="c++, java,vb.net";
String[] str=s1. split(", ") ;
String s2="c++. java.vb";
String s2="c++. java.vb dotnet";
String[] str=s2. split("\\. | ") ;for(int i=0; i<str. length; i++)
System.out.println(str[i] ) ;
2、 StringBuffer类
StringBufferpubl ic StringBuffer()
构造一个不包含字符的字符串缓冲区其初始的容量设为16个字符。
StringBufferpubl ic StringBuffer(int length)构造一个不包含字符的字符串缓冲区其初始的容量由参数length设置。
StringBufferpubl ic StringBuffer(String str)构造一个字符串缓冲区来表示和字符串参数相同的字符序列。len gthpubl icint length()返回字符串缓冲区的长度(字符数)。capacitypubl ic int capacity()返回字符串缓冲区的当前容量。 该容量表示可用于插入新的字符的存储空间超出该容量时会发生新的容量分配。ensureCapacitypublic synchronized void ensureCapacity(int minimumCapacity) 保证缓冲区的容量至少等于指定的最小数。 如果字符串缓冲区的当前容量少于该参数 则分配一个新的更大的内部缓冲区。 新容量将取如下参数中较大的一个setLengthpublic synchronized void setLength(int newLength) 设置该字符串缓冲区的长度。 如果参数newLength小于该字符串缓冲区的当前长度。 该字符串缓冲区将被截断来包含恰好等于由参数newLength给出的字符数。a p pe n dpublic synchronized StringBuffer append(Object obj) 把Object型参数的字符串表示添加到该字符串缓冲区。
StringBuffer x=new StringBuffer().append("a").append(4).append("c") .toString();i n se rtpublic synchronized StringBuffer insert(int offset, Object obj) 把Object型参数的字符串表示插入到字符串缓冲区。reversepublic synchronized StringBuffer reverse() 该字符串缓冲区的字符序列被其反向字符序列所替换。toStringpublic String toString() 转换为一个表示该字符串缓冲区数据的字符串。 分配一个新的String对象并且用字符串缓冲区所表示的字符序列进行初始化。 于是此String被返回。 随后缓冲区发生的变化不再影响该String的内容。
3、 日期类示例
1 获取服务器端当前日期import="java.util.Date"
Date myDate = new Date() ;
2)获取当前年、 月、 日
Date myDate = new Date() ;int thisYear = myDate.getYear() + 1900;//thisYear = 2009int thisMonth = myDate.getMonth() + 1 ;//thisMonth = 10int thisDate = myDate.getDate() ;//thisDate = 30
3)按本地时区输出当前日期
Date myDate = new Date() ;
out.println(myDate. toLocaleString() ) ;
输出结果为
2003-5-30
4)按照指定格式打印日期import "java.util.Date";import "java. text.DateFormat";
Date dNow = new Date() ;
SimpleDateFormat formatter =new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz") ;
System.out.println("It is " + formatter.format(dNow) ) ;
输出的结果为
It is星期五2003.05.30 at 1 1 :30:46上午CST
5)将字符串转换为日期import="java.util.Date"import="java. text.DateFormat"
String input = "1222-11-11";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd") ;Date t = null;try{t = formatter.parse(input) ;
System.out.println(t) ;
}catch(ParseException e) {
System.out.println("unparseable using" + formatter) ;
}
输出结果为
Fri Nov 1 1 00:00:00 CST 1222
6)计算日期之间的间隔getTime()函数返回日期与1900-01-0100:00:00相差的毫秒数Import java.util.Date;import java. text.DateFormat;
String input = "2003-05-01";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd") ;Date d1 = null;
Date d2 = new Date() ;long diff = d2.getTime() - d1.getTime() ;out.println("Difference is " + (diff/(1000*60*60*24) ) + " days. ") ;输出结果为
Difference is 29 days.
7) 日期的加减运算
方法 用Calendar类的add()方法
Calendar now = Calendar.getInstance() ;
SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at'hh:mm:ss a zzz") ;out.println("It is now " + formatter.format(now.getTime() ) ) ;now.add(Calendar.DAY_OF_YEAR,-(365*2) ) ;out.println("<br>") ;out.println("Two years ago was " + formatter.format(now.getTime() ) ) ;输出结果为
It is now星期五2003.05.30 at 01:45:32下午CST
Two years ago was星期三2001 .05.30 at 01 :45:32下午CST
8)比较日期
方法 用equals()、 before()、 after()方法import java.util.*;import java. text.*;
DateFormat df = new SimpleDateFormat("yyy-MM-dd") ;
Date d1 = df.parse("2000-01-01") ;
Date d2 = df.parse("1999-12-31") ;
String relation = null;if(d1. equals(d2) )relation = "the same date as";else if(d1.before(d2) )relation = "before";elserelation = "after";
System.out.println(d1 +" is " + relation + ' ' + d2) ;
输出结果为
Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 1999
§ 1.2实验题目
1、使用类String类的分割spl it将字符串 “Solutions to selected exercisescan be found in the electronic document The Thinking in JavaAnnotatedSolution Guide,available for a small fee from BruceEckel”单词提取输出。单词以空格或,分割。
package SY1;public class Demo1 {
/**
* @param args
*/public static void main(String[ ] args) {
// TODO Auto-generated method stub
String s="Solutions to selected exercises can be found in theelectronic document The Thinking in Java Annotated Solution Guide,available for a small fee from BruceEckel";
String[ ] sp=s.split(" | , ") ;for(int i=0;i<sp.length;i++)
System.out.println(sp[i] ) ;
}
}
2、设计一个类Stude nt,类的属性有姓名学号 出生日期性别所在系等。并生成学生类对象数组。按照学生的姓名将学生排序输出。使用Stri ng类的compareTo方法。
3、设计一个程序计算2010-05-01 日与系统当前日期相差的天数。
package SY1;import java.util.Date;import java.text.*;public class Demo4 {public static void main(String[ ] args) {
String input="2010-05-01";
SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd") ;
Date d1=null;try{d1 = formatter.parse(input) ;
}catch(ParseException e) {
System.out.println("unparseable using" + formatter) ;
}
Date d2 = new Date( ) ;long diff = d2.getTime( ) - d1.getTime( ) ;
System.out.println("Difference is " + (diff/ (1000*60*60*24) ) + "days. ") ;
}
}
4、使用日历类等相关方法按截图做出一个日历参照书本示例,研究其中代码回顾与复习利用Java Swing编程。
package SY1;import java.awt.*;import java.awt.event.*;import javax.swing.*;importjava.uti l.*;public class CalenderTrain extends JFrame implements ActionListener{JComboBox Month=new JComboBox(); //月份下拉列表框
JComboBoxYear=new JComboBox(); //年份下拉列表框
JLabelYear_l=newJLabel("年:");
JLabel Month_l=newJLabel("月:");
Date now_date=new Date(); //获取今天的日期
J B utton[]b utton_day=new J B utton[49]; //定义一个数组用来存放日期JButton button_ok=new JButton("跳转"); //现实选择日期
JButton button_today=new JButton("现在日期"); //显示今天日期按钮int now_year=now_date.getYear()+1900; //获取年份值int now_month=now_date.getMonth(); //获取月份值(当前月份-1)boolean bool=false;
String year_int=nul l; //存放年份intmonth_int; //存放月份
JPanel pane_ym=newJPanel(); //放置下拉列表框和控制按钮面板JPanelpane_day=newJPanel(); //放置日期面板
JPanel pane_parent=newJPanel(); //放置以上两个面板public CalenderTrain() {super("Calender!"); //设定面板得titlefor(int i=now_year-20; i<=now_year+20; i++){
Year.addItem(i+"");
}for(int i=1; i<13; i++) {
Month.addItem(i+"");
}
Year.setSelectedIndex(10); //设定年份下拉列表为当前年份pane_ym.add(Year_l); //添加年份标签pane_ym.add(Year); //添加年份下拉列表框
Month.setSelectedIndex(now_month); //设定月份下拉列表为当前月份pane_ym.add(Month_l); //添加月份标签pane_ym.add(Month); //添加月份下拉列表框pane_ym.add(button_ok); //添加跳转按钮pane_ym.add(button_today); //添加“现在日期”按钮button_ok.addActionListener(this); //跳转按钮添加监听事件button_today.addActionListener(this); // “现在日期”按钮添加监听事件pane_day.setLayout(new GridLayout(7,7));for(int i=0; i<49; i++) {b utto n_d ay[i]=n ew J B utto n(" ");
zji怎么样?zji是一家老牌国人主机商家,公司开办在香港,这个平台主要销售独立服务器业务,和hostkvm是同一样,两个平台销售的产品类别不一平,商家的技术非常不错,机器非常稳定。昨天收到商家的优惠推送,目前针对香港邦联四型推出了65折优惠BGP线路服务器,性价比非常不错,有需要香港独立服务器的朋友可以入手,非常适合做站。zji优惠码:月付/年付优惠码:zji 物理服务器/VDS/虚拟主机空间订...
10gbiz发布了9月优惠方案,针对VPS、独立服务器、站群服务器、高防服务器等均提供了一系列优惠方面,其中香港/洛杉矶CN2 GIA线路VPS主机4折优惠继续,优惠后最低每月仅2.36美元起;日本/香港独立服务器提供特价款首月1.5折27.43美元起;站群/G口服务器首月半价,高防服务器永久8.5折等。这是一家成立于2020年的主机商,提供包括独立服务器租用和VPS主机等产品,数据中心包括美国洛...
易探云香港vps主机价格多少钱?香港vps主机租用费用大体上是由配置决定的,我们选择香港vps主机租用最大的优势是免备案vps。但是,每家服务商的机房、配置、定价也不同。我们以最基础配置为标准,综合比对各大香港vps主机供应商的价格,即可选到高性能、价格适中的香港vps主机。通常1核CPU、1G内存、2Mbps独享带宽,价格在30元-120元/月。不过,易探云香港vps主机推出四个机房的优惠活动,...