黑马程序员——StringBuffer&StringBuilder&Integer

------- android培训java培训、期待与您交流! ----------

 

StringBuffer, StringBuilder,包装类

StringBufferStringbuilder区别:

StringBuffer: 同步的

StringBuilder: 非同步的, 执行速度比Stringbufferkuai,单线程程序建议使用StringBuilder

StringBuffer

1.      StringBufferString区别

String是一个常量

StringBuffer是一个字符串缓冲区, 底层是一个数组, 它将所有的字符存进了这个数组

打印StringBuffer对象时其实是打印的是对象.toString()

StringBuffer也有获得字符串长度的方法 length()

 

2.      StringBuffer构造方法

2.1  public StringBuffer()

构造一个默认长度为16个字符的字符串缓冲区

示例:

StringBuffer buff = new StringBuffer();

2.2  StringBuffer(int len)

构造一个长度为len个字符的字符串缓冲区

示例:

StringBuffer buff = new StringBuffer(5);

2.3  StringBuffer(String s)

构造一个指定内容的字符串缓冲区

示例:

StringBuffer buff = new StringBuffer(“Ab12”);

 

3.      StringBuffer常用成员方法

3.1  append方法(重点)

声明: public StringBuffer append(参数)

这个方法是StringBuffer()类里最常用的方法, 用于向StringBuffer上添加内容

这个方法的参数可以是基本类型, char[], String类型和Object对象等, 会将这些传入的参数以字符串的形式追加到StringBuffer对象的末尾处

示例:

classStringBuff {

   public static void main(String[] args) {

           

            StringBuffer buff = newStringBuffer();

            buff.append(123).append(true).append("Abc").append('+');

            System.out.println(buff);

   }

}

 

打印结果是: 123trueAbc+

3.2  insert方法

声明: public StringBuffer insert(参数)

将指定的数据插入指定的位置, 可以接受char[], 也可以指定插入char[] 中第几位开始的几个字符

示例:

classInsertTest {

   public static void main(String[] args) {

            //创建一个StringBuffer对象

            StringBuffer buff = newStringBuffer();

            //StringBuffer对象添加数据

            buff.append("abcd");

 

//添加int类型的数据添加到buff中的指定位置

            int i = 100;

            buff.insert(2, i);

            //打印结果

            System.out.println(buff);          //打印结果: ab100cd

 

 

//添加char[]中的字符插入到buff中的指定的位置

/*                 char[] ch = {'H', 'e', 'l','l', 'o'};

            buff.insert(2, ch);

            //打印结果

            System.out.println(buff);          //打印结果: abHellocd

*/                

 

//添加char[]中指定位置开始的几个字符插入到buff中指定的位置

/*                 char[] ch = {'n', 'i', 'h','a', 'o'};

            buff.insert(2, ch, 2, 3);

            System.out.println(buff);          //打印结果: abhaocd

*/

   }

}

 

3.3  delete方法

3.3.1         声明: public StringBuffer delete(int start, int end)

删除字符串中startend之间的字符

3.3.2         声明: public StringBuffer deleteCharAt(int index)

删除字符串中指定位置的字符

                   示例:

                            class DeleteTest {

         publicstatic void main(String[] args) {

                   //创建并将字符串赋给StringBuffer对象

                   StringBufferbuff = new StringBuffer("HelloWord");

                   //删除从第5个开始到结束的字符串

//               buff.delete(5,buff.length());

//               System.out.println(buff);          //打印结果: Hello

 

                   //删除buff中下标为0的字符

                   buff.deleteCharAt(0);               

                   System.out.println(buff);          //打印结果: elloWord

         }

}

 

3.4 reverse方法

声明: publicStringBuffer reverse()

作用: 将字符串反转

示例:

class ReverseTest {

         public static voidmain(String[] args) {

                   //创建StringBuffer对象

                   StringBufferbuff = new StringBuffer("Hello World!");

                   //调用reverse方法

                   buff.reverse();

                   System.out.println(buff);          //打印结果: !dlroW olleH

         }

}

 

3.5  setCharAt方法

声明: public voidsetCharAt(int index, char ch)

作用: 将指定位置的字符替换成传入的新字符

示例:

class SetCharAtTest {

         public static voidmain(String[] args) {

                   StringBufferbuff = new StringBuffer("Hello World!");

                   //将下标为0的字符替换为A

                   buff.setCharAt(0,'A');

                   System.out.println(buff);          //打印结果: Aello World!

         }

}

 

StringBuilder

1.      StringBuilder构造方法与方法同StringBuffer一样, 他们的区别是StringBuilder是同步的

基本数据类型的包装类

1.      包装类就是将基本数据类型包装成一个类, 基本类型数据作为一个包装类的属性, 实现基本数据类型数据与引用类型数据(String)之间的转换

 

2.      基本数据类型的包装类

 

整型:

byte          --------------------------------à         Byte

short         --------------------------------à         Short

int              --------------------------------à         Integer

long           --------------------------------à         Long

浮点型

float          --------------------------------à         Float

double      --------------------------------à         Double

字符型

char          --------------------------------à         Character

布尔型

boolean    --------------------------------à         Boolean

Integer

1.      Integer类中构造方法

a)  public Integer(int i)
          
构造一个新分配的int对象,它表示指定的int

         示例:

         Integer in = new Integer(10);

b)      public Integer(String s)

         构造一个新分配的String对象,它表示String参数所指示的int

         示例

         Integer in = new Integer(“123”);

2.      Integer类中常用方法

a)        intValue()

声明: public int intValue()

作用: 得到Integer对象中的value属性

示例:

classIntegerTest {

   public static void main(String[] args) {

            //创建一个Integer对象

            Integer in = new Integer(10);

            //intValue()Integer对象的value属性返回

            int i = in.intValue();

            System.out.println(i);       //打印结果: 10

   }

}

 

b)        toString方法, parseInt方法

4.2.1声明: public String toString()

作用: Integer类型数据转换为String类型

4.2.2 声明: public Integer parseInt()

                                     作用: String类型数据转换为int类型

                   示例:

class Integer2String {

     public static voidmain(String[] args) {

              //创建Integer对象

              Integer in1 = newInteger(10);

              //调用toString()方法将Integer类型数据转换为String

              String s1 =in1.toString();

              //将转换后的数据加1 结果不是相加而是拼接

              System.out.println(s1+ 1);      //打印结果: 101

 

              //创建一个全部是数字字符的String对象

              String s2 ="10";

              //调用parseInt方法将字符串转换为Integer类型

              Integer in2 =Integer.parseInt(s2);

              //将转换后的数据加1 结果是相加而不是拼接

              System.out.println(in2+ 1);     //打印结果: 11

 

     }

}

 

c)        自动装箱, 自动拆箱

自动装箱时将int类型的数据直接包装为Integer

自动拆箱是将Integer类型的数据直接转换为int

示例:

Integer i = 10;    装箱

Int a = i;               拆箱

 

3.      关于Integer的笔试题:

Integer in1 = newInteger(1000);

Integer in2 = newInteger(1000);

 

Integer in3 = 128;

Integer in4 = 128;

 

in1 == in2, in3 ==in4分别会返回什么

答案是false, false

 

Integer in1 = 127;

Integer in2 = 127;

in1 == in2 返回什么      //返回true

原因是Integer在底层维护了一个byte类型的数据, 直接将数值范围在byte类型内赋给Integer类型的引用时的,Integer将不会创建新的对象, 直接将已有的值指向Integer对象, byte范围在-128~127, 所以上面的两个比较都是false, 下面是true

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值