黑马程序员——String类

来源:互联网 发布:yii框架数据库配置 编辑:程序博客网 时间:2024/06/15 01:14


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



String

 


java中用String类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见数据进行方便的操作。对象封装后,可以定义N多属性和行为。


如何定义字符串对象呢?

String s = "abc";只要是双引号引起的数据都是字符串对象。

特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。

String类适用于描述字符串事物

那么它就提供了多个方法对字符串进行操作 


常见的操作有哪些?

"abcd" 


构造方法:将字节数组或者字符数组转成字符串。

String s1 = new String();//创建了一个空内容的字符串。

String s2 = null;//s2没有任何对象指向,是一个null常量值。

String s3 = "";//s3指向一个具体的字符串对象,只不过这个字符串中没有内容。

//一般在定义字符串时,不用new

String s4 = newString("abc");

String s5 = "abc";一般用此写法

new String(char[]);//将字符数组转成字符串。

new String(char[],offset,count);//将字符数组中的一部分转成字符串。 


1、获取

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

          int length():获取长度

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

          char charAt(intindex);

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

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

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

          indexOf(String str):返回的是str在字符串中第一次出现的位置。

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

2、判断

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

          booleancontains(str);

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

                     if(str.indexOf("aa")!=-1)

                 而且该方法即可以判断,又可以获取出现的位置。

   2.2 字符串是是否有内容。

          booleanifEmpty();原理就是判断长度是否为0.“” null是有区别的

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

          booleanstartsWith(str);

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

          booleanendsWith(str);

   2.5 判断字符串的内容是否相同

          booleanequals(str);

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

          booleanequalsIgnoreCase();

3、转换

   3.1 将字符数组转成字符串

          构造函数:String(char[])

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

          静态方法:static String copyValueOf(char[]);

                   static String copyValueOf(char[] data,intoffset,int count);

                   static String valueOf(char[]);

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

          char[]toCharArray();

   3.3 将字节数组转成字符串

          String(byte[])

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

   3.4 将字符串转成字节数组

          byte[]getbytes();

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

          static StringvalueOf(int)

          static StringvalueOf(double)

          //3+"";//String.valueOf(3);//它们的结果是一样的。  


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


 String s1 =s.replace('k','g');//如果要替换的字符不存在,返回的还是原串。

4、替换

 Stringreplace(olechar,newchar);//如果要替换的字符不存在,返回的还是原串。

 Stringreplace(CharSequence target, CharSequence replacement); //替换字符串

5、切割

 String[] split(regex);

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

 Stringsubstring(begin);//从指定位置到结尾,如果角标不存在,会出现字符串角标越界异常。

 Stringsubstring(begin,end);//包含头,不包含尾。s.substring(0,s.length());

7、转换、去除空格、比较

 7.1 将字符中转成大写或者小写

      StringtoUpperCase();

      StringtoLowerCase();

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

      String trim();

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

      intcompareTo(string);


 

int compareTo(string);方法:



 


练习:



 


StringBuffer是字符串缓冲区


是一个容器


构造一个其中不带字符的字符串缓冲区,初始容量为 16个字符。 


特点:

1、长度是可变化的。

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

3、最终会通过toString方法变成字符串


C create U update R read D delete


1、存储--面盆理论

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

        StringBufferinsert(index,数据):可以将数据插入到指定index位置。

2、删除

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

        StringBufferdeleteCharAt(index):删除指定位置的字符。

3、获取

        Char charAt(intindex);

        int indexOf(Stringstr);

        intlastIndexOf(String str);

        int length();

        Stringsubstring(int start,int end);//访问的是String不是StringBuffer

4、修改

        StringBufferreplace(start,end,string);

        void setCharAt(intindex,char ch);

5、反转

        StringBufferreverse();

6void getChars(int srcBegin, intsrcEnd, char[] dst, int dstBegin);将缓冲区中指定数据存储到指定字符数组中

 


JDK1.5出现StringBuiler;构造一个其中不带字符的字符串生成器,初始容量为 16个字符。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。

