JavaSE—常用类 (全)(二)

简介: JavaSE—常用类 (全)(二)


JavaSE—常用类 (全)(一):https://developer.aliyun.com/article/1555339


                                   String类

1. 获取功能的常用方法

 int length( )           获取字符串长度


•  char charAt( )       获取指定位置上的字符


•  int indexOf( )         获取字符首次出现的位置,也可以从指定位置开始查找


•  lastIndexOf( )        从后往前找

•  String substring( )   从指定位置开始截取一个字符串副本

 public static void main(String[] args) {
        //获取功能
        String s1 = "abcdabcd";
 
        //int length() 获取字符串长度
        System.out.println(s1.length());   // 8
        
        //char charAt() 获取指定位置上的字符 
        System.out.println(s1.charAt(4));  //索引4对应的字符 a
        
        //int indexOf() 获取字符首次出现的位置
        System.out.println(s1.indexOf("a"));  //注意是首次出现的位置
        
        //int indexOf(str:  ,fromindex: )   从指定位置开始查找
        System.out.println(s1.indexOf("a",4));
        
        //lastIndexOf() 从后往前找
        System.out.println(s1.lastIndexOf("a"));
        
        //String substring() 从指定位置开始截取一个字符串副本
        String s2=s1.substring(2,6);   //截取索引2~6的字符串(不包含索引6对应的字符)
        System.out.println(s2);     //   2 <= res < 6
 
    }



2. 转换功能的常用方法

•  String toUpperCase( )        将字符串内容全部转换为大写

•  String toLowerCase( )        将字符串内容全部转换为小写

•  String concat(String str)     拼接指定字符串内容到原字符串末尾

•  String [ ] split(分割符)          通过分割符将字符串分割并以数组形式返回

public static void main(String[] args) {
 
        String s1="WoShiChinese";
        System.out.println(s1.toUpperCase()); //转大写
        System.out.println(s1.toLowerCase()); //转小写
 
        String s2 ="我爱中国";
        System.out.println(s2.concat(s1));  //拼接s1字符串内容到s2字符串末尾
 
        //String[] split(分割符)
        String s3 = "张三:中国人;"+"Tom:英国人;"+"梅西:阿根廷人;";
        String[] strings = s3.split(";");  //通过" ; "来截取s3字符串
        System.out.println(Arrays.toString(strings));
    }



3. 替换功能的常用方法

•  String replace(char old,char new)          单个字符替换

•  String replace(String old,String new)      整个字符串替换

•  replaceAll(String regex, String replacement)      替换字符串中所有数字

•  replaceFirst(String regex, String replacement)   替换字符串中第一个数字

 public static void main(String[] args) {
        String s1 = " ab5cd7bda";
        //用"A"替换字符串中所有的"a"
        System.out.println(s1.replace("a","A"));
        //用"G"替换字符串中所有数字       \\d表示所有字符串中所有的数字
        System.out.println(s1.replaceAll("\\d","G"));
        //用"R"替换字符串中第一个数字
        System.out.println(s1.replaceFirst("\\d","R"));
    }



4. 去除字符串两端空格

•  String trim( )     去除字符串两端空格(字符串中间的空格不能去除)

public static void main(String[] args) {
        
        //String trim() 去除字符串两端空格
 
        String s2 =" abcEF 13aD1 ";
        System.out.println(s2);
        System.out.println(s2.length());         //原字符串长度
        System.out.println(s2.trim());//去除两端空格,字符串中间的空格不能去除
        System.out.println(s2.trim().length());  //去除空格后字符串的长度
 
    }



                              StringBuffer类

注意:

  • String可以直接创建字符串对象,而StringBuffer不能,需要新创建一个字符串对象。
          String s1 = "abc";
          StringBuffer s2 = new StringBuffer("abc");

添加功能

○ public StringBuffer append(String str)         在原字符串末尾添加字符串

public static void main(String[] args) {
 
        StringBuffer s1 = new StringBuffer("abc");
        s1.append("def");         // 不能使用+=
        System.out.println(s1);
    }

输出:abcdef

○ public StringBuffer insert(int offset,String str)    向指定位置插入字符串

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abc");
        //向字符串s1末尾添加"def"
        s1.append("def");         // 不能使用+=
        System.out.println(s1);
 
        //向指定位置插入字符串
        s1.insert(1,"ABC");  //向索引为1的位置插入字符串"ABC"
        System.out.println(s1);
    }

输出:aABCbcdef



删除功能

○ public StringBuffer deleteCharAt(int index)      删除单个字符

○ public StringBuffer delete(int start,int end)       删除指定区间的元素,不包含结尾

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abcdef");
        s1.deleteCharAt(2);  //删除索引为2的字符
        System.out.println(s1);
 
        //删除指定区间的元素,不包含结尾
        StringBuffer s2 = new StringBuffer("ABCDEF");
        s2.delete(1,3);
        System.out.println(s2);
    }




替换功能

○ public StringBuffer replace(int start,int end,String str)

StringBuffer s1 = new StringBuffer("abcdef");
        s1.replace(0,3,"ABC");
        System.out.println(s1);

输出:ABCdef


反转功能

○ public StringBuffer reverse( )

StringBuffer s1 = new StringBuffer("abcdef");
        s1.reverse();   //反转
        System.out.println(s1);

输出:fedcba


截取功能

