标题.append:("charSequence").append(" AutoCloseable接口").append("Runtime类 ").append("")
String 和 StringBuffer的区别:
String:
public class demo324{
public static void main(String[] args) {
String message="hxw";
change(message);
System.out.println(message);
}
public static void change(String s){
s+="handsome";
}
}
执行结果:
hxw
StringBuffer:
public class demo324{
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();
buffer.append("hxw").append("aodi").append("rs7");
change(buffer);
System.out.println(buffer);
}
public static void change(StringBuffer s){
s.append("he is").append("car");
}
}
执行结果:
hxwaodirs7he iscar
对比之下可以看出,String 声明后无法改变值,而通过StringBuffer的对象存的字符串可以通过append()方法随意在后面加字符串。
StringBuffer对象定义的字符串实现字符串反转操作:(特色操作)
public class demo324{
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer(32);//这个capacity是形容可以容纳多少个字符串,默认值是16,调用append方法时会自动增加。这就是可以改变字符串长度的原因。
buffer.append("hxw ").append("'s ").append("car is ").append("aodi RS7");
System.out.println(buffer.reverse());//因为通过StringBuffer源代码可以发现,保存形式为Byte[],所以调用reverse方法进行反转操作。
}
}
执行结果:
7SR idoa si rac s' wxh
StringBuffer中的insert方法:insert(offse,数据类型); //offset指的是索引位置。
public class demo324{
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer(32);//这个capacity是形容可以容纳多少个字符串,默认值是16,调用append方法时会自动增加。这就是可以改变字符串长度的原因。
buffer.append("hxw ").insert(0,"'s car is aodiRS7");
System.out.println(buffer);//因为通过StringBuffer源代码可以发现,保存形式为Byte[],所以调用reverse方法进行反转操作。
}
}
执行结果: 's car is aodiRS7hxw
类似方法还有replace(索引开始位置,索引结束位置);替换方法,
还有delete(索引开始位置,索引结束位置);删除方法。
String中有常量池、运行常量池、静态常量池。其实更实用。
StringBuilder和StringBuffer的区别
StringBuilder:
StringBuffer:
总结:StringBuilder和StringBuffer的区别在于多线程实现的时候,同步处理(synchronized)的问题。在多线程实现代码中用StringBuffer,单线程的话两个都可以使用。
charSequence
String StringBuffer StringBuilder之间的关系,都用共同父类charSequence。
转换示例代码:
AutoCloseable接口
实现自动关闭服务器连接的接口,里面有抽象方法close();
示例代码:
Runtime类
每一个JVM的进程总都会自动包含一个Runtime类的实例化对象。他可以直接操作电脑所装的操作系统中的内部函数。(相当于直接在控制台操作)
System类:
观察以下操作:
System类中的方法很多都是调用的Runtime类中的方法,比如说下面的exit()和gc();他们的效果其实都是一样的。
public class demo324{
public static void main(String[] args) throws Exception {
if(args.length!=2){//通过线程接受初始化参数
System.out.println("hxw");
System.exit(1);
}
String message=args[0];//获取第一个参数内容
int count=Integer.parseInt(args[1]);//循环次数
for(int x=0;x<count;x++){
System.out.println(message);
}
}
}