方法和StringBuffer一样;

 


StringBuffer是线程同步


StringBuilder是线程不同步 


单线程操作,使用StringBuilder效率高。


多线程操作,使用StringBuffer安全。 


以后开发,建议使用StringBuilder


升级三个因素:

1、提高效率

2、简化书写

3、提高安全性

 


练习:


class Test{

   public static void main(String[] args) {

      String s1 = "java";

      String s2 = "hello";

      method_1(s1,s2);

      System.out.println(s1+"...."+s2); //java....hello

      StringBuilder s11 = new StringBuilder("java");

      StringBuilder s22 = new StringBuilder("hello");

      method_2(s11,s22);

      System.out.println(s11+"-----"+s22); //javahello-----hello

   }

   public static void method_1(String s1,String s2){

      s1.replace('a','k');

      s1 = s2;

   }

   public static void method_2(StringBuilder s1,StringBuilder s2){

      s1.append(s2);

      s1 = s2;

   }

}

 


Integer对象


数字格式的字符串转成基本数据类型的方法:

1:将该字符串封装成了Integer对象,并调用对象的方法intValue();

2:使用Integer.parseInt(numstring):不用建立对象,直接类名调用; 


将基本类型转成字符串:

1Integer中的静态方法 String toString(int);

2int+""; 


将一个十进制整数转成其他进制:

   转成二进制:toBinaryString

   转成八进制:toOctalString

   转成十六进制:toHexString

   toString(int num,int radix); 


将其他进制转换十进制:

parseInt(string,radix); //将给定的数转成指定的基数进制; 


jdk1.5版本后,对基本数据类型对象包装类进行升级。在升级中,使用基本数据类型对象包装类可以像使用基本数据类型一样,进行运算。

   Integer i = new Integer(4); //1.5版本之前的写法;

   Integer i = 4; //自动装箱,1.5版本后的写法;

   i = i + 5;

 //i对象是不能直接和5相加的,其实底层先将i转成int类型,在和5相加。而转成int类型的操作是隐式的。自动拆箱:拆箱的原理就是i.intValue();i+5运算完是一个int整数。如何赋值给引用类型i呢?其实有对结果进行装箱。

Integer c = 127;

   Integer d = 127;

   System.out.println(c = = d); //true

   //在装箱时,如果数值在byte范围之内,那么数值相同,不会产生新的对象,也就是说多个数值相同的引用指向的是同一个对象。


 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 虎皮鹦鹉脚脱臼了怎么办 孩子作业做得慢怎么办 员工给公司造成损失怎么办 小孩有写不完的作业家长怎么办 一年级孩子作业太粗心怎么办 孩子最近不好好做作业怎么办 工作压力大害怕做不好怎么办 孩子的数算不对怎么办? 孩子计算老是出错怎么办呢 孩子经常计算错误能怎么办 孩子老出现计算错误怎么办 孩子做作业马虎该怎么办 黑笔写错了纸破了怎么办 幼儿园报名写错怎么办名字 中考写错了字怎么办 头发没干想睡觉怎么办 突然天旋地转恶心想吐怎么办 突然天旋地转的浑身出汗怎么办 3岁半不认识数字怎么办 孩子长倒睫毛该怎么办 一年级的孩子口算慢怎么办? 大班社会领域怎么办教学反思 表带活动圈坏了怎么办 手表固针h掉了怎么办 cad图全部倒过来了怎么办 电脑打数字变粗怎么办 wps表格输入数字变乱码怎么办 文档中光标变粗怎么办 wps排序有重复的怎么办 记英语数字老是混怎么办 苹果手机输入法出数字怎么办 word文档复制过来有底色怎么办 表格复制后还再显示复制符号怎么办 笔记本字母键打出数字怎么办 wps打字字上移了怎么办 微信里黑圈里面的白字是怎么办 脖子比脸黑好多怎么办 河南许昌小学生生病办休学怎么办 1岁宝宝内向胆小怎么办 3岁宝宝内向胆小怎么办 数学物理好不喜欢学医怎么办