第八章 常用实用类
第八章内容不少,分清重点,
小结
(1)熟练掌握String类的常用方法,这些方法对于有效地处理字符序列信息是非常重要的。
(2)掌握String类和StringBuffer类的不同,以及二者之间的关系。
(3)使用StringTokenizer,Scanner类分析字符串,获取字符串中被分隔符分隔的单词。
(4)当程序需要处理时间时,使用Date和Calender类。
(5)如果需要处理特别大的整数,使用BigInteger类。
(6)当需要格式化日期和数字时使用String类的静态方法format。
Java专门提供了用来处理字符序列的String类。
String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。
需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。
这些方法真的是有点多了,我放图。。。。图会比较清楚,不懂的再看下面所谓的官方文字解释
图片来源 ?点这个
?
1.字符串:就是由多个字符组成的一串数据,也可以看成是一个字符数组。
2.字符串字面值“abc”也可以看成是一个字符串对象。
3.字符串是常量,一旦被赋值,(值)不可以再更改。
4.和其它对象一样,可以使用关键字和构造方法来创建String对象。
5.字面值对象和构造方法创建对象的区别
?
1.public int length():
获取一个字符串的长度
2.public boolean equals(String s):
比较当前字符串对象的实体是否与参数s指定的字符串的实体相同
3.public boolean startsWith(String s)
public boolean endsWith(String s)方法:
判断当前字符串对象的前缀(后缀)是否是参数s指定的字符串
tring tom = “天气预报,阴有小雨”,jerry = “比赛结果,中国队赢得胜利”;
tom.startsWith(“天气”)的值是true;
tom.endsWith(“大雨”)的值是false,
4. public int compareTo(String s):
按字典序与参数s指定的字符串比较大小
如果当前字符串与s相同,该方法返回值0;
如果当前字符串对象大于s,该方法返回正值;
如果小于s,该方法返回负值。
例如:
字符a在Unicode表中的排序位置是97、字符b是98,那么对于
String str = “abcde”; str.compareTo(“boy”)小于0;
其相关方法 public int compareToIgnoreCase(String s),
使用java.util包中的Arrays调用sort方法和自己编写SortString类中的sort方法将一个字符串数组按字典序排列 看下面例题1
5.public boolean contains(String s):
判断当前字符串对象是否含有参数指定的字符串s
例如 tom=“student”;那么tom.contains(“stu”)的值就是true;
而tom.contains(“ok”)的值是false。
6. public int indexOf (String s):
从当前字符串的头开始检索字符串s,并返回首次出现s的位置,
其相关方法:
indexOf(String s ,int startpoint)
lastIndexOf (String s)
例如
String tom = “I am a good cat”;
tom.indexOf(“a”);//值是2
tom.indexOf(“good”,2);//值是7
tom.indexOf(“a”,7);//值是13
tom.indexOf(“w”,2);//值是-1
7. public String substring(int startpoint):
获得一个当前字符串的子串
其相关方法:substring(int start ,int end)
例如: String tom = “我喜欢篮球”;
String s = tom.substring(1,3);
那么s是:“喜欢”
8.public String trim() :
得到一个s去掉前后空格后的字符串对象。
/*例题1*/
import java.util.*;
public class Example8_2 {
public static void main(String args[]) {
String [] a={"melon","apple","pear","banana"};
String [] b={"西瓜","苹果","梨","香蕉"};
System.out.println("使用SortString类的方法按字典序排列数组a:");
SortString.sort(a);
for(int i=0;i
?
类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由"数字"字符组成的字符串,转化为相应的基本数据类型。如:
?
?
1.字符串与字符、字节数组
◆ String 类的构造方法:
String(char[])和String(char[],int offset,int length)
分别用字符数组中的全部字符和部分字符创建字符串对象
◆ String类提供了将字符串存放到数组中的方法:
public void getChars(int start,int end,char c[],int offset )
◆将字符串中的全部字符存放在一个字符数组中的方法:
public char[] toCharArray()
2.字符串与字节数组
◆ String(byte[])用指定的字节数组构造一个字符串对象。
String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。
◆ public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。
◆ public byte[] getBytes(String charsetName)
使用参数指定字符编码,将当前字符串转化为一个字节数组。
?
?
正则表达式:含有一些具有特殊意义字符的字符串
常用的元字符及意义,最明白的总结
点这个
说大实话,我分享很多次这个链接了,✨w3cshool真的很有用啊
(1)前面提到String对象一旦创建,那么实体是不可以再发生改变的
如: String s = new String(“我喜欢散步");
但是!!!
StringBuffer类能创建可修改的字符串序列,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。一个StringBuffer对象调用append方法可以追加字符序列,如图819所示。例如:
StringBuffer s = new StringBuffer(“我喜欢”);
s.append(“玩篮球”);
(2)StringBuffer类有三个构造方法:
(3)StringBuffer 类的常用方法
使用Scanner类从字符串中解析程序所需要的数据。
(1).使用默认分隔标记解析字符串
创建Scanner对象,并将要解析的字符串传递给所构造的对象,
例如 String NBA = “I Love This Game”;
如下构造一个Scanner对象:
Scanner scanner = new Scanner(NBA);
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
next()与nextLine()区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next()不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白
(2)
◆ scanner可以调用nextInt()或nextDouble()方法将数字型单词转化为int或 double数据返回。
◆ 如果单词不是数字型单词,scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回该非数字化单词。
import java.util.*;
public class Example8_13 {
public static void main(String[] args) {
String cost="TV cost 876 dollar.Computer cost 2398 dollar.telephone cost 1278 dollars.";
Scanner scanner=new Scanner(cost);
double sum=0;
while(scanner.hasNext()) {
try {
double price=scanner.nextDouble();
sum=sum+price;
System.out.println(price);
}
catch(InputMismatchException exp) {
String t=scanner.next();
}
}
System.out.println("总消费:"+sum+"元");
}
}
1.使用Date类的无参数构造方法创建的对象可以获取本地当前时间。 Date()
例: Date nowTime=new Date();
当前nowTime对象中含有的日期、时间就是创建nowTime对象时的本地计算机的日期和时间。例如,假设当前时间是:2011年3月10日23:05:32(CST时区),那么
System.out.println(nowTime); 输出结果是:Thu Mar 10 23:05:32 CST 2011。
Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年
2.使用带参数的构造方法 Date(long time)
计算机系统将其自身的时间的“公元”设置在1970年1月1日0时(格林威治时间),可以根据这个时间使用Date的带参数的构造方法:Date(long time)来创建一个Date对象
如Date date1=new Date(1000), date2=new Date(-1000);
3. System类的静态方法 public long currentTimeMillis() 获取系统当前时间