黑马训练营-------------String StringBuffer StringBuilder

 

字符串String:

String s = “abc”;s 是一个类类型变量,”abc”是一个对象;

字符串最大特点:一旦被初始化就不可以被改变,是一个常量;

class StringDemo{

       public static void main(String[] args) {

              String s1 = "abc";

              String s2 = newString("abc");

              System.out.println(s1 == s2);                     //false

              System.out.println(s1.equals(s2));        //true

//Stirng类复写了Object类中equals方法,重写后用于判断字符串是否相同;

       }

}

S1 s2有什么区别?

S1在内存中有一个对象,

S22个对象,一个是通过new创建的,存在于堆内存中,另一个是”abc”存在于字符串缓冲区中;

String 类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作

常见的操作:

***1,获取String str = "abcdef";

   1.1 字符串中的包含的字符数,也就是字符串的长度

int length();  获取长度

System.out.println(str.length());

       1.2 根据位置获取位置上某个字符

char  charAt(int index)

System.out.println(str.charAt(2));

   1.3根据字符获取该字符在字符串中位置:

Int indexOf(int ch) 返回的是ch在字符串中第一次出现的位置

System.out.println(str.indexOf('a'));

Int indexOf(int ch,int fromIndex) : fromIndex指定位置开始,获取ch在字符串中出现的位置

int indexOf(String str): 返回的是str在字符串中第一次出现的位置                    System.out.println(str.indexOf('c',2));

int indexOf(String str,int fromIndex): fromIndex指定位置开始,获取ch在字符串中出现的位置

int lastindexOf(int ch) ;获取字符在字符串中最后出现的索引位置;

System.out.println(str.lastIndexOf('a'));

2.判断:

2.1 字符串中是否包含某一个子串

       boolean contains();

              indexOf(str):可以索引str第一次出现位置,如果返回-1表示该str不在字符串中存在,所以,也可以用于对指定字符串的判断是否包含

例: ifstr.indexOfa= -1

该方法既可以判断是否包含,也可以获取出现的位置;

2.2 字符中是否有内容

       boolean isEmpty():原理就是判断长度是否为0;

2.3 字符串是否是以指定内容开头

       boolean startsWith(str);

2.4 字符串是否是以指定内容结尾;

       boolean endsWith(str);

2.5 判断字符串内容是否相同;复写了objectequals的方法;

       boolean equals(str);

2.6 判断内容是否相同,并忽略大小写;

boolean equalsIgnoreCase();

3.转换;

       3.1 将字符数组转成字符串;

              构造函数: String(char[])

                       String(char[],offset,count):将字符数组中的一部分转成字符串,其中:offset:索引起始位,count:需要转换的个数;

              静态函数:

                     staticString copyValueOf(char[]);

                     staticString copyValueOf(char[] date, int offset, int count);

                            

  **3.2 将字符串转成字符数组;

           char[] toCharArray();

       3.3 将字节数组转成字符串;

               String(char[])

               String(char[],offset,count):将字节数组中的一部分转成字符串,

       3.4 将字符串转成字节数组;

              byte[]getBytes();

特殊:字符串和字节数组在转换过程中,是可以指定编码表的

3.5 将基本数据类型转成字符串;

static String valueOf(int)

3+”” == String.valueOf(3);

4.替换

       Stringreplace(oldchar,newchar);

       public static voidmethod_replace() {

              String s="hello java";

              //替换字符,如果要替换的字符不存在,返回的还是原字符

              String s1 =s.replace(‘a’,’e’); 

       }

5.切割

       String split(regex);

       public static voidmethod_split() {

              String s="abc,def,ghi";

              //在有逗号的位置把字符串分割

              String[] arr =s.split(",");

              遍历打印新的数组;

              for(int x=0;x<arr.length;x++) {

                     sop(arr[x]);     

              }     

       }

6.子串.获取字符串中的一部分

       String substring(begin)

       Stringsubstring(begin,end)

 

练习:

class StringDemo {

       public static voidmain(String[] args)

       

              method_get();

              Method_trans();

              String str ="StudentDemo.java";

 

              //判断文件名称是否以"Student"开头

              sop(str.startsWith("Student"));

 

              //判断文件是否是java文件

