黑马程序员—【Java基础篇】之String类与包装类

来源:互联网 发布:java 泛型类 静态方法 编辑:程序博客网 时间:2024/06/08 06:33
------- android培训、java培训、期待与您交流! ---------

    伙伴们好,这篇为大家介绍分享String类和其它基本数据类型包装类,这二大块部分。

一、String类

1.定义

/**    字符串是一个特殊的对象。    字符串一旦初始化就不可以被改变。String str  = “abc”;    String str1 = new String(“abc”);    有什么区别 ?*/

2.思考

<span style="font-size:14px;">//对于上述问题的思考:class StringDemo {public static void main(String[] args) {String s1 = "abc";//s1是一个类类型变量, "abc"是一个对象。//字符串最大特点:一旦被初始化就不可以被改变。String s2 = new String("abc");/*s1和s2有什么区别?s1在内存中有一个对象。s2在内存中有两个对象。*/}</span>

3.方法介绍

/**(1)获取        a. 字符串中包含的字符数,也就是字符串的长度               int   length()://获取长度。       b. 根据位置获取位置上的某个字符               char  charAt(int  index)://    当访问到字符串中不存在的角标时,会发生字符串角标越界的错误。        c. 根据字符获取该字符存在字符串的位置              int  indexOf(int ch)://返回的是ch在字符串中第一次出现的位置。//传入的是字符对应的ASCII码。//如果没有找到,返回-1。              int  indexOf(int ch,int fromIndex)://从fromIndex指定位置开始,获取ch在字符串中出现的位置。              int  indexOf(String str)://返回的是str在字符串中第一次出现的位置。              int  indexOf(String str,int fromIndex)://从fromIndex指定位置开始,获取str在字符串中出现的位置。              int  lastIndexOf()://反向索引 (2)、判断     a. 字符串中是否包含某一个子串              booleancontains(str);        //特殊之处:indexOf(str)可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。如:if(str.indexOf(“aa”)!=-1)而且该方法既可以判断,又可以获取出现的位置。如果只为判断,用contains。    b. 字符串中是否有内容              booleanifEmpty();//原理就是判断长度是否为0。     c. 字符串是否是以指定内容开头              booleanstartsWith(str);     d. 字符串是否是以指定内容结尾              booleanendsWith(str);     e. 判断字符串内容是否相同,复写了Object类中的equals方法              booleanequals(str);     f. 判断内容是否相同,并忽略大小写。              booleanequalsIgnoreCase();(3)、转换        a. 将字符数组转成字符串             构造函数:String (char[]);                                 String(char[],offset,count);//将字符数组中的一部分转成字符串。             静态方法:                                 static String copyValueOf(char[]);                                 staticString copyValueOf(char[] data,int offset ,int count );                                 static String valueOf(char[]);       b. 将字符串转成字符数组              char[]toCharArray();       c.将字节数组转成字符串              String (byte[]);              String(byte[],offset,count);//将字节数组中的一部分转成字符串。count表示个数。      d.将字符串转成字节数组              byte[]getBytes();      f.将基本数据类型转成字符串              StringvalueOf(int);              StringvalueOf(double);        特殊:字符串和字节数组在转换过程中,是可以指定编码表的。(4)、替换        Stringreplace(oldchar,newchar);//返回的是一个新字符串。如果要替换的字符不存在,返回的还是原字符串。(5)、切割        String[] split(regex);//涉及到正则表达式的点,不能作为切割字符串的regex。(6)、子串,获取字符串中的一部分        String substring(begin);//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。        Stringsubstring(begin,end);//包含头,不包含尾。(7)转换,去除空格,比较        a.将字符串转成大写或小写              StringtoUpperCase();              String toLowerCase();        b.将字符串两端的多个空格去除              String trim();                c.对两个字符串进行自然顺序的比较              intcompareTo(String);*/
    示例:
