欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    黑马程序员java培训就业班笔记StringBuffer基本数据类型的封装总结doc.docx

    • 资源ID:17066031       资源大小:55.39KB        全文页数:19页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    黑马程序员java培训就业班笔记StringBuffer基本数据类型的封装总结doc.docx

    1、黑马程序员java培训就业班笔记StringBuffer基本数据类型的封装总结docDay15总结:1、String类方法编程练习题:重点掌握思想 1,需求:将字符串中进行反转。abcde - edcba思路:1、因为反转,想到之前做个数组的反转的例子,1、先将字符串转变为数组。2、有了数组后直接进行头尾角标元素的位置置换即可3、将数组转成字符串。步骤:1、将字符串转成数组:toCharArray();2、对数组进行位置置换swap()3、将数组转成字符串,用字符串构造函数就可以了。实现代码:Public static void main(String arsg)String str=abcd

    2、e;Str=reverseString(str);Sop(str);/对制定字符串进行反转。接收一个反转的字符串,返回反转后的字符串。Public static String reverseString(String str)/将字符串变成字符数组。Char chs=str.toCharArray();/这里对字串转成字符数组的方法应用还不是很熟悉,应该多花时间补。/对数组进行遍历完成头尾角标元素的置换。For(int start=0,end=chs.length-1;start abcdqrtx; 思路:1、先把字符串变成数组2、对数组元素进行排序3、将数组变成字符串实现代码:Public

    3、static String sortString(String str)将字符串变成数组Char chs=getCharArray(str);对数组进行排序sortCharArray(chs);将排序后的数组变成字符串String temp=new String(chs);Return temp;/对字符数组进行排序Public static void sortCharArray(char chs)For(int x=0;xchs.length01;x+) For(int y=x+1;ychsy)Swap(chs,x .y)Swap()/在此省略不写Public static char get

    4、CharArray(String str)Char chs=str.toCharArray();Return chs;3、需求:获取一个字符串在另一个字符串中出现的 次数。 kk kksdfkkghkkjekkrtkk思路:1、先要明确字符串中的是否有要查找的字串,如果有,应该记录该字串,的第一次出现的位置.2、在第一位位置后,对剩余的字符串再次出现该字串查找,并获取位置,3、以为类推,通过记录数完成字串出现次数的获取。步骤:1、定义计数器2、因为每一次出现的位置不同,所以定义变量记录位置。3、通过indexof方法获取位置,同时该方法的好处就是可以通过-1判断是否存在。4、只要存在,就循环查

    5、找,并计数,同时要获取查找后的剩余字符串,在剩余字符串继续查找,通过substring(start)就可以了,而start的值就是查找到的角标+字串的长度。实现代码:Public static int getSubStringCount(String str,String key)Int count=0;Int index=0;While(index=str.intdex(key,index)!=-1)Index =index+key.length();Count+;Return count; 4,获取两个字符串最大相同子串。 xcvcctvb tyuicctvonmyui思路:1、对短的字串

    6、进行判断,用第一个角标元素和最后一个角标元素,也就是0到length()-1;如果没有,则缩短范围,1到length()-1;或者0到length()-2;依次这样下去,但是判断当了length()+1时就表示没有包含的字串。发现随着字符串比较次数的增加,每次判断的次数也在递增,所以可以用到大圈套小圈的原理实现代码:Public static String getMaxSubString(String s1,String s2)String max,min;定义两个字符串类型的变量max 和min用来记录参与比较的两个字符中那个较大的串,哪个是较小的字串。Max=s1.,length()s2.

    7、length()?s1:s2;Min=s1.equals(max)?s2:s1;用来判断哪个是较小的字串。For(int x=0;xmin.length();x+)For(int y=0,z=min,length()-x;z!=min.length()+1;y+,z+)/z=min.length()-x;用来控制字串缩小的范围,z!=min.,length()+1? String temp=min.substring(y,z);/获取字串Sop(temp);/打印字串If(max.contains(temp)/用contains方法来判断获取到字串是否在较大的串中存在。如果存在则返回这个串。R

    8、eturn temp;Return null;5、对一个字符串去除两端的空格:思路:1、首先对字符串首尾进行判断,是否为空格,怎么去判断?就是拿出元素中的某个字符进行判断。首先要对字符串进行遍历,得用到字符串的长度length()方法,然后用charAt()来判断是否包含空。 2、如果首尾没有空格的时候就要获取字符串,substring(0,length();实现代码:Public static String Trim(String str)Int start=0,end=str.length()-1;While(startend&str.charAt(start)= )用charAt()方法

    9、来判断从首部开始的某个字符是否为空格。Start+;While(startend&str.charAt(end)= )/用charAt()方法来判断从尾部开始的某个字符是否为空格。End-;Return str.substring(start,end+1)/因为substring方法包含头不包含尾,所以要+1,保证取出来的字符串是完整的。 2、Ecplise中package和outline的理解:Package:包资源管理器1、通过该视窗我们能清晰的知道当前工作空间中所有的项目,比如day14,可以通过点击它的下拉栏目src可以知道该项目中包含的源文件 ,同样可以通过包的下拉栏目可以知道源文件

    10、中包含哪些包,比如cn.itcast.string.demo以及cn.itcast.string.test包。同样可以通过查看每个包里面包含的源文件。 2、可以直接在这个视窗中创建project、package、class、interface等。3、在该视窗何总不能查看项目下的运行文件,也就是.class文件。Outline大纲视窗:1、通过该视窗可以知道当前代码中定义的类或者接口,还有所有的成员。 2、我们可以通过该视窗查找代码中某一个类或者成员,因为它都很有层次结构的显示出了当前源码中构成结构,比如定义了哪些方法功能函数,定义哪些成员变量 ,通过在该视窗中双击它,就会在源码中标示出来选定。

    11、 3、同时可以通过在该视窗中可以修改在代码中多处出现的名称。选定要要修改的右键选择refactor-rename进行修改,这样可以修改源码中所有出现的该名称的成员。还可以关联到使用到它的其他的代码中也一并修改。3、开发技巧:将java中已有的功能封装成我们自有的方法,这样的话方便其他人对其进行使用。 以及老师在用高级编译器的对注释小细节的用法。私有和非私有注释代码的写法。代码实现:4、StringBuffer1、特点:i.用于存储数据的容器(数组、对象、变量)其实存储的就是一个数组,把数组进行了封装,数组是没有方法的,只有一个属性length;ii.该容器的长度是可变的,存储了字符串之后可以对

    12、字符串进行修改,但是字符串自身是不能修改的。iii.该容器可以存储基本数据类型和引用型数据类型,注意:怎么理解可变长度数组?当一个数组超出了指定长度数组的长度时,这时就在容器中按照一定的规则创建另一个新数组,这时新创建的数组可能是原来数组长度的一倍或者其他,这时原数组会对新数组进行赋值,把之前装进数组中的数据赋值给新数组,超出了长度的部分再在存储在后面。如果明确了要操作的字符数的话就用StringBuffer(int capacity)明确长度的方法,这样就不用在数组中不断创建新数组了。2、功能:i.添加:1.添加在尾部:StringBuffer append();不支持byte和short数

    13、据类型,其他的都支持,但是也可以使用,因为支持int,这样可以自动类型提升。Eg:StringBuffer sb=new StringBuffer();StringBuffer s1=sb.append(ab); StringBuffer s2=sb.append(cd); sop(s2=sb)true 为什么?因为在stringBuffer缓冲区中始终只有一个容器。 相当于:sb.append(ab).append(cd);添加到指定的位置:2.添加到固定位置:StringBuffer insert(index,data)在指定位置添加指定的数据Eg:sb.append(ab).append

    14、(cd).insert(1,kk);结果akkbcd一定要注意不是abkkcd,是指定在1角标处添加,之前1角标处的元素向后顺延。ii.删除:1.StringBuffer delete(int start,int end)一般情况下有头有尾的通常情况下不包含尾,2.StringBuffer deleteCharAt(index)删除指定位置的字符。Eg:sb.deleteCharAt(3);/结果akkcd,B没有了。sb.delete(1,4);acd 包含1不包含4清除缓冲区:好处:缓冲区不变,可以重复使用。sb.delete(0,sb.length();sb=new StringBuff

    15、er();这也是清除缓冲区的另一方式。哪一种好?第一种把缓冲区的东西全部删除。第二种是重新创建一个空间占用内存,第一种好 sb.setLength(2);结果:ak 保留缓冲区的长度,同样可以用来清除缓冲区sb.setLength(0);结果为空。同样可以清除缓冲区。iii.查找:char CharAt(index); int indexOf(str); int lastIndexOf(str);iv.修改:1.Void setCharAt(index,chs);修改指定位置的字符。Eg: sb.setCharAt(2,p);结果为akpbcd2.StringBuffer replace(st

    16、art,end,str)Eg:sb.replace(1,3,cctv)acctvbcd 还是包含头不包含尾,把KK替代了。3.Reverse();反转Eg:StringBuffer sb2=new StringBuffer(abcdef); sb2.reverse();/fedcbas3、StringBuffer和数组的区别:a)数组是固定长度的,字符串缓冲区是可变长度的。b)数组中的元素类型是固定的同一类型,字符串缓冲区是任意的,也可以是同一类型。c)数组对象只有一个length属性通过角标操作数组中的元素,而字符串缓冲区是通过一系列的方法对字符串进行操作。d)数组中的元素可以通过角标直接进

    17、行访问,而字符串缓冲区元素通常操作后要通过toString变成字符串使用。Eg:将一个整数数组变成字符串,格式:元素1,元素2,. pubic static String arrayToString(int arr) String str=; for(int x=0;xarr.length;x+) if(x!=arr.length-1) str=str+arrx+, ; else str=str+arrx+ rteurn str; 方法二: pubic static String arrayToString2(int arr) StringBuffer sb=new StringBuffer(

    18、); sb.append(); for(int x=0;xarr.length;x+) if(x!=arr.length-1) str=str+arrx+, ; else str=str+arrx+ rteurn sb.toString(); 总结:第二种方式,产生的字符串全部都装在了stringBuffer里面,不用产生很多的字符串,后面直接返回一个字符串就可以了。然而第一种是不断的产生新的字符串。4、StringBuilder:特点:是jdk1.5版本出现后的新特性,可以替代StringBuffer,但是二者是有区别的:1、StringBuilder是线程不同步的,StringBuffer

    19、是线程同步的。2、二者用法相同,但是StringBuilder效率较StringBuffer高。在开发单线程时用StringBuilder。3、提高效率的原理是单线程,没有锁的机制。操作容器的方法很多,增删改查,如果一个线程在添加,一个线程在删除,这样就降低了效率,在一个添加时不能删除,此时使用的是同一个锁,只要以判断锁就在消耗资源。实现代码:StringBuilder s1=new StringBuilder(hello);StringBuilder S2=new StringBuilder(java);Method(s1,s2);Method(String s1,String s2)S1.

    20、append(s2);S1=s2;输出结果:hello java java内存分析:分析:基本步骤就不再多说,这里最主要的是,s2.append(s2),在内存中是怎么样实现的,就是说把s2的字符串内容添加到s2中,此时s1在内存中的对象值为hello java。s1=s2是指将s2的内存空间地址复制给s1此时s1指向了s2.当method方法结束后,弹栈,打印主函数中s1和s2此时s1还是指向堆内存中的s1对象值为:hello java s2指向的还是堆内存中的s2对内存中的内容为java5、基本数据类型的对象包装类Byte-ByteShort-ShortInt-IntergerChar-C

    21、haracterLong-LongDouble-DoubleFloat-Floatboolean-Boolean5.1把基本数据类型封装成对象的好处:可以在对象中定义更多的属性和行为对基本数据类型进行操作。比如:整数的范围,如果整数被封装成为对象,那么取值范围当然是对象自己最清楚。所以只要调用对象中的属性和行为即可。5.2常见的操作:不懂,没有大概的体系?思路不清晰!1、sop(Integer.parseInt(21)+4)/结果25 parseInt()这个方法只能往里面传的是有效的数字格式字符串。 2、对于其他的数据类型的字符串转换方式都一样的。 xxx a=Xxx.parseXx(Xxx

    22、String) int a=Interger.parseInt(23); long a=Long.parseLong(345); boolean a=Boolean.parseBoolean(true); 有一种类型没有parse方法: Character,因为它就是字符类,不需要去转换,可以对指定的字符转成大小写。 3、怎么将整数转成字符串呢? int num=4; s=Integer.toString(num); 4、如何将一个整数数值封装成对象呢?通过构造函数。还可以通过静态方法。valueof的形式。 new Integer(4); new Integer(34353); Intege

    23、r i1=new Integer(4); Integer i2=new Integer(4); sop(i1=i2);false 比较的是地址值 sop(i1.equals(s2);true只比较里面的数值的大小。 5、将其他进制转成十进制。 int x=Interger.parseInt(110,2);2代表的是用什么进制来解析,这里就是说110是用二进制来解析的代表6 sop(x+1);结果为7 6、怎么将整数对象转成整数呢? 使用IntValue() int y=i1.intValue();sop(y+1);结果为5,6、自动拆箱和自动装箱:Jdk1.5版本后对基本数据类型对象包装类进行

    24、了升级,可以像操作基本数据类型一样操作基本数据类型对象。Eg:integer z=4;在此4是一个对象,进行了自动装箱Z=new Interger(4);Z=z+5;这里进行自动拆箱过程,它等价于z=new Integer(z.intValue()+5);注意:在书写时,要注意Z可以取的值多了一个null,要对它进行判断。实现代码:Integer m=128; Integer n=128; Integer m1=new Integer(128); integer n1=new Integer(128); m1=n1?false m=n?false当换成127时,m=n true 为什么?如果自

    25、动装箱的数据在byte范围之内,同样的数据不再单独开辟空间。7、练习:1、要求:34 9 -1 78 3 22对字符串中的数值进行从小到大的排序, 变成一个数值有序的字符串。 -1 3 9 22 34 78 参考BaseTypeTest.java实现代码:思路:1、看到了排序,想到了数组2、发现数组中的元素都在字符串中,怎么获取字符串中的这些数据呢?3、发现这些数据之间都用空格分隔,可以通过字符串对象的方法进行分割4、对于分割完成的字符串是一个字符串数组。5、将字符串数组转成Int数组。6、将对int数组进行排序。7、将int数组变成字符串。Public class BaseTypeTestP

    26、rivate static final String SEPARATOR= ;这里为什么要定义常量?因为下面的代码中有几次都用 这个字符串。为了体现其专业性,以及更好的把前面学习到的知识结合起来,就将它用final修饰。Public static void main(String args)String str=34 9 -1 78 3 22;Str=sortNumberString(str);Sop(str);Public static String sortNumberString(String str) 1、将字符串进行切割String nums=getNumberStringArray

    27、(str);2、将字符串数组转成int数组Int arr=StringArrayToIntArray(nums);3、对int数组进行排序sortIntArray(arr);4、将int数组变成字符串String temp=intArrayToString(arr);Return temp;Public static String getNumberStringArray(String str)Return str.split(SEPARATOR);Private static int StringArrayToIntArray(String nums)Int arr=new intnums.

    28、length;For(int x=0;xnums.length;x+)Arrx=Interger.parseInt(numsx);Return arr;Priavte static void sortIntArray(int arr) Arrays.sort(arr);Private static String intArrayToString(int arr)StringBuilder sb=new StringBuilder();For(iint x=0;xarr.length;x+)If(x!=arr.length=-1)Sb.append(arrx+SEPARATOR);ElseSb.

    29、append(arrx);Returun sb.toString();练习2:需求:对一个字符串数组进行字典书序从小到大的排序。 nba,abc,cba,aaaa,z,qq排序前 aa,abc,cba,nba,qq,z排序后 思路: 1、既然是对数组排序,无非就是对数组中的元素进行比较,并在满足条件后进行位置 的置换。对象是不能进行大小写比较的。对象排序都用compareTo()这个方法来排基 本数值用大小于来比较。实现代码:Public static void main(String args)String str=nba,abc,cba,aaaa,z,qq;Sop(printArray(str);sortStringArray(str);Sop(pri


    注意事项

    本文(黑马程序员java培训就业班笔记StringBuffer基本数据类型的封装总结doc.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开