8章 常用实用类

             String

  1. 构造字符串对象

可以使用String类声明对象并创建对象,例如:

 String  s = new String("we are students");

 String  t = new String("we are students");

用户无法输出String对象的引用:

Syste.out.println(s);

输出的是对象的实体,即字符序列we are students

String类还有两个较常用的构造方法。

1String (char a[])用一个字符数组a创建一个String对象,如:

     char a[] = {'J','a','v','a'};

     String s = new String(a);

过程相当于String s = new String("Java");

(2String(char a[],int startIndex,int count) 提取字符数组a中的一部分字符创建一个String对象,参数startIndexcount分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数,如:

char a[] = {'','','','','','','','','',''};

 String s = new String(a,2,4);

相当于 String s = new String("贰叁肆伍");

8.1.2  字符串的并置

String对象可以用“+”进行并置运算,即首相接得到一个新的String对象。

String  you = "";

String  hi = "";

String  testOne;

public class Example8_1 { public static void main(String args[]) { String hello = "你好"; String testOne = "你"+"好"; //【代码1】 System.out.println(hello == testOne); //输出结果是true System.out.println("你好" == testOne); //输出结果是true System.out.println("你好" == hello); //输出结果是true String you = "你"; String hi = "好"; String testTwo = you+hi; //【代码2】 System.out.println(hello == testTwo); //输出结果是false String testThree = you+hi; System.out.println(testTwo == testThree); //输出结果是false } }

8.1.2    String 类的常用方法

  • public int length():获取一个字符串的长度
  • public boolean equals(String s):判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同             
  • public boolean startsWith(String s)判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列
  •  public int compareTo(String s):按字典序与参数s指定的字符序列比较大小,如果当前String对象的字符序列与s的相同,该方法返回值0,如果大于s的字符序列,该方法返回正值;如果小于s的字符序列,该方法返回负值

 

  • public boolean contains(String s):String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列,例如,tom="student",那么tom.contains("stu")的值就是true,而tom.contains("ok")的值是false。
  • public int indexOf (String str):String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1,其相关方法:

      indexOf(String s ,int startpoint)

      lastIndexOf (String s)

  • . public String substring(int startpoint):字符串对象调用该方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的startpoint位置至最后位置上的字符所得到的字符序列。String对象调用substring(int start ,int end)方法获得一个新的String对象,新的String对象的字符序列是复制当前String对象的字符序列中的start位置至end–1位置上的字符所得到的字符序列。
  • public String trim() :得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列。
  •  

8.1.3  符串与基本数据的相互转化

  •       public static int parseInt(String s)可以将由“数字”字符组成的字符串,如“876”,转化为int型数据

public static byte parseByte(String s) throws NumberFormatException public static short parseShort(String s) throws NumberFormatException public static long parseLong(String s) throws NumberFormatException public static float parseFloat(String s) throws NumberFormatException public static double parseDouble(String s) throws NumberFormatException

  • 可以使用String 类的类方法

       public static String valueOf(byte n)

       public static String valueOf(int n)

       public static String valueOf(long n) 

       public static String valueOf(float n)

public static String valueOf(double n) 将形如123、1232.98等数值转化为字符串,如: String str = String.valueOf(12313.9876);

 

8.1.5   字符串与字符、字节数组_1

String 类的构造方法:

String(char[]);

String(char[],int offset,int length)分别用字符数组中的全部字符和部分字符创建字符串对象

8. 2 StringTokenizer类

StringTokenizer类在java.util包中,有两个常用的构造方法:

StringTokenizer(String s):为String对象s构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab符、进纸符做分隔标记。

StringTokenizer(String s, String delim为String对象s构造一个分析器。参数delim的字符序列中的字符的任意排列被作为分隔标记。

StringTokenizer对象称作一个字符串分析器可以使用下列方法:

(1) nextToken():逐个获取字符串中的语言符号(单词),字符串分析器中的负责计数的变量的值就自动减一  。

(2) hasMoreTokens():只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。

(3)countTokens():得到分析器中计数变量的值。

8. 3     Scanner类

使用正则表达式作为分隔标记解析字符串

Scanner对象可以调用 useDelimiter(正则表达式); 方法将一个正则表达式作为分隔标记,即和正则表达式匹配的字符串都是分隔标记。

StringBuffer类

String对象的字符序列是不可修改的,也就是说,String对象的字符序列的字符不能被修改、删除,即String对象的实体是不可以再发生变化的.

StringBuffer类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列。

 

8.4   StringBuffer类_续

1) StringBuffer append(String s):将String对象s的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

   StringBuffer append(int n):将int型数据n转化为String对象,再把该String对象的字符序列追加到当前StringBuffer对象的字符序列中,并返回当前StringBuffer对象的引用

   StringBuffer append(Object o):将一个Object对象o的字符序列表示追加到当前String- Buffer对象的字符序列中,并返回当前StringBuffer对象的引用

类似的方法还有:

   StringBuffer append(long n),StringBuffer append(boolean n),

   StringBuffer append(float n),StringBuffer append(double n),

   StringBuffer append(char n)

 

2)public chat charAt(int n ):得到参数n指定的置上的单个字符

   public void setCharAt(int n ,char ch):将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换

3)StringBuffer insert(int index, String str) :将参数str指定的字符串插入到参数index指定的位置

4)public StringBuffer reverse() :将该对象实体中的字符翻转

