我是靠谱客的博主 细腻故事,最近开发中收集的这篇文章主要介绍javaSE第五章_<API常用类(2)>【替换,正则表达式,StringBuffer类,Random类,System类,Date-Calendar,BigInteger_BigDecimal】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 替换功能
    • 正则表达式
    • StringBuffer
        • String,StringBuffer,StringBuilder区别
        • 功能
    • Math类
    • Random类
    • System类
    • Date类
    • Calendar类
        • SimpleDateFormat 类
    • BigInteger_BigDecimal


替换功能

package api1.stringdemo;

public class StringTihuan {
    public static void main(String[] args) {
        /*
          替换功能
            String replace(char old,char new)
            String replace(String old,String new)
            replaceAll(String regex, String replacement)
            replaceFirst(String regex, String replacement)
            去除字符串两空格 String trim()
         */
        String s=" abcde fg ";
        String s1=s.replace("cd","CC");
        System.out.println(s1); // abCCe fg
        System.out.println(s.length()); //10 字符串长度包括10
        System.out.println(s.trim()); //abcde fg
        System.out.println(s.trim().length()); //8

        /*
        String s="ab2cd3ef5g";
        String[] ss=s.split("\d");
        System.out.println(Arrays.toString(ss)); //[ab, cd, ef, g] */
        String s="abcdefcdg";
        String s1=s.replaceAll("cd","CC");
        System.out.println(s1); //abCCefCCg

        String s2=s.replaceFirst("cd","CC");
        System.out.println(s2); //abCCefcdg

    }
}

正则表达式

正则 表达式
规则
是一种字符串模式匹配语言
指定规则:手机号规则

package api1.stringdemo;

import java.util.Arrays;
import java.util.Scanner;

public class StringZhengze {
    /*
      替换功能
      replaceAll(String regex, String replacement)
      replaceFirst(String regex, String replacement)
     */
    public static void main(String[] args) {
        /*
        String s="ab2cd3ef5g";
        String[] ss=s.split("\d");
        System.out.println(Arrays.toString(ss)); //[ab, cd, ef, g] */
        String s="abcdefcdg";
        String s1=s.replaceAll("cd","CC");
        System.out.println(s1); //abCCefCCg

        String s2=s.replaceFirst("cd","CC");
        System.out.println(s2); //abCCefcdg

        /*
      正则 表达式
         规则
         是一种字符串模式匹配语言
         指定规则:手机号规则

         注册手机号
           手机号 15111111111 11位 数字 以1开头 ---格式
           邮箱   wrwuert7254632@re23.com
     */
      /*Scanner s=new Scanner(System.in);
        System.out.println("请输入手机号");
        String phone=s.next(); */
        //凡是程序中有输入的地方 必须对输入内容做验证
        //验证phone这个字符串是否为手机号?  phone.legth()==11  phone.charAt(0)==1
        //boolean matches(String regex)
         /*
             . 任何字符(与行结束符可能匹配也可能不匹配)
            d 数字:[0-9]
            D 非数字: [^0-9]
            s 空白字符:[ tnx0Bfr]
            S 非空白字符:[^s]
            w 单词字符:[a-zA-Z_0-9]
            W 非单词字符:[^w]
            X? X,一次或一次也没有
            X* X,零次或多次
            X+ X,一次或多次
            X{n} X,恰好 n 次
            X{n,} X,至少 n 次
            X{n,m} X,至少 n 次,但是不超过 m 次
            X|Y X 或 Y
         */

        String x="ab";
        boolean res=x.matches("a"); //用字符串对象中matchse("正则表达式")
        System.out.println(res); //false 做验证 不匹配为false

        String x1="12345678901";
        //boolean res1=x1.matches("\d?"); //用字符串对象中的matches("正则表达式"); 一次或一次也没有 11为false
        //boolean res1=x1.matches("\d*"); //零次或多次
        //boolean res1=x1.matches("\d*"); //一次或多次
        //boolean res1=x1.matches("\d{11}"); //恰好11次
        //boolean res1=x1.matches("\d{11,}"); //至少11次
        boolean res1=x1.matches("\d{1,11}"); //至少1次 但不超过11次
        System.out.println(res1); //不是数字 false

        //手机号格式规则
        boolean res2=s.matches("1[35789]\d{9}");
        System.out.println(res2); //第一位为1,第二位为3/5/7/8/9,后面有九位[数字]

        //qq 数字 6--12  第一位没有0
        boolean qq="012345".matches("[1-9]\d{5,11}");
        System.out.println(qq);  //第一位是1到9,后面有5-11位

        //通用邮箱格式    \. 对.号进行转义
        boolean res="fgd3AA73@163qq.com.cn".matches("\w{6,10}@\w{2,5}\.(com|com\.cn)");
        System.out.println(res);
    }

}


StringBuffer