              sop(str.endsWith(".java");

 

              //判断文件名称是否包含"Demo.";

              sop(str.contains("Demo.");

       

       public static voidmethod_get() {

              String str ="abcdabcdefg";

              //长度;

              sop(str.length());    

 

              //根据索引获取字符;

              //当访问到字符串中不存在角标时,会发生角标越界异常;

              sop(str.charAt(4));

 

              //根据字符获取索引

              //没有找到指定的字符,返回-1;

              sop(str.indexOf('b',2));

 

              //反向索引一个字符串的位置;

              sop(str.lastIndexOf("a"));

              

       }

       public static voidsop(Object obj) {

              //jvm1.5以后新特性,可以打印数组,也可以打印字符串;

              System.out.println(obj); 

       }

public static void method_trans() {

       char[] arr ={'a','b','c','d','e'};

       String str = newString(arr);

       String str1 = newString(arr,1,4);

       sop(str);

       sop(str1);

}

 

7.转换,去除空格,比较;

7.1 将字符串转成大写或则小写。

               String toUpperCase();

               String toLowerCase();

 

       7.2 将字符串两端的多个空格去除。

              String trim();

 

       7.3 对两个字符串进行自然顺序的比较。

              intcompareTo(string);

StringBuffer是字符串缓冲区,一个容器;

特点:

1,长度是可变化的;

2,可以直接操作多个数据类型

3.最终会toString方法变成字符串;

C : create U : update  R : read  D: delete

1,存储

StringBuffer append():  将指定数据作为参数添加到已有数据结尾处

StringBuffer insert(索引,数据);可以将数据插入到指定索引位置;如果超出索引范围,发生角标越界异常;

Public static void main(String[] args) {

StringBuffer sb= new StringBuffer();

StringBuffer sb1= sb.append(“abc”);

// sb == sb1;

sb.insert(1,”xxx”);//在字符串”abc”1号索引处添加”xxx”;

}

2,删除

StringBuffer delete(start,end): 删除缓冲区中的数据,包含start,不包含end;

StringBuffer sb = new StringBuffer("abcdeg");

sb.delete(1, 3);

System.out.println(sb);//adeg

StringBuffer deleteCharAt(index): 删除指定位置的字符;

sb.deleteCharAt(0);

System.out.println(sb);//bcdeg

 

3.获取

char charAt(intindex) : 获取指定索引处的字符;

intindexOf(String str) : 返回字符串在容器中第一次出现的位置

intlastIndexOf(String str) : 获取字符串在容器中最后一次出现的位置;

int length() : 容器的长度;

Stringsubstring(int start, int end) : 获取子串,返回的是String;

4.修改

StringBufferreplace(start, end, string) 将容器中从startend出的对象替换成string;

voidsetCharAt(int index, char ch)   将指定索引替换成字符;只替换单个;

5.反转;

StringBufferreverse();

6

将缓冲区中指定数据存储到指定字符数组中。

       voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

 

 

JDK1.5 版本之后出现了StringBuilder.

 

StringBuffer是线程同步。

StringBuilder是线程不同步。

 

以后开发,建议使用StringBuilder

 

升级三个因素:

1,提高效率。

2,简化书写。

3,提高安全性。

*

基本数据类型对象包装类。

 

byte       Byte

short         short

int            Integer

long       Long

boolean    Boolean

float          Float

double        Double

char          Character

基本数据类型对象包装类的最常见作用,

就是用于基本数据类型和字符串类型之间做转换

 

基本数据类型转成字符串。

基本数据类型+""

基本数据类型.toString(基本数据类型值);

如: Integer.toString(34);//34整数变成"34";

字符串转成基本数据类型。

 

       xxxa = Xxx.parseXxx(String);

int a =Integer.parseInt("123");

double b =Double.parseDouble("12.23");

boolean b =Boolean.parseBoolean("true");

Integer i = newInteger("123");

int num =i.intValue();

 

十进制转成其他进制。

       toBinaryString();    Integer.toBinaryString(6)   //110

       toHexString();   Integer.toHexString(60)    // 3c

       toOctalString();

 

其他进制转成十进制。

       parseInt(string,radix);

int x = Integer.parseInt("3c",16);  //打印结果 : 60;

 

Java1.5版本以后出现的新特性:

class IntegerDemo 

{

       publicstatic void main(String[] args) 

       {

              

              //Integerx = new Integer(4);

 

              Integerx = 4;//自动装箱。//newInteger(4)

 

              x= x/* x.intValue() */ + 2;

//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。

              //再将和进行装箱赋给x

 

Integer m = 128;

              Integern = 128;

 

              sop("m==n:"+(m==n));

 

              Integera = 127;

              Integerb = 127;

 

              sop("a==b:"+(a==b));//结果为true。因为ab指向了同一个Integer对象。

//因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值