String s1 = "abc";//s1是一个类类型变量,"abc"是一个对象。
字符串最大特点:一旦被初始化就不可以被改变。
String类复写了Object类中equals方法,该方法用于判断字符串是否相同。
比较:
①String s1 = "abc";
②String s1 = new String("abc");
①只有一个对象,②有两个对象。
String类适用于描述字符串事物。
那么它就提供了多个方法对字符串进行操作。
常见操作:
1、获取
1、1字符串中的包含的字符数,也就是字符串的长度。int length();
1、2根据位置获取位置上某个字符。char charAt(int index);
1、3根据字符获取该字符在字符串中位置。
int indexOf(int ch);返回的是ch在字符串中第一次出现位置。传入int型变量,因为是根据ASCII码查询。
int indexOf(int ch,int index);从指定位置开始查找。
2、判断
2、1字符串中是否包含某一个子串。boolean contains(str);
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1表示该str不在字符串中。
所以,也可以用于对指定判断是否包含。而且该方法既可以判断,又可以获取出现位置。
2、2字符串中是否有内容。boolean isEmpty();
2、3字符串是否已指定内容开头。boolean startsWith(str);
2、4字符串是否是以指定内容结尾。boolean endsWith(str);
2、5判断字符串的内容是否相同。复写了object类中的equals方法。boolean equals(str);
2、6判断内容是否相同,并忽略大小写。boolean equalsIgnoreCase();
3、转换
3、1将字符数组转成字符串。
构造函数:
String(char[]);
String(char[],offset,count):将字符数组一部分转成字符串。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[]);
3、2将字符串转成字符数组。
char[] toCharArray();
3、3将字节数组转成字符串。
String(byte[]);
String(byte[],offset,count);将字符数组中的一部分转成字符串。
3、4将字符串转成字节数组。
byte[] getBytes();
3、5将基本数据类型转成字符串。
static String valueOf(int);
static String valueOf(double);
4、替换
String replace(oldchar,newchar);
5、切割
String[] split(regex);
6、子串
获取字符串中的一部分。
String substring(begin);//从指定位置开始至结尾。
String substring(begin,end);//包含头,不包含尾。
7、转换,去除空格,比较
7、1将字符串转成大写或小写
String toUpperCase();//变大写
String toLowerCase();//变小写
7、2将字符串两端的多个空格去除。
String trim();
7、3对两个字符串进行自然顺序的比较。
int compareTo(string);
StringBuffer
StringBuffer是字符串缓冲区。是一个容器。
特点:
1、长度是可变换的。
2、可以直接操作多个数据类型。
3、最终会通过toString方法变成字符串。
常见操作:
C create U update R read D delete
1、存储。
StringBuffer append:将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):将数据插入到指定Index位置。
2、删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置字符。
3、获取。
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4、修改。
StringBuffer replace(start,end,string)
void setCharAt(int index,char ch)
5、反转
StringBuffer reverse()
6、void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
JDK1.5版本之后出现了StringBulider
StringBuffer是线程同步。
StringBulider是线程不同步。
以后开发,建议使用StringBuilder
JDK升级三个因素:
1、提高效率。
2、简化书写。
3、提高安全性。
基本数据类型对象包装类
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常作用:
用于基本数据类型和字符串类型之间做转换。
基本数据类型转成字符串。
基本数据类型+"";
基本数据类型.toString(基本数据类型值);//Integer.toString(34);将整数34变成"34";
字符串转成基本数据类型。
xxx a = Xxx.parseXxx(String);
//int a = Integer.parseInt("123");
//boolean a = Boolean.parseBoolean("true");
十进制转成其他进制。
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(String str,int radix);//str指需要转的数据,radix指进制,取值有2、8、16。
JDK1.5版本后出现的新特性。
Integer x = 4;//自动装箱,相当于Integer x = new Integer(4);
x = x + 2;//x+2:x进行自动拆箱。变成int类型,和2进行加法运算。再将和进行装箱赋值给x。
Integer m = 128;
Integer n = 128;
System.out.println("m==n"+(m==n));//false
Integer m = 127;
Integer n = 127;
System.out.println("m==n"+(m==n));//true。因为a和b指向了同一个Integer对象。
//因为当数值在byte范围内时,对于新特性,如果该数值已经存在,则不会再开辟新空间。