zoukankan      html  css  js  c++  java
  • java学习笔记15(String 类,StringBuffer)

    /*
     * String类的特点:
     * 所有的""都是String的对象
     * 字符串一旦创建就是常量,不能改变
     */
    public class StringDemo {
        public static void main(String[] args) {
            //发现创建对象不需要new
            String str = "abcd";
            System.out.println(str);
            //输出:abcd而不是内存地址,因为String类重写了toString方法
            str = "efgh";
            System.out.println(str);
            //输出:efgh,之前不是说常量不能改变吗?这里的原因:
            //字符串本身是一个对象,在堆内存中,字符串本质是一个字符的数组
            //源码:private final char value[];有final修饰,因此String是常量
            //str = "efgh"是在内存中重新开一片,str的指向改变了,而"abcd"字符串对象没有改变
            
        }
    }

    String练习:

    //1.统计某字符串中另一字符串出现的次数
    public class Demo1 {
        public static void main(String[] args) {
            String s=new String("goodgoodstudy,daydayup");
            int count=0;
            JiShuQi(s,"good", count);
        }
        private static void JiShuQi(String s,String key, int c) {
            int x=s.indexOf(key);
            if (x==-1) {
                System.out.println(key+"出现的次数为"+c);
                return;
            }
            s=s.substring((x+key.length()));
            c++;
            JiShuQi(s, key, c);    
        }
    }
    //将一字符串首字母变成大写,其余字符小写
    public class Demo2{
        public static void main(String[] args) {
            String s=new String("ksdhfEGBDebf");
            Change(s);
        }
    
        private static void Change(String s) {
            String head=s.substring(0, 1).toUpperCase();
            String sur=s.substring(1).toLowerCase();
            String str=new String(head+sur);
            System.out.println(str);
        }
    }
    public class Zuoye3 {
        /*
         * 获取指定字符串中,大写字母、小写字母、数字的个数。
         String s = "asdklf2234jlOLKJ";   97--122小写
                                          65-90   大写
                          48-57  0-9
         * 思想:
         *   1. 计数器,就是int变量,满足一个条件 ++
         *   2. 遍历字符串, 长度方法length() + charAt() 遍历
         *   3. 字符判断是大写,是小写,还是数字
         */
        public static void main(String[] args) {
            String s = "asdklf2234jlOLKJ";
            int index=0;
            JiShu(s,index,0,0,0);
        }
    
        private static void JiShu(String s,int index, int Dcount, int Xcount, int Ncount) {
            char x=s.charAt(index);
            if (x>=65&x<=90) {
                Dcount++;
            }else if(x>=97&x<=122){
                Xcount++;
            }else if(x>=48&x<=57){
                Ncount++;
            }
            index++;
            if(index==s.length()){
                System.out.println("大写字母:"+Dcount+"个,小写字母:"+Xcount+"个,数字:"+Ncount+"个");
                return;
            }
            JiShu(s, index, Dcount, Xcount, Ncount);
        }
    }
    /*StringBuffer 
    定义:可变字符数组    线程安全的 可变字符序列 内部定义了数组,数组没有final,可以改变,数组默认容量16
    StringBuffer与String 的区别:String是一个不可变的字符序列
                              String一旦创建就是常量 不能改变
    StringBuffer的 方法:append();
                      insert();
                      delete();
                      replace();
                      reverse();
                      toString();
    StringBuffer与StringBuilder的区别:StringBuffer是jdk1.0版,线程安全,效率低,
                                    StringBuilder是jdk1.5版,线程不安全,效率高
            开发中用StringBuilder,因为开发速度快
    */
    public class StringBufferDemo {
        public static void main(String[] args) {
            StringBuffer str=new StringBuffer();
            fun1(str);
            fun2(str);
            fun3(str);
            fun4(str);
            fun5(str);
            fun6(str);
        }
    
        private static void fun6(StringBuffer str) {
            // toString()转字符串;
            System.out.println("方法6:toString()方法");
            System.out.println("原字符串"+str);
            String s=str.toString();//将StringBuffer转字符串类型
            System.out.println("转字符串:"+s);
        }
    
        private static void fun5(StringBuffer str) {
            // reverse()方法:
            System.out.println("方法5:reverse()方法");
            System.out.println("原字符串"+str);
            str.reverse();
            System.out.println("翻转后字符串:"+str);
            System.out.println();
            
        }
    
        private static void fun4(StringBuffer str) {
            // replace()方法
            //replace(start, end, str);start:要替换字符的开始位置,end:替换的结束位置(不包含结束位置字符),str:替换的字符串
            System.out.println("方法4:replace()方法");
            System.out.println("原字符串为:"+str);
            str.replace(1, 3, "-i love java-");
            System.out.println("替换后的字符串为:"+str);
            System.out.println();
        }
    
        private static void fun3(StringBuffer str) {
            // delete()方法
            //delete(start, end)start:开始下标 end:结束下标()不包含结束下标的字符
            System.out.println("方法3:delete()方法");
            System.out.println("原字符串:"+str);
            str.delete(3, 5);
            System.out.println("删除后字符串:"+str);
            System.out.println();
        }
    
        private static void fun2(StringBuffer str) {
            // insert(插入的位置(下标),插入的字符串)方法
            System.out.println("方法2:insert()方法");
            System.out.println("源字符串为:"+str);
            str.insert(3, "java");
            System.out.println("插入后字符串为"+str);
            System.out.println();
        }
    
        private static void fun1(StringBuffer str) {
            // append()方法:追加
            System.out.println("方法1:append()");
            str.append("hello world");
            System.out.println("原字符串为空,追加后为:"+str);
            System.out.println();
        }
    }
    /*结果:
     * 方法1:append()
    原字符串为空,追加后为:hello world
    
    方法2:insert()方法
    源字符串为:hello world
    插入后字符串为heljavalo world
    
    方法3:delete()方法
    原字符串:heljavalo world
    删除后字符串:helvalo world
    
    方法4:replace()方法
    原字符串为:helvalo world
    替换后的字符串为:h-i love java-valo world
    
    方法5:reverse()方法
    原字符串h-i love java-valo world
    翻转后字符串:dlrow olav-avaj evol i-h
    
    方法6:toString()方法
    原字符串dlrow olav-avaj evol i-h
    dlrow olav-avaj evol i-h**/
  • 相关阅读:
    php 表单的活用
    PHP 内存的分布问题
    php 半角与全角相关的正则
    解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sourcesinstall.wim
    VS2010或2012中,如何设置代码格式化?
    变色龙引导安装黑苹果 遇到的问题的解决办法
    Ozmosis实现BIOS直接启动Yosemite,基本完美
    MMTool制作Ozmosis引导BIOS完美引导OS X系统
    黑苹果安装步骤
    win8.1 usb3 速度慢的解决方法
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10558619.html
Copyright © 2011-2022 走看看