我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。字符串扩容

String,StringBuffer,StringBuilder区别

  • String:
    是字符常量,适用于少量的字符串操作的情况
    值不能变 底层 final char [] value;
    一旦需要改变值,必须重新创建一个String value=value+111;
  • StringBuffer:
    适用多线程下在字符缓冲区进行大量操作的情况
    添加synchronized 同步锁 多线程安全
    值可变 char [] value 继承 AbstractStringBuilder
  • StringBuilder:
    适用于单线程下在字符缓冲区进行大量操作的情况
    没有添加同步锁 多线程不安全
    值可变 char [] value 继承 AbstractStringBuilder
  • StringBuffer和StringBuilder功能相同,只是线程安全不同
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);调用父类
    return this;
}
public StringBuilder append(String str) {
   super.append(str);  调用父类
   return this;
}

功能

构造,添加append,删除delete,替换replace,反转reverse

package api1.stringdemo;
public class StringBufferDemo {

    public static void main(String[] args) {

    /*
       StringBuffer线程安全的,值可变的字符串

       public StringBuffer(){
            super(16);
       }

       AbstractStirngBuilder(int capacity){
            value=new char[capacity]
       }
       StringBuilder线程不安全的,值可变的字符串
    */
        //StringBuffer s=new StringBuffer(); //创建了一个字符串对象。底层是一个char数组
        //StringBuffer s1=new StringBuffer(30);
        StringBuffer s=new StringBuffer("abcd"); //字符串扩容 abcd11111222223333344444
                     s.append("11111"); //将append里字符串添加到此序列
                     s.append("22222");
                     s.append("33333");
                     s.append("44444");

                     //s.insert(1,"xxxx"); //axxxxbcd11111222223333344444
                     //s.deleteCharAt(2); //abd11111222223333344444
                     //s.delete(0,5); //1111222223333344444 删除指定区间字符串 包含开始不包含结尾
        //System.out.println(s); //底层value数组中创建,StringBuffer对象没变
        //System.out.println(s.reverse()); //反转 44444333332222211111dcba
        //System.out.println(s.replace(0,5,"ccccc")); //替换指定区间字符串 ccccc1111222223333344444

        String ss=new String(s); //将stingBuffer对象 变成String对象,就可以使用string里的方法
    }
}


Math类

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

package api1;

public class MathDemo {
    /*
 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) {
        System.out.println(Math.abs(-5)); //相反数 5
        System.out.println(Math.sqrt(9)); //平方根3.0

        System.out.println(Math.pow(2, 3)); //次方 8.0

        System.out.println(Math.random());//0.9641808089904788 随机数 大于等于 0.0 ,小于 1.0 。

        System.out.println(Math.floor(9.99)); //9.0
        System.out.println(Math.ceil(9.001)); //10.0

        System.out.println(Math.round(9.55)); //10

        System.out.println(Math.max(3, 5)); //5

    }
}

Random类

import java.util.Random;
用于产生随机数

package api1;

import java.util.Arrays;
import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        /*
          随机数
         */
        Random r=new Random();

        //System.out.println(r.nextBoolean()); 随机返回true false
        System.out.println(r.nextInt());  //705359992 随机返回整数
        System.out.println(r.nextLong()); //-5961209393186785663
        System.out.println(r.nextFloat()); //0.35238278
        System.out.println(r.nextDouble()); //0.2880023757444067

        byte[] b=new byte[5]; //[0,0,0,0,0]
        r.nextBytes(b);
        System.out.println(Arrays.toString(b)); //[48, -113, -40, -101, -41]
    }
}

System类

包含一些有用的类字段和方法。它不能被实例化。

package api1.system;

import java.util.Arrays;

public class SystemDemo {
    public static void main(String[] args) {
        //PrintStream out
        System.out.println("11");

        System.out.println(Person.phone.no);

        //System 里面包含了一些对于系统信息相关的方法
        //System.exit(0); //退出 停止虚拟机
        //System.out.println("aaaaaaaaaaaaa");

        //自1970-1-1 0:0:0 至程序运行那一刻的时间差
        long a=System.currentTimeMillis(); //1647767762714
        System.out.println(a);

        /*for(int i=0;i<10000;i++){
            System.out.println(i);
        }
        System.out.println(System.currentTimeMillis()-a); */

        //System.out.println(System.gc()); //运行垃圾回收器
        System.out.println(System.getenv()); //拿到操作系统的信息
        System.out.println(System.getenv("Path"));

        //数组复制
        int[] b={1,2,3,4,5};
        int[] ints= Arrays.copyOf(b,10);
        //返回一个指定长度的新数组,把原数组值填充进去
        System.out.println(Arrays.toString(ints)); //[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

        int[] c={1,2,3,4,5};
        int[] d=new int[10];
        /*
          src    原数组
          srcpos 原数组起点
          dest   目标数组
          destpos 目标数组起点
          length  要复制的数量
         */
        System.arraycopy(c,0,d,4,c.length);
        System.out.println(Arrays.toString(b)); //[1, 2, 3, 4, 5]
    }
}


