字符串(String类型看做是对象,引用类型)
字符串相关基础知识
1. 在java中字符串必须包含一对双引号之间
“abcd”
2.声明方式
String str;
3.使用字符串变量时要先初始化
4.创建字符串
1.String s=new String(“good”);
开辟两块推内存空间,有一块成为垃圾,并且不能自动入池,需要使用intern()手工入池
2. String str; str=”good”
只开辟一块推内存空间,字符串内容可以自动入池,以供下次使用。
5.String s=new String(“good”); 创建了几个String类的实例化对象?
创建了两个实例化对象,一个是String类的匿名对象"good",另一个是关键字new实例化的String类对象
6.字符串一旦声明,则不可更改,属于final类型
每一次字符串进行字符串连接操作时都会产生垃圾,并且字符串的内容没有任何改变,改变的只是字符串的内存地址指向,所以对于字符串的修改操作是有垃圾产生的
字符串常用的相关方法
5.2连接字符串
11.连接多个字符串
String a=new String("hello");
String b=new String("world");
System.out.println(a+" "+b);
2. 连接其他数据类型
int booktime=4;
float sleeptime=2.5f;//默认为double
String a=new String("睡觉的时间为");
String b=new String("看书的时间为");
System.out.println(a+sleeptime+b+booktime);
5.3获取字符串信息
1. 获取字符串长度
String a=new String("睡觉的时间为");
int size=a.length();
System.out.println(size);//6
2. 字符串查找
1. indexOf()
String a=new String("睡觉的时间为");
int size=a.indexOf("的");
System.out.println(size);//从0开始
2. lastIndexOf()
String a=new String("睡觉的时间为的");
int size=a.lastIndexOf("的");
System.out.println(size);//6 最后一次出现
3. charAt(int index) 取得索引位置的字符
String b=new String("hello");
char size=b.charAt(4);
System.out.println(size);//o
5.4字符串操作
1. 获取子字符串
1. substring(int beginindex)
String b=new String("hello");
String c=b.substring(1);
System.out.println(c);//ello
2.substring(int beginindex ,int endindex)
String b=new String("hello");
String c=b.substring(0,3);
System.out.println(c);//hel 不包括结束字符
2.去除空格
String b=new String(" hello ");
String c=b.trim();
int e=c.length();
int f=b.length();
System.out.println(f);//7
System.out.println(b);//“ hello “ 最前和最后的空格
System.out.println(c);//”hello”
System.out.println(e);//5
3.字符串替换
Str.replace()
String a=new String("hello");
String b=a.replace("h", "e");
System.out.println(b); //eello
4. 判断字符串的开始与结尾
String a=new String("hello");
boolean num1=a.endsWith("o");
System.out.println(num1);//true
String a=new String("hello");
boolean num1=a.startsWith("h");
System.out.println(num1);//true
5. 判断字符串是否相等
String a=new String("hello");
String b=new String("hello");
boolean c=(a==b);
System.out.println(c);//false 虽然内容相同,但是对象引用不同,分配的内存地址不同
1. equals(String otheString)
String a=new String("hello");
String b=new String("hello");
boolean c=a.equals(b);
System.out.println(c);//true
2. equalsignoreCase(Sring otherstr)
String a=new String("hello");
String b=new String("Hello");
boolean c=a.equalsIgnoreCase(b);
System.out.println(c);//true
6. 按字典顺序比较两个字符串
String str=new String("b");
String str2=new String("a");
String str3=new String("c");
System.out.println("abc") ;
System.out.println(str+" compareto" +str2 +":"+str.compareTo(str2));
System.out.println(str+" compareto" +str3 +":"+str.compareTo(str3));
//b a 返回1 str与str2对比
//b c 返回-1 str与str3对比
7. 字母大小写转换
1. toLowerCase()
String str=new String("B");
String str2=new String("a");
String str3=new String("c");
String str4=str.toLowerCase();
System.out.println(str4);//b
2. toUpperCase()
String str=new String("baBa");
String str4=str.toUpperCase();
System.out.println(str4);//BABA
8. 字符串分割
1. split(String sign)
2. Split(String sign,int limit)
String str=new String("192.168.1.1");
String[] firstArray=str.split("\.");//全部分割,存储在字符型数组
String[] secondArray=str.split("\.",2);//分割次数 分割后的数组数
System.out.println(str);
for(String a:firstArray) {
System.out.print("["+a+"]");}//字符型数组的输出方式
System.out.println();//换行
for(String a:secondArray) {
System.out.print("["+a+"]");
}
System.out.println();
}
字符串与字节
public String(byte[] bytes) 将全部的字节数组变为字符串
public String(byte[] bytes,int offset,int length) 将部分的字节数组变为字符串
public byte[] getBytes() 将字符串变为字节数组
public byte[] getBytes(String charsetName) throws UnsupportedEncoingException 字符串转码操作