String基础

1.String 不可变

public class Test1 {

public static String upcase(String s){

return s.toUpperCase();

}

 

public static void main(String[] args) {

String s="hobby";

System.out.println(s);

String ss = upcase(s);

System.out.println(ss);

}

}

当把String作为参数时,会先拷贝一份引用,引用所指向的物理地址不会改变

 

2. 重载+StringBuilder

String对象是不可变的,具有只读特性

public static void main(String[] args) {

String mongo="mongo";

String s="a"+mongo+"c"+47;

System.out.println(s);

}

编译器自动引入了java.lang.stringBuilder,最终构建String对象

那就可以随便使用String了吗?请看下个例子

public String useString(String[] field){

 

String result="";

for(int i=0;i<field.length;i++){

result+=field[i];

}

return result;

}

public String useStringBuilder(String[] field){

StringBuilder sb=new StringBuilder();

for(int i=0;i<field.length;i++){

sb.append(field[i]);

}

return sb.toString();

}

从他们的字节码可知:StringBuilder效率更高

3. String 上的操作

 

注:当需要改变String的内容时,会返回一个新的String对象,如果内容没有改变时,返回原对象的引用

 

4.格式化输出

1.format方法

public static void main(String[] args) {

int a=1;

double b=3.1415976;

 

System.out.format("a=%d,b=%f", a,b);

}

有点类似Cprintf

2.Formatter

public class Test1 {

private String name;

private Formatter f;

public Test1(String name,Formatter f){

this.f=f;

this.name=name;

}

public void move(int x,int y){

f.format("%s The Turtle is at (%d,%d)", name,x,y);

}

public static void main(String[] args) {

Test1 t1=new Test1("netty", new Formatter(System.out));

t1.move(5, 6);

}

}

 

5.Formatter转换

 

posted @ 2019-07-31 15:18  沦为旧友  阅读(141)  评论(0编辑  收藏  举报