常用的有:
- String类和StringBuffer类。
- getClass方法。
- toString方法。
- BigDecimal类。
- Calendar类。
- System类。
1.String类
在Java中定义了String和SringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法,它们都位在java.lang包中,因此不需要导包就可以直接使用。
1.1.String类的初始化
在操作String类之前,首先需要对String类进行初始化。在Java中可以通过以下两种方式对String类进行初始化:
- 使用字符串常量直接初始化一个String对象
String str1 = "abc";
- 使用String的构造方法初始化字符串对象
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容为空的字符串 |
String(char[] value) | 根据指定的字符数组创建对象 |
String(String value) | 根据指定的字符串内容创建对象 |
public class Demo06 {
public static void main(String[] args) throws Exception {
//创建一个空的字符串
String s1 = new String();
//创建一个内容为abcd的字符串
String s2 = new String("abcd");
//创建一个内容为字符数组的字符串
char[] charArray = new char[]{'A','B','C'};
String s3 = new String(charArray);
System.out.println("a"+s1+"b"); //ab
System.out.println(s2); //abcd
System.out.println(s3); //ABC
}
}
1.2.String常用方法
1.public int length():
返回字符串的长度
2.public char charAt(int index);
根据下标获取字符
3.public boolean contains (String str):
判断当前字符中是否包含str
4.public char [] toCharArray():
将字符 转换成数组
5.public int indexOf(String str):
查找str首次出现的下标,存在,则返回改下标;不存在,则返回-1
6.public int lastIndexOf(String str):
查找字符串在当前字符串中最后一次出现的下表索引
7.public String trim ():
去掉字符串前后的空格
8.public String toUpperCase():
将小写转成大写
9.public boolean endWith(String str):
判断字符串是否以str结尾
10.public String replace(hcar oldChar,char newChar);
将旧字符替换成新字符串
11.public String [] split(String str):
根据str做拆分。
public class Demo05 {
public static void main(String[] args) {
String str = "this is a text";
//1.将str中的单词单独获取出来了
String[] arr = str.split(" ");
for (String s : arr) {
System.out.println(s);
}
//2.在str中的text替换为practice
String s1 = str.replace("text","practice");
System.out.println(s1); //this is a practice
//3.在text前面插入一个easy
String s2 = str.replace("text","easy text");
System.out.println(s2); //this is a easy text
//4.在每个单词的首字母改为大写
for (int i = 0; i < arr.length; i++) {
char first = arr[i].charAt(0);
//把第一个字符转成大写
char upperfirst = Character.toUpperCase(first);
String news = upperfirst + arr[i].substring(1);
System.out.print(news+" "); //This Is A Text
}
}
}
1.3.String类和StringBuffer类的区别
(1)StringBuffer类也称为字符串缓冲区:便于对字符串的修改,StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的Stringuffer 对象。针对添加和删除字符的操作,StringBuffer类提供了一系列的方法。
(2)主要区别:
1.String: 对象不可变的字符序列,对象是常量,在常量池。
2.String 作为参数传递类似于基本数据类型作为参数传递 (对象的不可改变性)。
3.StringBuffer: 对象可变的字符序列,对象是变量,在堆上。
4.StringBuffer 作为参数传递就是引用数据类型传递(对象可以改变)。
(3)针对添加和删除字符的操作,StringBuffer类提供了一系列的方法,具体如下表示。
方法声明 | 功能描述 |
---|---|
StringBuffer append(char c) | 添加参数到StringBuffer对象中 |
StringBuffer insert( int offset,String str) | 将字符串中的offset位置插人字符串str |
StringBuffer deleteCharAt(int index) | 移除此序列指定位置的字符 |
StringBuffer delete(int start,int end) | 删除StringBuffer对象中指定范围的字符或字符串序列 |
StringBuffer replace( int start,int end,String s) | 在Stringuffer对象中替换指定的字符或字符串序列 |
void setCharAt(int index, char ch) | 修改指定位置index处的字符序列 |
String toString() | 返回StringBuffer缓冲区中的字符串 |
StringBuffer reverse() | 将此字符序列用其反转形式取代 |
2.getClass方法
(1)getClass()方法是获得调用该方法的对象的类;getClass().getName()可以得到该类的路径;
(2)通过getClass()方法得到该对象类Class后,可以通过Class获取这个类中的相关属性和方法;
public class Demo07 {
int id;
private String name;
public Demo07(int id,String name){
super();
this.id = id;
this.name = name;
}
}
public class Text {
public static void main(String[] args) {
Demo07 d = new Demo07(1,"demo");
System.out.println(d.getClass());
System.out.println(d.getClass().getName());
System.out.println(d.getClass().getSimpleName());
System.out.println(d.id);
}
}
运行结果:
class com.oop.demo13.Demo07
com.oop.demo13.Demo07
Demo07
1
3.toString方法
(1)拼接对象的地址值
public class Demo08 {
private String name = "hjx";
private int age = 18;
private char gender = '男';
private boolean married = false;
public static void main(String[] args) {
Demo08 d = new Demo08();
System.out.println(d.toString());
}
}
运行结果:
com.oop.demo13.Demo08@1b6d3586
(2)在实际开发中,通常希望toString()方法返回的不只是基本信息,所以Object的toString()方法通常会被重写。为了获取的是对象的属性值需要重写toString()方法
public class Demo08 {
private String name = "hjx";
private int age = 18;
private char gender = '男';
private boolean married = false;
//重写toString方法
@Override
public String toString() {
return "作者/Demo08{"+"姓名:"+name+",年龄:"+age+",性别:"+gender+",是否结婚:"+married+"}";
}
public static void main(String[] args) {
Demo08 d = new Demo08();
System.out.println(d.toString());
}
}
运行结果:
作者/Demo08{姓名:hjx,年龄:18,性别:男,是否结婚:false}
4.BigDecimal类
5.Calendar类
6.System类
System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。