StringBuffer & StringBuilder & String,常用类

来源:互联网 发布:淘宝牛皮钱包 编辑:程序博客网 时间:2024/04/29 18:50
String类的本质StringBuffer和StringBuilder 常见包装类

一、 String类

特点

String用于保存字符串

String创建对象

“hello” 默认就是 一个String的对象(实例)

1、通过构造方法

String str = new String(“hello”);

2、直接赋值

String str = “hello”;

1、★★问题思考?

两种创建对象方式的区别:

直接赋值:

先去常量池中查看 是否有字面值一样的 空间,如果没有则创建,如果有,则直接 指向。

通过构造方法:

肯定会在堆中创建空间,空间中的字符串值引用了 常量池中的字面上的值。如果常量池中有和字面值一样的空间,则直接引用,否则 就创建

2、★★问题思考?

String str=new String("hello");创建了几个对象创建了两个对象

3、★★问题思考?

String str="hello"+"world";创建了几个对象创建了 三个对象"hello"/"world"/"helloworld"str+="xiaohua";每次拼接都要新开空间,所以效率比较低原因:字符串保存的是常量,一旦开辟空间,里面的值不能更改!

String类的常用方法

见已发布String相关javaSe基础博客文章

二、 StringBuffer类

(1)特点

String类的增强版

实质上也是保存字符串,但 增删改的话是在原来的空间上,不需要新开辟空间,效率 比较高!!

StringBuffer

1、创建对象    通过构造器2、常用方法    append追加    insert插入    replace修改    delete删除    reverse反转    length获取长度    indexOf获取字符或字符串第一次出现的索引    lastIndexOf 获取字符串或字符串最后一次出现的索引3、String和StringBuffer的转换    String——StringBuffer        通过构造器    StringBuffer——String        通过toString4、StringBuffer和StringBuilder、String对比    《1》效率不同,StringBuilder>StringBuffer>String    《2》StringBuffer和StringBuilder都是保存字符串变量    《3》增删改操作都是在自身基础上修改,不用重新开辟空间,String 保存字符串常量         每次增删改都需要重新开辟空间。    《4》StringBuffer 线程安全、同步、效率低、版本老的,                StringBuilder线程不安全、不同步、       《5》效率高、版本新的

1、★★思考问题

String和StringBuffer的区别

String 保存字符串 常量
StringBuffer 保存字符串 变量

(2)创建对象

StringBuffer s = new StringBuffer(“hello”);

(3)StringBuilder/StringBuffer/String对比

String 保存字符串常量,里面的值不能更改StringBuffer和StringBuilder保存字符串变量,里面的值可以更改                线程安全        同步        效率        版本 StringBuilder  不安全         不同步        高         新(1.5)StringBuffer    安全           同步         低         老(1.0)效率StringBuilder>StringBuffer>String

常见方法

