传智博客JAVA基础第十六天

1:String类的三个练习
    (1)把字符串按照字符的自然顺序排序并输出。掌握
    (2)查找大串中小串的出现次数。
    
    public static int getCount(String fuString,String ziString)
    {
        int count = 0;

        int index = fuString.indexOf(ziString);
        while(index!=-1)
        {
            count++;
            fuString = fuString.substring(index+ziString.length());
            index = fuString.indexOf(ziString);
        }

        return count;
    }

    改进后的代码:
    public static int getCount(String fuString,String ziString)
    {
        int count = 0;

        int index = 0;
        //条件不同:在这里做了三件事情(查,赋值,判断)
        while((index=fuString.indexOf(ziString))!=-1)
        {
            count++;
            fuString = fuString.substring(index+ziString.length());
        }

        return count;
    }

    (3)查找两个字符串中的最大子串。
    public static String getSubString(String s1,String s2)
    {
        String maxString,minString;

        maxString = s1.length()>s2.length()?s1:s2;
        minString = maxString.equals(s1)?s2:s1;

        for(int x=0; x<minString.length(); x++)
        {
            for(int start=0,end=minString.length()-x; end<=minString.length(); start++,end++)
            {
                String temp = minString(start,end);
                if(maxString.contains(temp))
                {
                    return temp;
                }
            }
        }

        return null;
    }

2:StringBuffer和StringBuilder(重点)
    (1)StringBuffer是字符串缓冲类。可以看成是一个容器。
        A:StringBuffer和String的区别
            StringBuffer是长度可变的,每次的操作都采用的是同一个空间。
            而String长度是固定的,每次操作都是一个新的字符串空间。
        B:StringBuffer和数组的区别
            StringBuffer是长度可变的,并且可以存储不同类型的数据。
            而数组时长度固定的,只能存储同一种类型的数据。
    (2)StringBuffer构造方法
        A:StringBuffer sb = new StringBuffer();
        B:StringBuffer sb = new StringBuffer(50);
        C:StringBuffer sb = new StringBuffer("hello");

        测试了两个方法:
        capacity():指的是缓冲区能够存储的元素个数
        length():指的是实际存储的元素个数
    (3)StringBuffer的功能方法
        A:添加
            append:在末尾追加元素
            insert:在指定位置添加元素,其后元素后移
        B:删除
            deleteCharAt:删除指定位置的单个字符
            delete:删除从起始位置开始到结束位置的多个字符。
                   包括左边,不包括右边。
        C:替换
            replace:用新的字符串替换从指定位置开始到结束位置的字符串
        D:截取
            subString:默认是从指定位置截取到末尾。
                  如果指定了起始位置和结束位置,那么就是截取指定长度的字符串。
                  包括左边,不包括右边。
        E:反转
            reverse:把字符串的内容进行了反转
    (4)StringBuffer和StringBuilder的区别
        StringBuffer是同步的。-- 线程安全的
        StringBuilder是不同步的。 -- 线程不安全的。

        JDK的升级:
        A:效率
        B:安全
        C:简写
    
3:基本数据类型的包装类
    (1)为了方便我们对象基本类型进行操作,java就对每种基本类型进行了封装。
       对应封装类如下
       byte Byte
       short Short
       int Integer
       long Long
       float Float
       double Double
       char Character
       boolean Boolean

       好处:举例
        比如说int的最大值,最小值,以及进制转换变的非常简单。
    (2)Integer的构造方法
        A:Integer i = new Integer(100);
        B:Integer i = new Integer("100");
        
        注意:字符串变成Integer类型数据的时候,可能会有一个异常。
              NumberFormatException。
              要求是:这个字符串中只能包含数字字符。
    (3)int类型和String类型的转换(重点)
        A:int -- String
            int num = 100;
            String s = String.valueOf(num)
            String s = Integer.toString(num)
        B:String -- int
            String s = "100";
            int i = Integer.parseInt(s);
    (4)基本类型包装类在JDK5以后的新特性
        自动装箱和拆箱的操作。

        Integer i = 100;  //装箱 new Integer(100);
        i += 200;      //拆箱 i.intValue()+200 结果是300
                  //装箱 new Integer(300)

        注意:Integer最好检查一下是否为null。否则会有空指针异常。
    (5)Integer的一个小细节
        在byte范围内,直接赋值,值被重用。

        Integer i1 = 128;
        Integer i2 = 128;
        sop(i1==i2); //false

        Integer i3 = 127;
        Integer i4 = 127;
        sop(i3==i4); //true

4:Math类的使用
    (1)Math类:没有构造方法,那么如何使用方法呢?
        A:这个类中的所有属性和方法都是静态的。
        B:通过单例设计模式在类的功能中提供了一个获取该类对象的功能。
    (2)需要掌握的属性和方法:
         * PI:π的值
         * E:自然对数的底数
         * abs:返回某个数据的绝对值
         * max:返回两个数中较大的那个
         * min:返回两个数中较小的那个
         * sqrt:返回的是正平方根
         * cbrt:返回的是立方根
         * pow:返回第一个参数的第二个参数次幂的值
         * ceil:大于等于参数,的最小整数
         * floor:小于等于参数,的最大整数
         * round:返回四舍五入一个值
         * random:返回一个随机数,范围[0.0-1.0)
         * 获取一个1-100直接的随机数:
         * (int)(Math.random() * 100)+1


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值