String类
一、String类概述
适用于描述字符串事物。
它提供了多个方法对字符串进行操作。
//字符串的最大特点:一旦被初始化就不可以被改变
String s1=new String(“abc”);
//s1和s2 有什么区别?
s1在内存中有一个对象
s2在内存中有两个对象(new和“abc”)
System.ou.println(s1==s2);
System.ou.println(s1.equals(s2));//String类复写了object类中equals方法
//该方法用于判断字符串是否相同
二、String类常见操作:
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在字符串中出现的位置
2,判断
2.1字符串中是否包含某一个子字符串。
boolean contains(str);
2.2字符中是否有内容。
boolean startsWith(str);//原来就是判断长度是否为0,为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)//将字符数组中的一部分转成字符串。
静态方法:
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);
//3+””;//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的
4,替换
String replace(oldchar,newchar)
5,切割
String[] split(regex)
6,子串,获取字符串中的一部分。
String substring(begin);//从指定位置开始到结尾,如果脚标不存在,会出现字符串脚标越界。
String substring(begin,end);//包含头,不包含尾 s.substring(0,s.length())
7,转换,去除空格,比较
7.1将字符串转成大写或者小写
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();
7.3对两个字符串进行自然
Int compareTo(string);
class StringMethodDemo
{
//7转换,去除空格,比较
public static void method_tra()
{
String str = " Hello Java!3 ";
//1.大小写互换
sop(str.toUpperCase());
sop(str.toLowerCase());
//2.去除空格
sop(str.trim());
//3.比较
String str1 = " Hello Java!5 ";
sop(str.compareTo(str1));
}
//6子串,获取字符串中的一部分。
public static void method_substring()
{
String str = "abcdefgh";
sop(str.substring(2));//从指定位置开始至结尾.如果角标不存在,会出现角标越界异常
sop(str.substring(1,4));//包含头,不包含尾。s.substring(0,s.length())
}
//5切割
public static void method_split()
{
String s = "lisi,zhangsan,wangwu";
String[] arr = s.split(",");
for(int x=0;x<arr.length;x++)
sop(arr[x]);
}
//4替换
public static void method_replace()
{
String s = "hello java";
String s1 = s.replace('a','n');
String s2 = s.replace("java","world");
sop("s="+s);
sop("s1="+s1);
sop("s2="+s2);
}
//3转换
public static void methid_trans()
{
//1.字符数组->字符串
char[] arr = {'a','b','c','d','e'};
String s1 = new String(arr);
String s2 = new String(arr,1,2);
String s3 = String.copyValueOf(arr);
String s4 = String.copyValueOf(arr);
sop("s1="+s1);
sop("s2="+s2);
sop("s3="+s3);
sop("s4="+s3);
//2.字符串->字符数组
String str = "abcd";
char[] chArr = str.toCharArray();
// sopArray(chArr);
//3.字节数组->字符串
byte[] arr1 = {53,55,47,57};//ASCII值
String s5 = new String(arr1);
sop("s5="+s5);
//4.字符串->字节数组
byte[] byt = str.getBytes();
sopArray(byt);
//5.基本数据类型->字符串
int x = 5;
String s6 = String.valueOf(x);
sop("s6="+s6);
}
//2判断
public static void method_is()
{
String str = "ArrayDemo.java";
//判断文件名是否以Array开头
sop(str.startsWith("Array"));
//判断文件名是否以Array开头
sop(str.endsWith("java"));
//判断文件名是否包含Demo
sop(str.contains("Demo"));
}
//1获取
public static void method_get()
{
String str = "abcdsdf";
//长度
sop(str.length());
//根据索引获取字符
sop(str.charAt(4));
//根据字符获取索引
sop(str.indexOf("ds",2));//如果没有找到,返回-1
//反向索引一个字符出现的位置
sop(str.lastIndexOf("d"));
}
public static void main(String[] args)
{
method_tra();
// method_substring();
// method_split();
// method_replace();
// methid_trans();
// method_is();
// method_get();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void sopArray(byte[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
三、StringBuffer
是字符串缓冲区(是一个容器)
特点:
1,长度是可变化的
2,可以字节操作多个数据类型
3,最终会通过toString方法变成字符串。
常见操作
可以CURD:Create_Update_Read_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(star,end,string);
void setCharAt(int index,char ch);
5,反转
StringBuffer reverse();
6,将缓冲区中指定数据存储到指定字符数组中
Void getChars(int srcBegin,int srcEnd,char[] dst, int dstBegin)
程序范例:
public class StringBufferDemo
{
//将缓冲区中指定数据存储到指定字符数组中
public static void method_6()
{
StringBuilder sb = new StringBuilder("HelloJava");
char[] chs = new char[9];
sb.getChars(1,4,chs,1);
for(int x=0;x<chs.length;x++)
sop("chs["+x+"]="+chs[x]);
}
//删除
public static void method_delete()
{
StringBuffer sb = new StringBuffer("HelloWorld");
//删除指定部分
sb.delete(2,4);
sop(sb.toString());
//删除指定位置字符
sb.deleteCharAt(3);
sop(sb.toString());
//清空缓冲区
sb.delete(0,sb.length());
sop(sb.toString());
}
//存储
public static void method_add()
{
StringBuffer sb = new StringBuffer();
//添加
sb.append("abcef").append(true).append(23);
sop(sb.toString());
//插入
sb.insert(2,"QQ");
sop(sb.toString());
}
public static void main(String[] args)
{
method_6();
method_delete();
method_add();
}
public static void sop(String str)
{
System.out.println(str);
}
}
JDK1.5版本之后出现了StringBuilder
StringBuffer是线程同步,安全
StringBuilder是线程不同步,不安全
后续开发建议使用StringBuilder
方法与Buffer相同
升级3因素
提高效率,简化书写,提升安全性
基本数据类型包装类
基本数据类型 基本数据类型包装类
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用
就是用于基本数据类型和字符串类型之间做转换
1,基本数据类型转成字符串
基本数据类型+””
基本数据类型.toString(基本数据类型值)
例如:Integer.toString(34);//将整数34变成字符串”34”
2,字符串转成基本数据类型
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt(“123”);
double d = Double.parseDouble(“12.34”);
boolean b=Boolean.parseBoolean(“ture”);
3,十进制转成其他进制
toBinaryString();
toHexString();
toOctalString();
4,其他进制转十进制
parseInt(string,radix);