○ 从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abcdef");
        //从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
        String s2=s1.substring(1,4);
        System.out.println(s1);
        System.out.println(s2);
    }


StringBuffer和String的区别

  • String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。
  • StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的,适合单线程。

                                   Math类

 可以直接调用

介绍:


java.lang.Math 提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型.


常用方法有:


○   abs         绝对值

○   sqrt         平方根

○   pow(double a, double b)      a的b次幂

○   max(double a, double b)      min(double a, double b)     比较两数的大小

○   random( )                               返回 0.0 到 1.0 的随机数

○   long  round(double a)           double型的数据a转换为long型(四舍五入)


 public static void main(String[] args) {
        //Math类
        System.out.println(Math.abs(-3));  //绝对值
        System.out.println(Math.sqrt(25)); //平方根
        System.out.println(Math.pow(2,5)); //次方
        System.out.println(Math.round(9.35));//四舍五入
        System.out.println(Math.floor(4.9)); //向下舍去
        System.out.println(Math.ceil(1.1));  //向上补加
        System.out.println(Math.random());   //0~1随机生成 (不等于1)
}


                                Random类

不能直接调用,使用Random类之前需要创建新的对象。

介绍:此类用于产生随机数

常用方法有:

import java.util.Random;
public static void main(String[] args) {
 
        Random random = new Random();
        System.out.println(random.nextBoolean()); //true 或 false
        System.out.println(random.nextInt());//在int的取值范围内随机返回一个整数
        System.out.println(random.nextLong());
        System.out.println(random.nextInt(35)+1); //在给定范围内随机获取一个数  0=<res<给定数
 
        byte[] bytes = new byte[5];
        random.nextBytes(bytes);  //随机取出数组长度个byte类型的随机数
        System.out.println(Arrays.toString(bytes)); 
}


                                    Date类

 不能直接调用,使用Date类之前需要创建新的对象。

1. 获取程序运行时刻的时间

        Date date = new Date();//获取程序运行时刻的时间
        System.out.println(date);

2. 获取自1970 1.1 0:0:0 到程序运行时刻的毫秒值

       Date date = new Date();
        //获取的是自1970 1.1 0:0:0 到程序运行时刻的毫秒值
        System.out.println(date.getTime());

3. 测试效率  

        //测试效率
        Date date1 = new Date();
        System.out.println(date1.getTime()-date.getTime());

测试效率

○ 测试String字符串和StringBuffer字符串循环拼接10万次,程序运行耗时。

○ 测试String字符串拼接速度.

public static void main(String[] args) {
 
        //获取程序运行时刻的时间
        Date date = new Date();
        // System.out.println(date.getTime());
 
        String s1 = "w";
       // StringBuffer s2 = new StringBuffer("w");
        String s3 = "";
       //  StringBuffer s4 =new StringBuffer("");
        for (int i = 0; i < 100000; i++) {
            s3 = s3.concat(s1);
        }
 
        //获取下一个程序运行时刻的时间,即上一个程序运行结束时刻的时间
        Date date1 = new Date();
        // System.out.println(date1.getTime());
 
        System.out.println("用时"+(date1.getTime()-date.getTime())+"毫秒");//最终运行时间
    }


○ 测试StringBuffer字符串拼接速度。

public static void main(String[] args) {
 
        //获取程序运行时刻的时间
        Date date = new Date();
        // System.out.println(date.getTime());
 
        //String s1 = "w";
       StringBuffer s2 = new StringBuffer("w");
        //String s3 = "";
         StringBuffer s4 =new StringBuffer("");
        for (int i = 0; i < 100000; i++) {
            s4 = s4.append(s2);
        }
 
        //获取下一个程序运行时刻的时间,即上一个程序运行结束时刻的时间
        Date date1 = new Date();
        // System.out.println(date1.getTime());
 
        System.out.println("用时"+(date1.getTime()-date.getTime())+"毫秒");//最终运行时间
    }



  • 在前文中我们了解了二者的区别,通过这次测试我们也验证了之前的结论:用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间;而StringBuffer是内容可以改变的字符串,值改变的同时不需要创建新对象,所有拼接起来速度更快。
相关文章
|
1天前
|
Java
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
|
1天前
|
前端开发 JavaScript API
使用$.ajax实现异步请求
使用$.ajax实现异步请求
|
1天前
|
存储 Java 编译器
Java中serialVersionUID的作用
Java中serialVersionUID的作用
|
1天前
|
存储 Java C++
Java中的数据结构选择指南
Java中的数据结构选择指南
|
1天前
|
存储 缓存 Java
Java中缓存实现的最佳实践
Java中缓存实现的最佳实践
|
1天前
|
存储 缓存 Java
JavaSE—IO流 ( 八千字带你快速深入理解IO流体系 )(二)
JavaSE—IO流 ( 八千字带你快速深入理解IO流体系 )(二)
|
1天前
|
存储 安全 Java
JavaSE—集合(零基础讲解完整版)
JavaSE—集合(零基础讲解完整版)
|
1天前
|
存储 Java
JavaSE—IO流 ( 八千字带你快速深入理解IO流体系 )(一)
JavaSE—IO流 ( 八千字带你快速深入理解IO流体系 )(一)
|
1天前
|
Java 索引
JavaSE—常用类 (全)(一)
JavaSE—常用类 (全)(一)
|
1天前
|
Java 程序员 API
JavaSE—异常处理深入了解(一)
JavaSE—异常处理深入了解(一)