/*
================String====================================
字符串最大特点:一旦被初始化就不可以被改变,改变的只是指向,被双引号引起来的就是一个对象
字符串类中重写了equals方法
字符串中的常见操作:
1.获取:
1.1 字符串中包含的字符数,也就是字符串的长度
(返回值类型)int length():获取长度。
1.2 根据位置获取位置上某个字符.
char charAt(int index)
1.3 根据字符获取该字符在字符串中的位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex):从fromIndex指定的位置开始,获取str在字符串中出现的位置
int lastIndexOf(int ch) //反向索引一个字符出现的位置
2.判断:
2.1 字符串中是否包含某一个字符串
boolean contains(str);
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在
所以,也可以用于对指定字符串的判断是否包好
2.2 字符串中是否有内容
boolean isEmpty(); 长度为0返回true
2.3 字符串中是否以指定内容开头
boolean startsWith(str);
2.4 字符串中是否以指定内容结尾
boolean endsWith(str);
2.5 判断字符串内容是否相同,复写了Object类中的equals方法
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase(str);
3.转换:
3.1 将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串(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):将字节数组中的一部分转成字符串(offset开始的count个数)
3.4将字符串转成字节数组。
byte[] getBytes();
3.5将基本数据类型转换成字符串。
static String valueOf(int)
static String valueOf(double)
3+"";//==String.valueOf(3);
4.替换:
String replace(oldchar,newchar);(替换字符)
5.切割:
String[] split(regex); 例如:String s="zhang,li,wang"; String[] arr=s.split(","); 切完后逗号不存在,切一下一个变两,逗号是分隔符
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是字符串缓冲区,是一个容器(盆),
特点:长度是可以变化的 ,可以操作多个数据类型,最终会通过toString方法变成字符串
1.存储
StringBuffer append();将指定数据作为参数添加到已有数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定的index位置
2.删除
StringBuffer delete(start,end);包含头不包含尾
StringBuffer deleteCharAt(index);删除指定位置的字符
3.获取
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)
将字符串中指定开始到结尾的字符,以(dstBegin)指定的角标开始存放到字符数组dst中
=====================StringBuilder============================================================
StringBuilder:
StringBuffer是线程同步,StringBuilder是线程不同步
StringBuilder不同步可以自己加锁,运行速度比StringBuffer快
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";
字符串转成基本数据类型:
十进制转换成其他进制
其他进制转换成十进制
*/
public class Test1 {
public static void main(String[] args) {
String s1="abc";//"abc"代表一个对象
String s2=new String("abc");
//s1、s2是区别:s1代表一个对象,s2代表两个对象
String s3="abc";//和s1的指向内容相同
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1==s3);//true
Test1.method_get();
}
public static void method_get(){
String str="abcdeakpf";
//长度
sop(str.length());
//根据索引获取字符
sop(str.charAt(4));//超过字符串长度则出现越界异常
//根据字符获取索引
sop(str.indexOf('a',3));//如果没有找到,返回-1
//反向索引一个字符出现的位置
sop(str.lastIndexOf('a'));
}
public static void sop(Object obj){
System.out.println(obj);
}
}