• Java 常用类


    1. 字符串常用类

      String类的构造函数:

        String();

        String(byte[]);

        String(byte[],offset,length);

        String(char[],offset,length);

        String(char[],offset,length);

    public class StringTest01{
        public static void main(String[] args){
            String s1 = "abc";
            String s2 = new String("abc");
            System.out.println(s1 + " " + s2);
            
            byte[] bytes = {97,98,99}; //97->a,98->b,99->100
            String s3 = new String(bytes);
            String s4 = new String(bytes,1,2);
            System.out.println(s3 + " " + s4);
            
            char[] chars = {'你','说','呢'};
            String s5 = new String(chars);
            String s6 = new String(chars,1,2);
            System.out.println(s5 + " " + s6);
            
        }
    }

      a. 字符串是不可变对象(public final class String),被final修饰,不能被继承;

      b. 字符串保存在方法区中的“字符串常量池”中,因为字符串使用频繁,这样方便使用;

          String s2 = "abc";  //在栈中保存了字符串s2的内存地址,在方法区字符串常量池中保存了abc,s2指向abc;

       String s3 = new String("abc");    //在栈中保存了字符串s3的内存地址指向堆,堆中创建了对象,保存内存地址指向字符串常量池,字符串保存在方法区的字符串常量池中;

      字符串的常用方法:

    public class StringTest02{
        public static void main(String[] args){
            //1. charAt()  返回字符串指定索引位置的字符
            char c = "abc".charAt(2);
            System.out.println(c);  //c
            
            //2. compareTo()  字符串首比较,相等返回0,前面大返回1,后面大返回-1
            System.out.println("abc".compareTo("abc"));  //0
            System.out.println("abc".compareTo("bdf"));  //-1
            System.out.println("bdf".compareTo("ace"));  //1  首字符比较出结果就可以
            
            //3. contains()  前面字符串是否包含后面字符串
            System.out.println("hello world".contains("world"));  //true
            System.out.println("hello world".contains("ord"));  //false
            
            //4. endsWith()  是否已指定字符串结尾
            System.out.println("helloworld.java".endsWith(".java"));  //true
            System.out.println("helloworld.java".endsWith(".text"));  //false
            System.out.println("helloworld.java".endsWith(".a"));  //false
            
            //5. equals() 判断字符串是否相等
            System.out.println("abc".equals("abc"));  //true
            
            //6. equalsIgnoreCase()  判断字符串是否相等忽略大小写
            System.out.println("abc".equalsIgnoreCase("AbC"));  //true
            
            //7. getBytes()  返回字符对应的ASCII码
            byte[] b1 = "abcdf".getBytes();
            for(int i=0; i<b1.length; i++){
                System.out.print(b1[i] + " ");    //97 98 99 100 102
            }
            
            //8. indexOf()  返回字符串初次出现位置的索引
            System.out.println("helloworld.javapythonjava".indexOf("java"));  //11
            
            //9. isEmpty()  判断字符串是否为空
            System.out.println("".isEmpty());  //true
            System.out.println("ABC".isEmpty());  //false
            
            //10. length()  获取字符串长度
            System.out.println("".length());  //0
            System.out.println("abc".length());  //3
            
            //11. lastIndexOf() 返回字符串最后一次出现位置的索引
            System.out.println("helloworld.javapythonjava".lastIndexOf("java"));  //21
            
            //12. replace() 字符串替换,返回新字符串
            String str1 = "helloworld".replace("world","java");  
            System.out.println(str1);
            
            //13 split() 字符串分割,返回字符串数组
            String[] str2 = "2021-11-08".split("-");
            for(int i=0; i< str2.length; i++){
                System.out.print(str2[i] + " ");
            }
            
            //14 startsWith() 判断字符串是否以指定字符串开始
            System.out.println("www.baidu.com".startsWith("www"));  //true
            System.out.println("www.baidu.com".startsWith("wwws"));  //false
            
            //15 substring() 字符串截取
            System.out.println("www.baidu.com".substring(4));  //baidu.com
            System.out.println("www.baidu.com".substring(4,9));  //baidu  左开右闭
            
            //16 toCharArray() 转换为字符数组
            char[] c1 = "牛气冲天".toCharArray();
            for(int i=0;i<c1.length;i++){
                System.out.print(c1[i] + " ");  //牛 气 冲 天
            }
            
            //17 toLowerCase()  toUpperCase()  字符串小写转换,字符串大写转换
            System.out.println("abcdABCDedf".toLowerCase());  //abcdabcdedf
            System.out.println("abcdABCDedf".toUpperCase());  //ABCDABCDEDF
            
            //18 trim()  去掉字符串前后空格
            System.out.println("  hello world ".trim());  //hello world
            
            //19 valueOf()  静态方法,类名调用,转换为字符串
            String str3 = String.valueOf(100);  //100
            System.out.print(str3);
        }
    }

      字符串拼接:

        a. 使用“+”,使用加号拼接需要频繁创建对象,效率低;

        b. 使用StringBuffer,默认创建一个16字节容量的数组,也可以指定容量大小;

        c. 使用StringBuilder,和StringBuffer使用方法相同,区别:StringBuffer中的方法都是synchronized修饰,表示在多线程环境下可以安全使用,而StringBuilder的方法没有被synchronized修饰,表示在多线程场景下使用不安全;

    public class StringTest03{
        public static void main(String[] args){
            String s1 = "abc" + "bac";
            System.out.println(s1);
            
            StringBuffer sb = new StringBuffer();  //默认创建一个容量是16的byte[]
            sb.append(100);
            sb.append(3.14);
            sb.append("adfda");
            sb.append(true);
            System.out.println(sb);
            
            StringBuffer sb1 = new StringBuffer(100);  //可以指定容量大小
            sb1.append(200);
            sb1.append(3.11);
            sb1.append("ad");
            System.out.println(sb1);
            
            StringBuilder sb2 = new StringBuilder();
            sb2.append("eeee");
            sb2.append(300);
            sb2.append(3.22);
            System.out.println(sb2);
        }
    }

    2. 包装类

      包装类的常用方法

    public class IntegerTest07 {
        public static void main(String[] args) {
            int x = Integer.parseInt("123");   //parseInt  静态方法
            System.out.println(x);
    
            float f = Float.parseFloat("2.1");  //parseFloat
            System.out.println(f+1);
    
            double d = Double.parseDouble("3.14");  //parseDouble
            System.out.println(d);
    
            String binaryString = Integer.toBinaryString(6);  //十进制转换为二进制字符串
            System.out.println(binaryString);   //"110"
    
            String hexString = Integer.toHexString(16);  //十进制转换为16进制字符串
            System.out.println(hexString);   //"10"
    
            String octalString = Integer.toOctalString(8);  //十进制转换为八进制字符串
            System.out.println(octalString); // "10"
    
            Integer integer = Integer.valueOf(100);
            System.out.println(integer);  //100
    
            Integer integer1 = Integer.valueOf("100");
            System.out.println(integer1);
    
        }
    }
      Integer int String 之间的类型转换
    public class IntegerTest08 {
        public static void main(String[] args) {
            //String -->int
            int i = Integer.parseInt("123");
            //int -->String
            String s = i + "";
            System.out.println(i + "    " +  s);
    
            //int --> Integer
            Integer integer = 100;
            //Integer --> int
            int y = integer;
            System.out.println(integer + "    " +  y);
    
            //String --> Integer
            Integer integer1 = Integer.valueOf("100");
            //Integer --> String
            String s1 = String.valueOf(integer1);
            System.out.println(integer1 + "    " +  s1);
        }
    }

    3. 日期类

      String转换为Date,使用parse()

      Date转换为String,使用format()

    public class DateTest01 {
        public static void main(String[] args) throws Exception{
            Date nowtime = new Date();
            //System.out.println(nowtime);    //获取系统当前时间
    
            //Date转换为String
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS a E");
            String nowtimestr = sdf1.format(nowtime);
            System.out.println(nowtimestr);  //输出指定格式的日期
    
            //String转换为Date
            String nowtimestr1 = "2021-02-15 19:17:00 300";
            SimpleDateFormat sdf2 = new SimpleDateFormat("yy-MM-dd HH:mm:ss SSS");
            Date nowtime1 = sdf2.parse(nowtimestr1);
            System.out.println(nowtime1);
        }
    }
      currentTimeMillis()方法可以计算方法的耗时
     示例1:
    public class DateTest02 {
        public static void main(String[] args) {
            long currentTime = System.currentTimeMillis();   //获取从1970年开始到现在时间的毫秒数
            System.out.println(currentTime);
            long begin = System.currentTimeMillis();
            print();    //计算执行方法所需要的时间
            long end = System.currentTimeMillis();
            System.out.println("执行print()方法所需要的时间:"+ (end - begin) + " 毫秒");
        }
    
    
        public static void print(){
            for (int i = 0; i < 1000; i++) {
                System.out.println("i == " + i);
            }
        }
    }

      示例2:

    public class DateTest03 {
        public static void main(String[] args) {
            Date time = new Date(1);   //参数单位:毫秒 , 添加参数表示从1970年开始经历毫秒后的时间
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            String timeStr = sdf.format(time);
            System.out.println(timeStr);   //1970-01-01 08:00:00 001  北京时差
    
            Date yesterday = new Date(System.currentTimeMillis() - 24*60*60*1000);
            String yesterdayStr = sdf.format(yesterday);
            System.out.println(yesterdayStr);  //2021-02-14 20:17:31 494 获取昨天现在的时间
    
            Date tomorrow = new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000);
            String tomorrowStr = sdf.format(tomorrow);
            System.out.println(tomorrowStr);   //2021-02-16 20:19:14 355 获取明天现在的时间
        }
    }

    4. 数字格式化:

       DecimalFormat 数字格式化

        #:表示任意数字

        ,: 表示千分位

        .:   表示小数点位

        0:  表示不够补0

    public class DecimalFormatTest01 {
        public static void main(String[] args) {
            DecimalFormat df = new DecimalFormat("###,###.##");
            String str1 = df.format(1234.5678);
            System.out.println(str1);  //1,234.57
    
            DecimalFormat df1 = new DecimalFormat("###,###.0000");
            String str2 = df1.format(1234.56);
            System.out.println(str2);  //1,234.5600
        }
    }

      BigDecimal:高精度计算,主要用于财务类的计算中

    public class DecimalFormatTest02 {
        public static void main(String[] args) {
            BigDecimal bg1 = new BigDecimal(100);
            BigDecimal bg2 = new BigDecimal(200);
            BigDecimal bg3 = bg1.add(bg2);
            BigDecimal bg4 = bg2.divide(bg1);
            System.out.println(bg3);
            System.out.println(bg4);
        }
    }

    5. 枚举类型

      当返回值有两种类型时,可以使用boolean类型

      当返回值有三种或三种以上类型时,可以使用枚举类型,枚举也是一种引用数据类型,枚举中的值可以看作常量

    public class EnumTest01{
        public static void main(String[] args){
            Result r = divide(10,0);
            System.out.println(r == Result.SUCCESS? "计算成功":"计算失败");
        }
        
        public static Result divide(int a, int b){
            try{
                int c = a / b;
                return Result.SUCCESS;
            }catch(Exception e){
                e.printStackTrace();
                return Result.FAILED;
            }
        }
    }
    
    enum Result{
        SUCCESS,FAILED
    }

    6. 生成随机数

      Random

    public class RandomTest01 {
        public static void main(String[] args) {
            Random random = new Random();
            int i = random.nextInt();   //产生一个int范围内的随机数
            System.out.println(i);
    
            int j = random.nextInt(101);   //产生[0-101)范围内的随机数,不包括101
            System.out.println(j);
        }
    }

      生成5个不重复的随机数放到数组中

    public class RandomTest02 {
        public static void main(String[] args) {
            int[] arr = new int[5];
            for (int i = 0; i < arr.length; i++) {     //先把数组中的元素都置为-1,因为可能生成随机数0
                arr[i] = -1;
            }
            Random random = new Random();
            int index = 0;
            while (index < arr.length){
                int num = random.nextInt(5);
                if(!contains(arr,num)){
                    arr[index++] = num;    //只有不包含的情况才把num放到数组中,同时index+1;
                }
            }
            for (int i = 0; i < arr.length; i++) {    //数组的遍历
                System.out.println(arr[i]);
            }
        }
    
        /**
         * 判读数组中是否包含随机生成的数
         * @param arr
         * @param key
         * @return
         */
        public static boolean contains(int[] arr, int key){
            for (int i = 0; i < arr.length; i++) {
                if(arr[i] == key){
                    return true;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    [android] 安卓消息推送的几种实现方式
    二进制部署 Kubernetes 集群
    nginx location反向代理不对等时的处理
    CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2
    Harbor作为Docker的镜像中心
    Harbor 使用 Helm 一键安装
    MYSQL Innodb逻辑存储结构
    安装Redis 4.0单实例
    Redis慢查询日志
    创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
  • 原文地址:https://www.cnblogs.com/homle/p/15522751.html
Copyright © 2020-2023  润新知