5)StringBuffer delete(int startIndex, int endIndex):从当前StringBuffer对象实体中的字符串中删除一个子字符串

   其相关方法:deleteCharAt(int index) 删除当前StringBuffer对象实体的字符串中index位置处的一个字符。

6)StringBuffer replace(int startIndex,int endIndex,String str):将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换   

8.5   Date与Calendar类

  • Date类在java.util包中.Date类的构造方法之一:Date()使用Date类的无参数构造方法创建的对象可以获取本地当前时间。
  • Date(long time)使用long型参数创建指定的时间
  • System类的静态方法 public long currentTimeMillis() 获取系统当前时间。

Calendar类

Calendar类在java.util包中。

使用Calendar类的static方法 getInstance()可以初始化一个日历对象,

  如:Calendar calendar= Calendar.getInstance();

calendar对象可以调用方法:

public final void set(int year,int month,int date)

public final void set(int year,int month,int date,int hour,int minute)

public final void set(int year,int month, int date, int hour, int minute,int second)

其作用是将日历翻到任何一个时间

calendar对象可以调用方法:

public long getTimeInMillis() 可以将时间表示为毫秒。

public final void setTime(Date date)使用给定的 Date 设置此 Calendar 的时间

public int get(int field) :可以获取有关年份、月份、小时、星期等信息

8. 6  日期的格式化

2)日期列表

–format方法中的“日期列表”可以是用逗号分隔的Calendar对象或Date对象。

–format方法默认按从左到右的顺序使用“格式化模式”中的格式符来格式“日期列表”中对应的日期,而“格式化模式”中的普通字符保留原样。

3)格式化同一日期     

–可以在“格式化模式”中使用“<”,比如:"%ty-%<tm-%<td"中的三个格式符将格式化同一日期,即含有“<”的格式符和它前面的格式符格式同一个日期,例如:String s = String.format("%ty年%<tm月%<td日",new Date());那么%<tm和%<td都格式化new Date(),因此字符串s就是:"11年02月10日"。

8. 7    Math、BigInteger和Random类

Math类的常用类方法:

–public static long abs(double a)  返回a的绝对值。

–public static double max(double a,double b) 返回a、b的最大值。

–public static double min(double a,double b) 返回a、b的最小值。

–public static double random()  产生一个0到1之间的随机数(不包括0和1)。

–public static double pow(double a,double b) 返回a的b次幂。

–public static double sqrt(double a) 返回a的平方根。

–public static double log(double a)  返回a的对数。

–public static double sin(double a) 返回正弦值。

–public static double asin(double a)  返回反正弦值。

BigInteger类

可以使用构造方法:

–public BigInteger(String val)  构造一个十进制的BigInteger对象。

BigInteger类的常用类方法:

–public BigInteger add(BigInteger val)  返回当前大整数对象与参数指定的大整数对象的和。

–public BigInteger subtract(BigInteger val)返回当前大整数对象与参数指定的大整数对象的差。

–public BigInteger multiply(BigInteger val)返回当前大整数对象与参数指定的大整数对象的积。

–public BigInteger divide(BigInteger val)返回当前大整数对象与参数指定的大整数对象的商。

–public BigInteger remainder(BigInteger val)返回当前大整数对象与参数指定的大整数对象的余。

–public int compareTo(BigInteger val) 返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。

–public BigInteger pow(int a)  返回当前大整数对象的a次幂。

–public String toString()  返回当前大整数对象十进制的字符串表示。

–public String toString(int p)  返回当前大整数对象p进制的字符串表示。

3.Random类

使用Math类调用其类方法random()返回一个0至1之间的随机数(不包括0和1)。

例如,下列代码得到1至100之间的一个随机整数(包括1和100), (int)(Math.random()*100)+1;

Java提供了更为灵活的用于获得随机数的Random类(该类在java.util包中)

 Random类的如下构造方法:

public Random();

public Random(long seed);使用参数seek指定的种子创建一个Random对象

 

随机数生成器random调用不带参数的nextInt()方法:

         Random random=new Random();

             random.nextInt();

返回一个0至n之间(包括0,但不包括n)的随机数 随机数生成器random调用带参数的nextInt(int m)方法(参数m必须取正整数值)

例如:random.nextInt(100);返回一个0至100之间的随机整数(包括0,但不包括100)。

总结

String类的常用方法。

String类的和StringBuffer类的不同,以及二者之间的联系。

使用StringTokenizer,Scannner类分析字符串,获取字符串中被分隔符分隔的单词。

Date类和Calendar类获取时间和日期的用法。

如果需要处理特别大的整数,使用BigInteger类。

当需要格式化日期和数字时使用相关的格式化类及方法。