class  StringMethodDemo//String方法示例{public static void method_7(){String s = "    Hello Java     ";sop(s.toLowerCase());sop(s.toUpperCase());sop(s.trim());String s1 = "a1c";String s2 = "aaa";sop(s1.compareTo(s2));}public static void method_sub(){String s = "abcdef";sop(s.substring(2));//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。sop(s.substring(2,4));//包含头,不包含尾。s.substring(0,s.length());}public static void  method_split(){String s = "zhagnsa,lisi,wangwu";String[] arr  = s.split(",");for(int x = 0; x<arr.length; x++){sop(arr[x]);}}public static void method_replace(){String s = "hello java";//String s1 = s.replace('q','n');//如果要替换的字符不存在,返回的还是原串。String s1 = s.replace("java","world");sop("s="+s);sop("s1="+s1);}public static void method_trans(){char[] arr = {'a','b','c','d','e','f'};String s= new String(arr,1,3);sop("s="+s);String s1 = "zxcvbnm";char[] chs = s1.toCharArray();for(int x=0; x<chs.length; x++){sop("ch="+chs[x]);}}public static void method_is(){String str = "ArrayDemo.java";//判断文件名称是否是Array单词开头。sop(str.startsWith("Array"));//判断文件名称是否是.java的文件。sop(str.endsWith(".java"));//判断文件中是否包含Demosop(str.contains(".java"));}public static void method_get(){String str = "abcdeakpf";//长度sop(str.length());//根据索引获取字符。sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException。//根据字符获取索引sop(str.indexOf('m',3));//如果没有找到,返回-1.//反向索引一个字符出现位置。sop(str.lastIndexOf("a"));}public static void main(String[] args) {method_7();//method_trans();//method_is();//method_get();/*String s1 = "abc";String s2 = new String("abc");String s3 = "abc";System.out.println(s1==s2);System.out.println(s1==s3);*/}public static void sop(Object obj){System.out.println(obj);}}

4.练习

<span style="font-size: 18px;">/</span><span style="font-size:14px;">**1. 子串在整串中出现的次数。2. 两个字符串的最大相同子串。*//**1.获取一个字符串在另一个字符串中出现的次数。"abkkcdkkefkkskk"思路:(1)定义个计数器。(2)获取kk第一次出现的位置。(3)从第一次出现位置后剩余的字符串中继续获取kk出现的位置。每获取一次就计数一次。(4)当获取不到时,计数完成。*/class  StringTest1{public static int getSubCount(String str,String key){int count = 0;int index = 0;while((index=str.indexOf(key))!=-1){sop("str="+str);str = str.substring(index+key.length());count++;}return count;}/*练习1,方式二。*/public static int getSubCount_2(String str,String key){int count = 0;int index = 0;while((index= str.indexOf(key,index))!=-1){sop("index="+index);index = index + key.length();count++;}return count;}public static void main(String[] args) {String str = "kkabkkcdkkefkks";///sop("count====="+str.split("kk").length);不建议使用。sop("count="+getSubCount_2(str,"kk"));}public static void sop(String str){System.out.println(str);}}/**2、获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。"abcwerthelloyuiodef""cvhellobnm"思路:(1)将短的那个子串按照长度递减的方式获取到。(2)将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。*/class  StringTest3{/*练习2。*/public static String getMaxSubString(String s1,String s2){String max = "",min = "";max = (s1.length()>s2.length())?s1: s2;min = (max==s1)?s2: s1;//sop("max="+max+"...min="+min);for(int x=0; x<min.length(); x++){for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++){String temp = min.substring(y,z);sop(temp);if(max.contains(temp))//if(s1.indexOf(temp)!=-1)return temp;}}return "";}public static void main(String[] args) {String s1 = "ab";String s2 = "cvhellobnm";sop(getMaxSubString(s2,s1));}public static void sop(String str){System.out.println(str);}}</span>


二、StringBuffer容器

1.定义

/**    StringBuffer是一个容器,字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删改查等操作,很多方法和String相同。*/

2.特征

/**(1)StringBuffer可以对字符串内容进行增删。(2)StringBuffer是一个容器。(3)StingBuffer是可变长度的。*/