见代码:

  public class TestStringBuffer {  public static void main(String[] args) throws Exception {    //创建StringBuffer对象    StringBuffer s = new StringBuffer("hello");    //方法一:append 追加    /*     * 特点:     *      * ☆可以在本身基础上追加     * ★可以追加任意类型     * ★返回类型 :StringBuffer     *///      s.append("张三");//      s.append("李四");//      s.append(true);//      s.append('男');//      s.append(1.5);//      s.append(100);         System.out.println(s.append("张无忌").append("周芷若").append("小昭"));    //方法二:insert  插入    System.out.println(s.insert(8, true));;    //方法三:replace 修改    /*     * 参数1: 要替换的起始索引(包含)     * 参数2:要替换的结束索引(不包含)     * 参数3: 新的元素     */    System.out.println(s.replace(8, 12, "曹小华"));;    //方法四:delete 删除    /*     * 参数1: 要删除的起始索引(包含)     * 参数2:要删除的结束索引(不包含)     */    System.out.println(s.delete(11, s.length()));;    //indexOf、lastIndexOf、length、substring    //-------------String类和StringBuffer的转换--------------    /*     * String——StringBuffer,通过构造器     * StringBuffer——String,通过 toString方法     */    StringBuffer bu1=new StringBuffer("hlll");    String string = bu1.toString();

三、包装类

1、概念:

将基本类型 包装成 对应的引用类型,保存的数值一样,但可以有属性和方法

2、对应关系

byte-Byteshort-Shortint-Integerlong-Longfloat-Floatdouble-Doublechar-Characterboolean-Boolean

3、自动装箱和拆箱

自动装箱(基本类型——包装类)    Integer i = 10;自动拆箱(包装类——基本类型)    int a= i;    int x=i+3;

4、类型转换

《1》Integer和String之间

Integer——String         调用方法toString         拼接字符串String——Integer         Integer i=new Integer(string);         调用方法valueOf

《2》Integer和int之间

    Integer——int        自动拆箱        调用方法intValue    int——Integer        自动装箱        Integer i=new Integer(int);

《3》int和String之间

    int——String        拼接字符串    String——int        调用方法parseInt

《4》Character类的常见方法

isLetter      确定指定字符是否为字母。isUpperCase   确定指定字符是否为大写字母。isLowerCase   确定指定字符是否为小写字母。isDigit       确定指定字符是否为数字toUpperCase   使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。toLowerCase   使用取自 UnicodeData 文件的大小写映射信息将字符(Unicode 代码点)参数转换为小写。

四、常用类方法

1、此类用于演示Date类的使用
按格式显示当前日期

public class TestDate {public static void main(String[] args) {    Date d = new Date();    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");    String strDate = sdf.format(d);    System.out.println(strDate);}}

2、此类用于演示日历(Calendar)类的使用

public class TestCalendar {public static void main(String[] args) {    //创建Calendar对象    Calendar  c=Calendar.getInstance();    System.out.println(c);    //调用方法    int year = c.get(Calendar.YEAR);    int month = c.get(Calendar.MONTH);    int day = c.get(Calendar.DAY_OF_MONTH);    int hour = c.get(Calendar.HOUR_OF_DAY);    int minute = c.get(Calendar.MINUTE);    int second = c.get(Calendar.SECOND);    System.out.println(year+"年"+(month+1)+"月"+day+"日  "+hour+":"+minute+":"+second);}

}

3、此类用于演示(System)类的使用

public class TestSystem {public static void main(String[] args) {    //方法一:exit退出程序    System.out.println("hehehhe");//      System.exit(0);//      System.out.println("hhahahha"); 已退出未执行    //方法二:arrayCopy    /*     * 参数1:源数组     * 参数2:源数组 复制的起始索引     * 参数3:目标数组     * 参数4:目标数组的起始索引     * 参数5:复制的个数     */    int[] src={1,2,3};    int[] dest=new int[src.length];    System.arraycopy(src, 0, dest, 1, src.length-1);    for (int i = 0; i < dest.length; i++) {        System.out.println(dest[i]);    }    //方法三:currentTimeMillens,单位ms    long start = System.currentTimeMillis();    //执行某段代码花费了一定时间    long end = System.currentTimeMillis();    //方法四:getProperties 获取系统属性    System.out.println("-----------------------------------");    Properties properties = System.getProperties();    properties.list(System.out);}

}

4、此类用于演示(Character)类的使用

public class TestCharacter {public static void main(String[] args) {    Character c=new Character('a');    Character c2 ='a';//自动装箱    char ch=c2;//自动拆箱    //调用方法    // 判断    System.out.println(Character.isLetter('4'));    System.out.println(Character.isLetter('x'));    System.out.println(Character.isDigit('4'));    System.out.println(Character.isDigit('*'));    System.out.println(Character.isUpperCase('M'));    System.out.println(Character.isLowerCase('M'));    //和String之间的转换    //将String  转换成  char[]    String str="abc";    char[] chs = str.toCharArray();

// for (int i = 0; i < chs.length; i++) {
// System.out.println(chs[i]);
// }
//

    //将char  转换成 String    String string = c2.toString();    System.out.println(string);}

}

0 0
原创粉丝点击