- StringBuffer 是线程安全的可变字符序列。一个类似于String的字符缓冲区,但不能修改。(线程安全效率低,反正线程不安全效率高)
- String与String和StringBuilder的区别:
三者都是处理字符串常用的类,不同在于:
- 速度上:String < StringBuffer < SringBuilder;
- 安全上:StringBuffer线程安全,StringBuilder线程不安全;
原因在于,String的每次改变都会涉及到字符数组的复制,而StringBuffer和StringBuilder直接在字符数组上改变;同时,StringBuffer是线程安全的,而StringBuilder线程不安全,没有StringBuffer的同步,所以StringBuilder快于StringBuffer。
- String是一个不可变的字符序列
- StringBuffer,StringBuilder是可变的字符序列,其中前者是线程同步的,后者不同步。
- 总结:如果对字符串的改变少,使用String;如果对字符串修改的较多,需要线程安全就用StringBuffer,不需要就使用StringBuilder。
SringBuffer类的常用功能
- SringBuffer类的构造方法
- StringBuffer的添加功能
- StringBuffer的删除功能
- StringBuffer的替换和反转功能
- StringBuffer的截取功能
- StringBuffer和String的相互转换
- 基本数据类型的值传递,不改变其值
引用数据类型的值传递,改变其值
String类虽然是引用数据类型,但是他当作参数传递时和基本数据类型是一样的–>基本数据类型:一旦被初始化就不会被改变。 - 如果某个方法,只针对本类使用,不想让其他类使用就可以定义成私有的。
进制转换
public class Test { public static void main(String[] args) { long i = 12345L; System.out.println(Long.toBinaryString(i)); //返回i的二进制的字符串表示 System.out.println(Long.toOctalString(i)); //返回i的八进制的字符串表示 System.out.println(Long.toHexString(i)); //返回i的十六进制的字符串表示 System.out.println(Long.toString(i, 10)); //返回i的p进制的字符串表示 } }
int 转成string
private static void demo1() { //int ----> String int i = 100; String s1 = i + ""; //推荐用 String s2 = String.valueOf(i); //推荐用
string转成int
//String----> int String s = "200"; Integer i3 = new Integer(s); int i4 = i3.intValue(); //将Integer转换成了int数 int i5 = Integer.parseInt(s); //将String转换为int,推荐用这种
基本数据类型包装类有八种,其中七种都有parseXxx的方法,可以将这七种的字符串表现形式转换成基本数据类型。(char除外)
基本类型和包装类的对应:byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean
JDK5的新特性
- 自动装箱:把基本类型转换为包装类类型
- 自动拆箱:把包装类类型转换为基本类型
Integer i1 = 127; Integer i2 = 127; System.out.println(i1 == i2); //true System.out.println(i1.equals(i2)); //true System.out.println("-----------"); Integer i3 = 128; Integer i4 = 128; System.out.println(i3 == i4); //false System.out.println(i3.equals(i4)); //true /* -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取 * 如果超过了byte取值范围就会再新创建对象*/