3.常见操作方法

/**(1)存储StringBuffer append():将指定数据作为参数添加到已有数据结尾处。StringBuffer insert(index,数据):可以将数据插入到指定index位置。(2)删除StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(index):删除指定位置的字符。(3)获取char charAt(int index) int indexOf(String str) int lastIndexOf(String str) int length() String substring(int start, int end)  (4)修改StringBuffer replace(start,end,string);void setCharAt(int index, char ch) ;(5)反转StringBuffer reverse(); (6)将缓冲区中指定数据存储到指定字符数组中void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)      JDK1.5 版本之后出现了StringBuilder.StringBuffer是线程同步。StringBuilder是线程不同步。以后开发,建议使用StringBuilder升级三个因素:(1)提高效率。(2)简化书写。(3)提高安全性。*/class StringBufferDemo {public static void main(String[] args) {//method_update();StringBuilder sb = new StringBuilder("abcdef");char[] chs = new char[6];sb.getChars(1,4,chs,1);//将for(int x=0; x<chs.length; x++){sop("chs["+x+"]="+chs[x]+";");}draw(3,6);draw(8,9);//StringBuilder sb1 = new StringBuilder();//sb1.append(new Demo()).append(new Demo());//sop("sb1="+sb1);}public static void method_update(){StringBuffer sb  = new StringBuffer("abcde");//sb.replace(1,4,"java");sb.setCharAt(2,'k');sop(sb.toString());}public static void method_del(){StringBuffer sb  = new StringBuffer("abcde");//sb.delete(1,3);//清空缓冲区。//sb.delete(0,sb.length());//sb.delete(2,3);sb.deleteCharAt(2);sop(sb.toString());}public static void method_add(){StringBuffer sb = new StringBuffer();//sb.append("abc").append(true).append(34);//StringBuffer sb1 = sb.append(34);//sop("sb==sb1:"+(sb==sb1));sb.insert(1,"qq");sop(sb.toString());//abctrue34//sop(sb1.toString());}public static void sop(String str){System.out.println(str);}public static void draw(int row,int col){StringBuilder sb = new StringBuilder();for(int x=0; x<row; x++){for(int y=0; y<col; y++){sb.append("*");}sb.append("\r\n");}sop(sb.toString());}}

    这篇就介绍到这里了,伙伴们看好了吗,继续努力吧,加油。



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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 农发行车改司机怎么办 混泥土地泵排量不稳怎么办 改嫁上海老公孩子的户口怎么办 给小孩办社保卡怎么办 有上海居住证积分怎么办医保 未办理居住证积分新生儿医保怎么办 厦门中考居住证没满三年怎么办 海归落户过了两年期怎么办 借呗学历填错了怎么办 上海落户应届生分不够怎么办 应届生落户分数不够72分怎么办? 上海应届生落户时间延误怎么办 南京市区户口签江宁怎么办 深圳公司集体户口离职后怎么办 济南本地户口不符合入学条件怎么办 上海住亲戚家怎么办居住证 政府卖非农户口怎么办 90年代买了户口怎么办 上海应届大学生积分不够怎么办 广州居住证回执单丢了怎么办 惠阳居住证回执单丢了怎么办 南京居住证换地方了怎么办 买家退回的商品有问题怎么办 农转农户口手续怎么办 原房东不迁户口我怎么办 户主信息页掉了怎么办 户主变了户口本首页怎么办 大人户口迁走小孩户口怎么办 网银转账处理中怎么办 教育部学籍在线验证报告有错怎么办 验证码连续输入三次错误怎么办 交通运输监察大队截车了怎么办 平安安康续保没成功怎么办 危险品经营许可证到期了怎么办 郑万350渝万怎么办 厂里饭堂的饭好难吃怎么办 学校的食堂饭菜不好不卫生怎么办 亲戚借钱我真没有怎么办 榴莲肉酸了吃了怎么办 亲戚赖在家里住怎么办 食堂饭菜味道差该怎么办