资源描述
JAVA类库和常用类简介类库和常用类简介类库简介类库简介Java语言基础类库语言基础类库String类和类和StringBuffer类类常用工具类库常用工具类库类库简介java.lang它是由编译器自动引入的它是由编译器自动引入的,包括包括:Object类类,数据包装类数据包装类,数学类数学类,异常处理类异常处理类,线线程类程类,字符串处理类字符串处理类,系统及运行类系统及运行类,类操作类等类操作类等;java.applet用于创建小程序;java.awt用于创建图形用户界面;java.io输入输出流网络包,用于网络通讯java.util实用程序包,提供许多不同功能的类,如日期时间类,矢量类,数据结构类等JAVA 中的MATH类 Math 类 数学类包含了许多数学函数,如sin、cos、exp、abs等。Math类是一个工具类,它在解决与数学有关的一些问题是有着非常重要的作用。这个类有两个静态属性:E和PI。E代表数学中的e 2.7182818,而PI代表派pi 3.1415926。引用时,用法如:Math.E 和 Math.PiJAVA 中的MATH类这个类的方法有:public static int abs(int a)public static long abs(long a)public static float abs(float a)public static double abs(double a)abs方法用来求绝对值。JAVA 中的MATH类 public static native double sin(double a)sin求正弦函数。public static native double tan(double a)tan求正切函数。atan求反正切函数。public static native double cos(double a)cos求余弦函数。JAVA 中的MATH类public static native double ceil(double a)ceil返回 最小的 大于a的整数。(天花板)public static native double exp(double a)exp求e的a次幂。public static native double floor(double a)floor返回 最大的 小于a的整数。public static native double log(double a)log返回lna。JAVA 中的MATH类public static native double pow(double a,double b)pow求a的b次幂。public static native double sqrt(double a)sqrt求a的开平方。public static synchronized double random()返回0到1之间的随机数。public static round(double d)public static round(float f)取整,四舍五入JAVA 中的MATH类public class MathDemo public static void main(String args)System.out.println(Math.ceil(3.45);System.out.println(Math.floor(3.55);System.out.println(Math.round(3.35);System.out.println(Math.round(3.5);System.out.println(Math.random();随机数类JAVA.UTIL.RANDOM Random()创建一个新的随机数生成器。Random(longseed)使用单个 long 种子创建一个新的随机数生成器。随机数类JAVA.UTIL.RANDOMnextDouble()返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。nextFloat()返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值 随机数类JAVA.UTIL.RANDOMnextInt()返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。nextInt(intn)返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。StringString类和类和StringBufferStringBuffer类类 字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象来处理。程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量字符串常量;另一类是创建之后允许再做更改和变化的字符串变字符串变量量。对于字符串常量,由于程序中经常需要对它做比较,搜索之类的操作,所以通常把它放在一个具有一定名称的对象之中,由程序对该对象完成上述操作。在Java中,存放字符串常量的对象用StringString类,对于字符串变量,由于程序中经常需要对它做添加,插入,修改等操作,一般存放在StringBufferStringBuffer类的对象中。字符串字符串String字符串常量使用双引号括住的一串字符,比如:Hello world!Java编译器自动为每一个字符串常量生成一个String类 的实例,因此可以用字符串常量直接初始化一个String对 象,如:String s=Hello world!;要创建类String的一个对象并进行初始化,需要调用类String的构造方法。类String中提供了下面的一些构造方法:String():无参数的缺省的构造方法用来创建一个空串。String s=new String();String(String value):利用已经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。String s=new String(“hello”);String(char value ):通过给构造方法传递一个字符数组可以创建一个非空串。char chars =a,b,c;String s=new String(chars);3、字符串、字符串String:创建:创建String(char ,int startIndex,int numChars):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。char chars=a,b,c,d,e,f;String s=new String(chars,2,3);该方法生成的串s为“cde”。(注意数组的下标从0开始)3、字符串、字符串String:创建:创建String(byte mybyte,byte hibyte):因为在Internet上,格式采用八位的ASCII码,所以Java的类String提供了从byte型数组进行初始化的构造方法。其中hibyte指明各字符的高位字节,对于通常所用的ASCII码,必须将高位字节声明为零,而其他的非拉丁文字符则置为非零。byte mybyte =97,98,99;String s=new String(mybyte,0);该方法构造的字符串s是“abc”。3、字符串、字符串String:创建:创建String(byte mybyte,byte hibyte,int startIndex,int numChars):这种构造方法与String(char,int startIndex,int numChars)类似,只是初始化的数组类型不同。byte mybyte =80,81,82,83,84,85 ;String s=new String(mybyte,0,2,3);该方法构造的字符串s是“RST”。String(StringBuffer buffer):这个构造函数利用一个已经存在的StringBuffer对象为新建的String对象初始化。3、字符串、字符串String:创建:创建 1.length public int length()此方法返回字符串的字符个数,如:String s=abc;System.out.println(s.length();则将显示字符个数为3。3、字符串、字符串String:基本方法:基本方法2.charAt public char charAt(int index)该方法返回字符串中index位置上的字符,其中index值的范围是0length-1。3.getChars如果要从字符串中提取一个以上的字符,则可以用此方法:public void getchars(int srcbegin,int end,char buf,int dstbegin)其中,srcbegin为要提取的第一个字符在源串中的位置,end为要提取的最后一个字符在源串中的位置,字符数组bufbuf存放目的字符串,dstbegin为提取的字符串在目的串中的起始位置。3、字符串、字符串String:基本方法:基本方法4.getbytespublic void getbytes(int srcbegin,int end,byte bytbyt,int dstbegin)类似于上一个方法,只是串中的字符均用8位表示,参数及用法同上。5.indexOf和lastIndexOf为了在给定的字符串中检索特定的字符或子串,类String提供了上面两种方法,并通过方法重写更方便的处理这类问题。这两种方法中,如果查找成功,则返回匹配成功的字符的位置,如果没有查找到,则都返回-1。int indexOf(int ch)int lastIndexOf(int ch)返回字符ch在字符串中出现的第一个和最后一个位置。3、字符串、字符串String:基本方法:基本方法int indexOf(String str)int lastindexOf(String str)返回子串str中第一个字符在字符串中出现的始末位置。int indexOf(int ch,int fromIndex)int lastIndexOf(int ch,int fromIndex)返回字符ch在字符串中位置fromIndex以后出现的始末位置。int indexOf(String str,int fromIndex)int lastIndexOf(String str,int fromIndex)返回子串str中的第一个字符在字符串中位置fromIndex以后出现的始末位置。3、字符串、字符串String:基本方法:基本方法6.在Java中,运算符“”可以用来实现字符串的连接,如:String s=“He is”+age+“years old.”假设整数型变量age的值为15,那么,s的值为“He is 15 yearsOld”。pareTopublic int compareTo(String str)该方法按字典次序比较两个字符串的大小,如果源串较小,则返回一个小于0的值,如相等则返回0,否则返回一个大于0的值。3、字符串、字符串String:基本方法:基本方法8.regionMatchesboolean regionMatches(int toffset,String other,int ooffset,int len)boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)上述两个方法都是用来进行模式匹配模式匹配的,匹配成功则返回true,否则返回false。其中,toffset和ooffset分别指明当前字符串和参数字符串中所要比较的子串的起始索引位置,len指明比较的长度,而ignoreCase指明比较时是否区分大小写。对于第一种方法,比较是区分大小写的。String s1=“tsinghua”String s2=“it is TsingHua”;s1.regionMatches(0,s2,6,7);3、字符串、字符串String:基本方法:基本方法 9.equals和equalsIgnoreCasepublic boolean equals(object str)public boolean equalsIgnoreCase(object str)判断两个字符串是否相等,则可以用此方法。相等则返回 true,不等则返回false,两种方法的区别在于 equalsIgnoreCase不区分字母大小写,而equals则须区分。10.其他方法public String concat(String str);将当前字符串对象与给定的字符串str连接起来。3、字符串、字符串String:基本方法:基本方法public String replace(char oldChar,char newChar)将串中出现的特定字符用新的字符代替。public String substring(int beginIndex)public String substring(int beginIndex,int endIndex)用来得到字符串中指定范围内的子串。public String toLowerCase()把串中的所有字符转换成小写public String toUpperCase()把串中的所有字符转换成大写3、字符串、字符串String:基本方法:基本方法示例1:加密解密算法public class Stringdemo public String jiami(String str)String result=;int length=str.length();char c=new charlength;for(int i=0;i str.length();i+)ci=(char)(str.charAt(i)+i);return new String(c);示例,密码加密 public String jiemi(String str)String result=;int length=str.length();char c=new charlength;for(int i=0;i str.length();i+)ci=(char)(str.charAt(i)-i);return new String(c);示例,密码加密public static void main(String args)Stringdemo s=new Stringdemo();String str=1234567890abcdefghijklmnopqrstuvwxyz;System.out.println(加密前+str);String afterjiami=s.jiami(1234567890abcdefghijklmnopqrstuvwxyz);System.out.println(加密后+afterjiami);String afterjiemi=s.jiemi(afterjiami);System.out.println(解密后+afterjiemi);示例2:字符串分割public class Split_test public static void main(String args)String str=2010-06-01-19-56;String str_split=str.split(“-”);/以“-”为标志将字符串拆分 /循环打印字符数组元素for(int i=0;ijava demoOfStringBuffer buffer=abclength=3capacity=192.append public synchronized StringBuffer append(对象类型 对象名)append方法将指定的参数对象转化成字符串,附加在原来的字符串对象之后。3.insert public synchronized StringBuffer insert(int 插入位置,对象类型 对象名)在指定的位置插入给出的参数对象所转化而得的字符串。3、字符串、字符串StringBuffer:基本方法:基本方法4.setChatAt()public synchronized void setCharAt(int index,char ch)用来设置指定索引index位置的字符值。5.setLength public synchronized void setLength(int newLength)如果希望明确地定义字符缓冲区的长度,则可以用此方法。如果newlength大于现在的长度,串尾将补0,如果小于,那么newlength后的字符将丢失。3、字符串、字符串StringBuffer:基本方法:基本方法用STRINGBUFFER修改加密解密加密算法public String jiami(String str)StringBuffer result=new StringBuffer();for(int i=0;i str.length();i+)/得到字符直接追加到result result.append(char)(str.charAt(i)+i);return result.toString();与日期和时间有关的类Java 语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分。日期是商业逻辑计算一个关键的部分。所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象。与日期和时间有关的类创建一个日期对象创建一个日期对象 让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数。这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间。与日期和时间有关的类Date date=new Date();我们使用了Date 构造函数创建一个日期对象,这个构造函数没有接受任何参数,而这个构造函数在内部使用了System.currentTimeMillis()方法来从系统获取日期。与日期和时间有关的类日期数据的定制格式日期数据的定制格式 Date类java.text.DateFormat与java.text.SimpleDateFormat子类SimpleDateFormat是DateFormat的子类,DateFormat是抽象类。与日期和时间有关的类SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。SimpleDateFormat(Stringpattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。SimpleDateFormat类常用成员方法如下:String format(Datedate):将一个 Date 格式化为日期/时间字符串。Date parse(Stringsource):从给定字符串的开始分析文本,以生成一个日期。与日期和时间有关的类String writerDate=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date();SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月dd日 EEE HH:mm:ss);格式“yyyy年MM月dd日EEE HH:mm:ss”其中EEE表示“星期”与日期和时间有关的类SimpleDateFormat类的作用是设置好某种格式:SimpleDateFormat sdf=new SimpleDateFormat(yyyy-MM-dd);将字符串转换为日期:Date dt=sdf.parse(2007-04-30);将日期转换为字符串:String str=sdf.format(dt);实例public class DateTest public static void main(String args)Date date=new Date();/根据当前系统事件生成Date对象SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月dd日 EEE HH:mm:ss);String date_str=date.toString();String date_format=sdf.format(date);/根据规定的格式格式化Date对象System.out.println(date_str);System.out.println(date_format);与日期和时间有关的类Calendar日历类是一个抽象类,主要用于日期字段之间相互操作,设置和获取日期数据的特定部分。Calendar类的set()和get()方法可以用来设置和读取日期的特定部分,比如年、月、日、分和秒等。我们可以使用Calendar.getInstance()方法获取Calendar类实例或调用它的子类GregorianCalendar的构造方法。GregorianCalendar采用格林尼治标准时间。与日期和时间有关的类GregorianCalendar类常用构造方法如下:(1)GregorianCalendar():在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。(2)GregorianCalendar(intyear,intmonth,intdayOfMonth):在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar。(3)GregorianCalendar(intyear,intmonth,intdayOfMonth,inthourOfDay,intminute):为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。(4)GregorianCalendar(intyear,intmonth,intdayOfMonth,inthourOfDay,intminute,intsecond):为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。与日期和时间有关的类 GregorianCalendar类常用方法如下:(1)void add(intfield,intamount):根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。field指对哪个日期域进行操作,如DATE。(2)Date getTime():返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。(3)void set(intfield,intvalue):将给定的日历字段设为给定值。(4)void gett(intfield,intvalue):返回给定的日历字段值。(5)void setTime(Datedate):使用给定的 Date 设置此 Calendar 的时间。(6)long getTimeInMillis():返回此 Calendar 的时间值,以毫秒为单位。实例;import java.util.Calendar;import java.util.GregorianCalendar;import java.text.SimpleDateFormat;import java.util.Date;public class Calendardemo public static void main(String args)Calendar cal=new GregorianCalendar();System.out.println(当前格林尼治时间-+cal.getTime();System.out.print(年:+cal.get(Calendar.YEAR);System.out.print(月:+cal.get(Calendar.MONTH);System.out.print(日:+cal.get(Calendar.DATE);/Calendar类中星期日Calendar.SUNDAT是1 System.out.print(星期:+(cal.get(Calendar.DAY_OF_WEEK);System.out.print(小时:+cal.get(Calendar.HOUR_OF_DAY);System.out.print(分:+cal.get(Calendar.MINUTE);System.out.println(秒:+cal.get(Calendar.SECOND);Date date=cal.getTime();SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月dd日EEE HH:mm:ss);String date_format=sdf.format(date);System.out.println(今天是:+date_format);cal.set(Calendar.DATE,1);cal.add(Calendar.HOUR,4);System.out.println(修改后的时间为:+cal.getTime();System.out.println(修改后的时间为:+sdf.format(cal.getTime();包装类对于java中的基本数据类型如long,int等等都有一个对应的数据类型类,将它们包装成一个对象,并提供一些操作它们的方法.基本数据类型longintshortbytefloatdoublecharboolen数据类型类LongIntegerShortByteFloatDoubleCharacterBoolen包装类构造方法和常用方法(以Double为例)1、Double dou1=new Double(“123.45”)Double dou2=new Double(123.45)2、public double doubleValue()字符串转换成相应的基本类型数据值public static double parseDouble(String)从包装类对象中取出对应的基本类型数据值public double doubleValue();public static Double valueOf(String)public String toString()包装类实例数字字符串转换成对应简单数据类型;从数据类型对象中取出对应的简单类型数据;JDK1.5及以后版本运行基本类型和包装类型进行混合运算。在JDK1.5版本之前,数学运算表达式中操作单元必须是基本类型,并且结果也必须是基本类型。例如以下语句:double d=123.456*3*3;/合法Double d=new Double(“123.456”)*new Integer(3)*3;/不合法,编译出错在JDK1.5及以后版本中上面两个语句均合法。实例public class CalculateTest public static void main(String args)Double d=Double.valueOf(123.456);Integer i=new Integer(3);Double d2=Double.valueOf(3.3);int ii=6;System.out.println(d*i*d2-ii);集合类框架ArrayListVectorIteratorHashTableHashMap为什么需要集合框架学生1学生20n如何存储每天的新闻信息?n如何存储课程的代码与课程信息,能够通过代码方便地获得课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象方式存储对象那么,可以使用那么,可以使用Java集合框架,来解决这类问题集合框架,来解决这类问题一维数组一维数组代码1代码N课程1课程N一一对应一一对应新闻1新闻N每天的新闻总数不每天的新闻总数不确定,显然无法再确定,显然无法再使用数组保存使用数组保存n存储一个班的学生信息,假定一个班容纳20名学员JAVA集合框架包含的内容1 接口接口CollectionListMap2 具体类具体类ListArrayListVectorMap3 算法算法Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了现的问题了 Java集合框架位于集合框架位于java.util包中包中 Collections提供了对集合进提供了对集合进行排序、遍历等行排序、遍历等多种算法实现多种算法实现采用键采用键-值对的存储方式,值对的存储方式,长度可动态改变长度可动态改变采用线性列表的存储方式,采用线性列表的存储方式,长度可动态改变长度可动态改变SetList采用线性列表的存储方式,采用线性列表的存储方式,长度可动态改变长度可动态改变List了解内了解内容容HashtableHashMapLIST接口和ARRAYLIST类开发一套小型的新闻管理系统,要求如下:可以存储各类新闻标题(包含ID、名称、创建者、创建时间)可以获取新闻标题的总数可以逐条打印每条新闻标题的名称存储方式如何选择?存储方式如何选择?元素个数不确定元素个数不确定 使用集合类使用集合类 需要遍历元素需要遍历元素 存储对象如何确定?存储对象如何确定?类型:新闻标题类型:新闻标题 属性:属性:ID、名称、创建者、创建时间、名称、创建者、创建时间 LIST接口和ARRAYLIST类 n第一步,确定存储方式 1、ArrayList类是List接口的一个具体实现类2、ArrayList 对象实现了可变大小的数组3、随机访问和遍历元素时,它提供更好的性能元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10当元素个数增当元素个数增加为加为11个个元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10元素11创建了一个新的数组,把创建了一个新的数组,把原数组中元素复制进来原数组中元素复制进来 根据下标位置访问元素根据下标位置访问元素LIST接口和ARRAYLIST类第二步:确定存储对象1、创建类型:新闻标题2、包含属性:ID、名称、创建者、创建时间public class FirstLevelTitle private int id;/IDprivate String titleName;/名称名称private String creater;/创建者创建者private Date createTime;/创建时间创建时间public FirstLevelTitle(int id,String titleName,String creater,Date createTime)this.id=id;this.titleName=titleName;this.creater=creater;this.createTime=createTime;public String getTitleName()return titleName;public void setTitleName(String titleName)this.titleName=titleName;LIST接口和ARRAYLIST类 5-4第三步:具体实现1、按照顺序依次添加各类新闻标题2、获取新闻标题的总数3、根据位置获取相应新闻标题4、逐条打印每条新闻标题的名称public class FirstLevelTitleDB1 public static void main(String args)FirstLevelTitle car=new FirstLevelTitle(1,汽车汽车,管理员管理员,new Date();FirstLevelTitle test=new FirstLevelTitle(2,高考高考,管理员管理员,new Date();List newsTitleList=new ArrayList();newsTitleList.add(car);newsTitleList.add(test);System.out.println(新闻标题数目为:新闻标题数目为:+newsTitleList.size()+条条);print(newsTitleList);public static void print(List newsList)for(int i=0;i newsList.size();i+)FirstLevelTitle title=(FirstLevelTitle)newsList.get(i);System.out.println(i+1+:+title.getTitleName();123顺序添加,位置从顺序添加,位置从0开始开始新闻标题数目为:新闻标题数目为:2条条1:汽车汽车2:高考高考控制台输出控制台输出4从集合中取出后为从集合中取出后为Object类型,需类型,需要进行强制类型转换要进行强制类型转换LIST接口和ARRAYLIST类第三步:具体实现1、在指定的位置添加新闻标题2、判断是否已经存储了某条新闻标题3、删除指定位置处的某一新闻标题public class FirstLevelTitleDB2 public static void main(String args)FirstLevelTitle car=new FirstLevelTitle(1,汽车汽车,网站管理员网站管理员,new Date();FirstLevelTitle test=new FirstLevelTitle(2,高考高考,网站管理员网站管理员,new Date();FirstLevelTitle house=new FirstLevelTitle(3,房产房产,网站管理员网站管理员,new Date();List newsTitleList=new ArrayList();newsTitleList.add(car);newsTitleList.add(test);newsTitleList.add(2,house);if(newsTitleList.contains(test)System.out.println(有高考的新闻有高考的新闻);elseSystem.out.println(没有高考的新闻没有高考的新闻);newsTitleList.remove(1);System.out.println(新闻标题数目为:新闻标题数目为:+newsTitleList.size()+条条);123在指定的位置添加元素在指定的位置添加元素,后续元素依次后移后续元素依次后移 有高考的新闻有高考的新闻新闻标题数目为:新闻标题数目为:2条条控制台输出控制台输出LIST接口中定义的常用方法,boolean add(Object o);,int size();,Object get(int index);,void add(int index,Object o);插入,boolean contains(Object o);,boolean remove(Object o);小结1创建一个类Cat 包含属性name,在构造方法中进行初始化 添加一个方法show(),用以打印name属性的值 创建一个类CatTest,添加main方法,实现 创建一个ArrayList,向其中添加几个Cat对象 遍历该集合,并且对每个Cat对象调用sh
展开阅读全文