String
在java中string是引用类型,本事是一个类,在java中,可以直接用“...”表示字符串,来进行创建对象。可以直接使用s1.方法,调用的是string下的各种方法
String s1 = "Hello!";
例如:
Scanner sc = new Scanner();
这两个可以看成用法是一样的,都是new一个新对象,只是string的用法相对比较特殊一些
toString方法:
· 字符串本身就是字符串,返回本身:直接输出s1这个字符串;以下两种写法都是可以输出这个字符串;
非String进行toString方法调用,则输出对应的地址
equals方法:
StringBuilder概述:
StringBuilder是一个可变的字符串类,可看成一个容器
这边的可变指的是StringBuilder对象中的内容是可变的
public static void main(String[] args) {
String s ="hello";
s+="world";
System.out.println(s);
}
我们可以从代码中了解到,通过string方法对字符串进行拼接操作时,每次拼接都会构造一个新的string对象,这样浪费时间浪费内存,而这种操作又是不可避免的;为了解决这个问题,我们可以通过StringBuilder进行解决问题;
String与StringBuilder区别:
1、String:内容是不可变的,所以导致在堆内存中,一个string占位一个
2、StringBuilder:内容是可变的
StringBuilder的构造方法
方法名 | 说明 |
public StringBuilder() | 创建一个空白可变字符串对象,不含任何内容 |
public StringBuilder(String s) | 根据字符串内容,创建可变的字符串对象 |
public static void main(String[] args) {
/*
* StringBuilder构造方法
* public StringBuilder();创建一个空白字符串对象,
* public StringBuilder(string s);构造一个有参的构造方法,根据字符串内容s
*/
//public StringBuilder();创建一个空白字符串对象
StringBuilder sb=new StringBuilder();
System.out.println("a"+sb+"b");//sb输出为空,长度为0
//public StringBuilder(string s);构造一个有参的构造方法,根据字符串内容s
StringBuilder sb2=new StringBuilder("hello");
System.out.println("a"+sb2+"b");//
}
}
StringBuilder的添加和反转
方法名 | 说明 |
public StringBuilde append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilde reverse() | 返回相反的字符序列 |
public static void main(String[] args) {
/*
* public StringBuilder append(任意类型):添加数据
* public StringBuilder reverse();返回相反的字符序列
*/
//public StringBuilder append(任意类型):添加数据
StringBuilder sb=new StringBuilder();
StringBuilder sb2 =sb.append("xiaoming");
System.out.println(sb);
System.out.println(sb2);
System.out.println(sb2==sb);//这边的sb与sb2是同一个对象,“==”比较的是地址,所以这边判断后,返回true
String a ="a";
String b = "a";
System.out.println(a==b);
String c = a+"a";
System.out.println(a==c);
sb.append("hhhh");
sb.append(8);
System.out.println(sb);
sb.append(99).append("djkfsjka").append(778);
System.out.println(sb);
}
}
这边的sb与sb2是同一个对象,“==”比较的是地址,所以这边判断后,返回true
append返回的是对象本身
所以可以通过对象.append(输入类型)进行拼接,可进行对应的链式编程:因为他调用后,返回的是对象,所以又可以通过对象调append方法,这样一系列下来,就产生链式反应,就可以将这边的各种类型数据拼接在一起
sb.append(99).append("djkfsjka").append(778);
reverse反转
public class Test3 {
public static void main(String[] args) {
String a ="hello";
StringBuilder sb =new StringBuilder(a);
System.out.println(sb.reverse());
}
}
StringBuilder和String相互转换
1、StringBuilder转换为String
public String toString():通过toString方法进行转化:StringBuilder转换为String
StringBuilder sb = new StringBuilder();
sb.append(“hello”);
//String b =sb;//发现,这两个并不是同一个类型的东西
string b= sb.toString();//通过toString方法,转为String类型
2、String转换为StringBuilder
public StringBuilder(String s):通过构造方法将String转换为StringBuilder,通过传入string的参数,
public static void main(String[] args) {
String a ="hello";
//StringBuilder sb =a;//这个是错误的
StringBuilder sb =new StringBuilder(a);
System.out.println(sb);
//或者通过appden进行拼接
sb.append(a);
}