10、匿名内部类、枚举类、日期、Math、Random、String、equals、StringBuffer、包装类、对象数组、克隆,标准输出2

1、Math类(在java.lang包中)

  Math.abs()计算平均数

  Math.ceil()比浮点数大的最小整数值  6.5——>7  ,常用作分页

  Math.floor()比浮点数小的最大整数值   6.5——>6

  Math.power(2,3);  计算2的3次方

  Math.random();随机数生成器  随机返回一个大于等于0.0,小于等于1.0的浮点数

    随机数的公式:Math.round(Math.random()*(y-x))+x;(随机出x到y的整数)

  Math.round()只能四舍五入到整数位。

  Math.sqrt()开方

  

  引入大整数包:java.math.BigDecimal;

  BigDecimal d= new BigDecimal(9.33);

  System.out.println(d.setScale(2,BigDecimal.ROUND_HALF_UP));

  设置大整数,设置其精确度为0.01位,然后四舍五入

2、random

  引入随机数类包:java.util.random;

  1、不使用种子:   

    Random r= new Random();

    System.out.println(r.nextInt(bound));——>可以生成随机整数,范围是bound

  2、使用种子:(种子数值无所谓)

    Random r= new Random(10);

    System.out.println(r.nextInt(bound));

    

    Random r1= new Random(10);

    System.out.println(r1.nextInt(bound));  

    相同的种子产生的随机数相同;

  

    汉字的随机生成

    Random r2=new Random();

    System.out.println((char)(r2.nextInt(10000)+20000));

3、String类

  String对象代表一组不可改变的Unicode字符序列。当引起字符串的属性或长度改变的操作,将会得到一个复制了原对象中所需部分的新的String对象。 (副本)

  1、“字符串”.toCharArray();将字符串转换成字符数组

  2、字符连接:

    1、String a="a"+"b";(开了3个堆)

    2、String b="a".concat("b").concat("c");(开了两个堆)

    3、StringBuilder和StringBuffer类(用在多个字符串连接的场合,会产生好多无用堆,导致速度变慢,这两个解决,速度快)这两个类都在lang包中。

       1、StringBuffer

        优点:速度快   缺点:占内存

         StringBuffer sb=new StringBuffer();

         sb.append("你好");

         sb.append("哈尔滨");

         System.out.println(sb);

        System.out.println(sb.capacity());(开StringBuffer空间,初始16个汉字的大小,满了之后会扩展为(16+1)*2大小)

      这里打印sb对象就能出现一个字符串明显反映了StringBuffer中重写了toString方法

        sb.insert(index,"哈尔滨”);(在index位置上插入)

        sb.delete(1,2);(删除1,2之间的字符串)

        sb.reverse()://翻转字符

        sb.indexOf("哈");

        sb.replace(0,2,"黑龙江");  

  

      2、StringBuilder类

         StringBuffer用在线程同步中,比较安全,性能略差

         StringBuilder不用再线程同步中,不安全,性能好

         其他两者一样。

    工作中遇到StringBuffer的地方很少,大多使用StringBuilder,StringBuilder的性能损失已经很少了

   3、将基本类型转换成字符串

        String s=String.valueOf(123);

       

   4、比较:使用equals()方法可以比较两个字符串,还可以使用equalsIgnoreCase()方法在忽略大小写的情况下看是否相同。

      String a="哈尔滨";

      String b="哈尔滨";

      a==b;

      当字符串内容相等时,a、b两个栈指向同一个堆,所以栈的内容都是同一个堆的地址。

      当要看两个堆内容是否相等时,使用equals();

       a.equals(b);

    能保持==(地址相同,堆就是同一个)的一定equals(同堆内容同),但是equals的不一定==;

    compareTo:比较一个String对象与另一个对象的词汇值,"abc".compareTo("def");得-3;即长度相同,按首个不同的字符进行减;长度不同,比长度。

   5、查找

      能不能查到:前缀查找:startwith()  后缀查找:endwith()

      查找字符在字符串中的位置:indexof(str,fromindex)     /  lastIndexOf(str,fromindex)从后面找,从前面数。

   6、编辑

      trim

      去掉左右空格;rtrim()去掉右空格,ltrim()去掉左空格;

      toUpperCase()  toLowerCase()转大写小写

   7、分割(split(regex)返回一个字符数组)

      String s2="a=100";

      String [] as=s2.split("=");

      as[0]=a;

      as[1]=100;

   8、重写equals

    

@Override
    public boolean equals(Object obj) {
        if(obj==null){
            return false;
        }
        if(this==obj){
            return true;
        }
        if(this.getClass()!=obj.getClass()){
            return false;
        }
        MyDog dog=(MyDog)obj;
        if(this.year==dog.year&&this.name.equals(dog.name)){
            return true;
        }
        return false;
        
    }

  除了在HashTable、HashMap、HashSet等hash结构的集合时才会重写hashCode不然不重写

4、包装类

  包装类父类是Number类,基本类型没父类

包装类相当于基本类型和引用类型的交流的媒介。起到承上启下作用。

1、将基本类型变成字符串(装箱)——>用String.valueOf可以将基本类型变成字符串  或  Integer data1=10;基本类型变包装类

2、将字符串变成基本类型(拆箱)——>用包装类Interger.parseInt(s1);

5、对象数组

  存放对象的数组,也可以排序(Arrays.sort())但是得先让对象的类实现Comparable接口,重写compareto方法。

  可以二分查找:Arrays.binarySearch(array[],key);

6、标准输出

  print()方法会将它的参数放到标准输出中 

  println()方法会附加一个换行符

  printf()方法能够格式化输出

    %9.2  9是一共9位,2是小数点后两位进位

    %+9.2   +表示带正负号

    %-9.2  -表示左对齐

    

原文地址:https://www.cnblogs.com/television/p/8413008.html