Date类

import java.util.Date;
代表当前系统时间

package api1;

import java.util.Date;

public class DateDemo {
    //使用Date类代表当前系统时间
    public static void main(String[] args) {
        /* 无参构造
        Date date=new Date(); //创建一个日期对象,里面包含程序运行时那一刻的时间
        System.out.println(date.getYear()+1900);//获得年   过期方法  可以使用  只是官方不推荐
        System.out.println(date.getMonth()+1); // 0开始
        System.out.println(date.getDate());  //月中的第几天
        System.out.println(date.getDay()); //周中的第0天      从0开始 0-星期天
        System.out.println(date.getHours());
        System.out.println(date.getMinutes());
        System.out.println(date.getSeconds());
        System.out.println(date.getTime());        */

        //有参构造
        Date date=new Date(1621735853158L);
        date.setMonth(7);
        System.out.println(date.getMonth()+1); //8
        System.out.println(date.getHours()); //10
        System.out.println(date.getMonth()); //7
        System.out.println(date.getHours()); //10
        System.out.println(date.getMinutes()); //10
        System.out.println(date.getSeconds()); //53
        System.out.println(date); //Mon Aug 23 10:10:53 CST 2021
        System.out.println(date.toLocaleString()); //根据本地区习惯输出一个字符串格式的时间 2021-8-23 10:10:53
    }
}


Calendar类

import java.util.Calendar;
import java.util.GregorianCalendar;
是抽象类 不能创建对象
使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
GregorianCalendar c = new GregorianCalendar();//直接new子类对象

package api1;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarDemo {
    public static void main(String[] args) {
        //是抽象类 不能创建对象
        //使用时实现特定的子类的对象,
        //创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
        //Calendar c=Calendar.getInstance(); 返回是子类对象
        GregorianCalendar c = new GregorianCalendar();//直接new子类对象

        c.set(2002,5,10);
        //System.out.println(c.getTime()); //Mon Jun 10 18:11:55 CST 2002

        System.out.println(c.get(Calendar.YEAR)); //2002
        System.out.println(c.get(Calendar.MONTH)+1); //6
        System.out.println(c.get(Calendar.DAY_OF_MONTH)); //10
        System.out.println(c.get(Calendar.DAY_OF_WEEK)); //2
        System.out.println(c.get(Calendar.DAY_OF_YEAR)); //161 一年中第几天
    }
}


SimpleDateFormat 类

日期格式化类
在这里插入图片描述


BigInteger_BigDecimal

import java.math.BigInteger;
import java.math.BigDecimal;

BigInteger:大整数 可以表示任意整数
可以准确地表示任何 大小的整数值而不会丢失任何信息
add(),subtract(),multiply(),divide()

BigDecimal:计算机是二进制的,浮点数会失去 一定的精确度。
根本原因是:十进制值通常没有完全相同的二进制表示形式;
十进制数的二进制表示形式可 能不精确。只能无限接近于那个值

package api1;

import java.math.BigInteger;

public class BigIntegerDemo {
    public static void main(String[] args) {
        /*
      BigInteger 大整数 可以表示任意整数
      可以准确地表示任何 大小的整数值而不会丢失任何信息
      add(),subtract(),multiply(),divide()
     */
        BigInteger a=new BigInteger("11111111111111111111111111111117899997777777777777777777");
        BigInteger b=new BigInteger("555555555555555555555555555555555555555588888888888888888888");

        BigInteger c=a.add(b);
        System.out.println(c);
    }
}

package api1;

import java.math.BigDecimal;
public class BigDecimalDemo {
    public static void main(String[] args) {
        /*
          计算机是二进制的,浮点数会失去 一定的精确度。
          根本原因是:十进制值通常没有完全相同的二进制表示形式;
          十进制数的二进制表示形式可 能不精确。只能无限接近于那个值
         */
        double d=10.5;
        System.out.println(10.5-10.4); //0.09999999999999964

        BigDecimal a=new BigDecimal("122222222222222222222233333333333333333333333311111111");
        BigDecimal b=new BigDecimal("12.4");
        System.out.println(a.subtract(b)); //122222222222222222222233333333333333333333333311111098.6


    }
}

最后

以上就是细腻故事为你收集整理的javaSE第五章_<API常用类(2)>【替换,正则表达式,StringBuffer类,Random类,System类,Date-Calendar,BigInteger_BigDecimal】的全部内容,希望文章能够帮你解决javaSE第五章_<API常用类(2)>【替换,正则表达式,StringBuffer类,Random类,System类,Date-Calendar,BigInteger_BigDecimal】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部