第八章 常用实用类
第八章内容不少,分清重点,
小结
(1)熟练掌握String类的常用方法,这些方法对于有效地处理字符序列信息是非常重要的。
(2)掌握String类和StringBuffer类的不同,以及二者之间的关系。
(3)使用StringTokenizer,Scanner类分析字符串,获取字符串中被分隔符分隔的单词。
(4)当程序需要处理时间时,使用Date和Calender类。
(5)如果需要处理特别大的整数,使用BigInteger类。
(6)当需要格式化日期和数字时使用String类的静态方法format。
1.String类
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<a.length;i++) {
System.out.print(" "+a[i]);
}
System.out.println("");
System.out.println("使用类库中的Arrays类,按字典序排列数组b:");
Arrays.sort(b);
for(int i=0;i<b.length;i++) {
System.out.print(" "+b[i]);
}
}
}
class SortString {
public static void sort(String a[]) {
int count=0;
for(int i=0;i<a.length-1;i++) {
for(int j=i+1;j<a.length;j++) {
if(a[j].compareTo(a[i])<0) {
String temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
}
?
- 符串与基本数据的相互转化
- java.lang包中的Integer类调用其类方法:
public static int parseInt(String s)
可以将由“数字”字符组成的字符串,如“876”,转化为int型数据,
类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由"数字"字符组成的字符串,转化为相应的基本数据类型。如:
- 可以使用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);
?
- 对象的字符串表示
所有的类都默认是java.lang包中Object类的子类或间接子类。
Object类有一个public String toString()方法,一个对象通过调用该方法可以获得该对象的字符串表示。
一个对象调用toString()方法返回的字符串的一般形式为:
创建对象的类的名字@对象的引用的字符串表示
?
-
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)
使用参数指定字符编码,将当前字符串转化为一个字节数组。
?
- 字符串的加密算法
使用一个字符串password作为密码对另一个字符串sourceString进行加密 。将密码password存放到一个字符数组 char [] p = password.toCharArray();
假设数组p的长度为n,那么就将待加密的字符串sourceString按顺序以n个字符为一组,对每一组中的字符用数组a的对应字符做加法运算
?
正则表达式:含有一些具有特殊意义字符的字符串
常用的元字符及意义,最明白的总结
点这个
说大实话,我分享很多次这个链接了,✨w3cshool真的很有用啊
2.StringBuffer类
(1)前面提到String对象一旦创建,那么实体是不可以再发生改变的
如: String s = new String(“我喜欢散步");
但是!!!
StringBuffer类能创建可修改的字符串序列,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。一个StringBuffer对象调用append方法可以追加字符序列,如图819所示。例如:
StringBuffer s = new StringBuffer(“我喜欢”);
s.append(“玩篮球”);
(2)StringBuffer类有三个构造方法:
- 1.StringBuffer()
2.StringBuffer(int size)
3.StringBuffer(String s)
(3)StringBuffer 类的常用方法
- 1 . StringBuffer append(String s):将一个字符串对象追加到当前StringBuffer对象中
StringBuffer append(int n):将一个int型数据转化为字符串对象后再追加到当前StringBuffer对象中
StringBuffer append(Object o):将一个Object对象的字符串表示追加到当前StringBuffer对象中
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指定的字符串替换
3.scanner类
使用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+"元");
}
}
4.Date类与Calendar类
Date类在java.util包中。
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() 获取系统当前时间
calender类在java.util包中。
最近实在是不开心
剩下的去w3cshool看吧。。。。。。哎。。。。。。