Java基础11

StringBuffer

1. 概述

  1. 线程安全的可变字符序列,字符串缓冲区。

  2. 构造方法

    ① StringBuffer() 初始容量为16的字符串缓冲区

    ② StringBuffer(String str) 初始容量为16+str长度的字符串缓冲区

    ③ StringBuffer(int capacity) 可以指定容量的字符串缓冲区。

  3. 常用方法:

    ① length() 表示字符串缓冲区的字符数。

    ② capacity() 表示容量。

    ③ append(obj) 添加(*)

    注意:如果超过了容量会自动扩容。

    ④ delete(int start,int end)/delateCharAt(int index) 移除不包括end的字符/移除指定的字符

    ⑤ insert(int offset,Object I) 插入

    ⑥ replace(int start,int end,String str) 替换

    ⑦ reverse() (*) 反转。

    注意:一般用来判断是否对称字符串,

    ⑧ setCharAt(int index,char ch) 设置指定索引的值。

    ⑨ toString() 转换为字符串

  4. crud 增删改查

代码:

public class StringBuffer{
	public static void main(String[] args) {
		/*StringBuffer sb=new StringBuffer();
		System.out.println(sb.length());
		System.out.println(sb.capacity());
		sb.append(1).append(234567).append(890123451).append(1);
		System.out.println("=========");
		System.out.println(sb.length());
		System.out.println(sb.capacity());*/
		StringBuffer sb1=new StringBuffer("123");
		System.out.println(sb1.capacity());
		/*StringBuffer sb2=sb1.append(123).append(true);
		System.out.println(sb1==sb2);*/
		StringBuffer sb2=new StringBuffer("12345678");
		//System.out.println(sb2.delete(2, 5));
//		System.out.println(sb2.deleteCharAt(2));
//		System.out.println(sb2.insert(2, "我"));
//		System.out.println(sb2.replace(2, 3, "我"));
//		System.out.println(sb2.reverse());
		sb2.setCharAt(2, '我');
		System.out.println(sb2);
	}
}

2. StringBuffer与String 的区别(***)

  1. StringBuffer在操作字符串的增删改操作时速度比String快。
  2. StringBuffer没有重写equals方法,String重写了 在比较字符串时只要字符序列相同即可。

3. StringBuffer与StringBuilder的区别:

  1. 两者的用法相同,区别在于StringBuffer是线程安全的,速度慢。
  2. StringBuilder线程不安全,速度快。

时间类

1. 时间类相关方法与介绍

  1. 时间:Date:位于java.util包下。

  2. 构造方法:

    ① Date() 表示当前时间。

    ② Date(long date) 表示创建 long类型毫秒值的时间。1970—开始 通过毫秒值获取时间

  3. 常用方法:

    ① getTime() 返回1970年到对象的时间的毫秒值。

  4. simpleDateFormat 时间日期格式化类。

    ① 格式化:将时间转换成字符串。

    ​ format(Date date)

    ② 解析:将字符串转换成时间。

    ​ parse(String source)

    ③ 创建对象的模板:

    ​ y 年

    ​ M 月

    ​ d 天

    ​ E 星期的天数

    ​ H 0-23小时

    ​ m 分钟

    ​ s 秒

    public class 时间类{
    	public static void main(String[] args) throws ParseException{
    		Date date=new Date();
    		System.out.println(date);
    		System.out.println(date.getTime());
            Date date1=new Date(1000);
            System.out.println(date1.getTime());
            //创建SimpleDateFormat对象
            SimpleDateFormat sdf=new SimpleDateForat("yyyy/MM/dd E HH:mm:ss");
            //转换成字符串
            String value=sdf.fomat(date);
         System.out.println(value);
            String s="2020/08/28 星期二 11:38:31";
            //转换成时间
            Date dt=sdf.parse(s);
            System.out.println(dt);
    	}
    }
    

基本数据类型的包装类

  1. 包装类:实质是基本数据类型功能的增强。

  2. 基本数据类型包装类(***)

    byte Byte

    short Short

    int Integer

    long Long

    float Float

    double Double

    char Character

    boolean Boolean

1. Integer类

  1. 构造方法:

    ① Integer(int value) 将int包装成Integer

    ② Integer(String value) 将字符串转换成Integer类型。

  2. 常用属性:

    ① MAX_VALUE 最大值

    ② MIN_VALUE 最小值

  3. 装箱与拆箱(****)

    装箱:将基本数据类型转换成包装类

    拆箱:将包装类转换成基本数据类型

    在jdk1.5之前需要通过xxxvalue()的方法进行,1.5之后引入了自动装箱和自动拆箱

    自动装箱:可以直接使用基本基本类型的数据给引用类型的变量赋值。

    自动拆箱:可以直接使用包装类对象,给基本基本类型的变量赋值。(包装类直接进行计算)

  4. 常用方法:

    ① parseInt(String s) 将字符串转换成int类型

    ② toBinaryString(int i)/toHexString(int i)/toOctalString(int i) 二/十六/八进制

    ③ valueOf(int i)/valueOf(String i) 类型转换的方法。(***)

    代码:

    public class Integer{
        public static void main(String[] args){
            int s=5;
            Integer it=new Integer(a);
            System.out.println(it);
            System.out.println(Integer.MAX_VALUE);
            System.out.println(Integer.MIN_VALUE);
            String m="5";
            System.out.println(new Integer(m));
            //字符串类型转Integer
            Integer n=new Integer(m);
            int k=new Integer(m);
            int k=f.intValue();
            //注意转换字符串时可能发生 NumberFormatException异常	数字格式化异常
            int value=Integer.parseInt("123");
            System.out.println(value);
            System.out.println(Integer.toBinaryString(2));
            System.out.println(Integer.toHexString(16));
            System.out.println(Integer.toOctalString(8));
            //valueOf(int i)/valueOf(String i)  类型转换的方法
            Integer value2=Integer.valueOf("123");
        }
    }
    

2. Character类

  1. 常用方法:

    isDigit(char ch) 判断是否为数字

    isLetter(char ch) 判断是否为字母

    注意:中文也算字母。

    代码:

    public class Character{
        public static void main(String[] args){
            System.out.println(Character.isDigit('a'));
            System.out.println(Character.isLetter('我'));
        }
    }
    

正则表达式

  1. 正则表达式,又称规则表达式,通常用来检索、替换那些符合某个模式的文本。

  2. 正则表达式的实质:

    也是一个字符串,表示某种规则的字符串。用来校验或者查找、替换某些符合要求的文本的字符串。

  3. Pattern类:

1. Pattern类

  1. 常用方法:

    ① String类

    ​ matches(String regex) 判断字符串对象是否符合参数正则表达式的规则。

  2. 正则表达式的写法:

    字符类+数量词

    数量词:(***)

    ​ X? X,一次或一次也没有

    ​ X* X,零次或多次

    ​ X+ X,一次或多次

    ​ X{n} X,恰好n次

    ​ X{n,} X,至少n次

    ​ X{n,m} X,至少n次,但是不超过m次

    预定义字符类

    ​ . 任何字符

    ​ \d 数字:[0-9]

    ​ \D 非数字:[^0-9]

    ​ \s 空白字符:[ \t\n\x0B\f\r]

    ​ \S 非空白字符:[^\s]

    ​ \w 单词字符:[a-zA-Z_0-9]

    ​ \W 非单词字符:[^\w]

    代码

    public class 正则表达式{
        public static void main(String[] args){
            //qq 号码:①数字②长度 5-11位
            String  qq="11345_";
            String regex="[0-9]{5,11}";
            boolean flag = qq.matches(regex);
            System.out.println(flag);
            //要求长度在[2,5]的范围内,只能由字母、数字、下划线组成。
            String  name="1_123";
            String regexName="[0-9a-zA-Z_]{2,5}";
            System.out.println(name.matches(regexName));
            //邮箱规则:字母数字_@字母数字.com
            Stringemail="123@qq.com";
            //正则表达式,特殊字符,需要通过转义来实现,比如 .表示任意字符,
            //如果需要表示点的原来的意思,需要加转义\表示。
            StringregexEmail="[0-9a-zA-Z_]+@[0-9a-zA-Z]+\\.com";
            System.out.println(email.matches(regexEmail));
        }
    }
    

2. 补充

  1. 边界匹配器:

    ① ^ 行的开始

    ② $ 行的结束

    ③ \b 表示单词边界

  2. split(String regex) 可以支持正则

  3. replaceAll(String regex,String replacement) 可以支持正则替换

    分组 ()

    获取分组 $组号

    代码:

    public class 正则表达式补充{
        public static void main(String[] args){
            String s="a1sdfsdf1342sdfsdf080dfsf";
            String regex="\\d+";
            String[] arr=s.split(regex);
            for(int i=0;i<arr.length;i++){
                System.out.println(arr[i]);
            }
            //String tel="(133)1234(9785)";//==>133****9785
            String tel="13312349785";
            String regTel="(1[35-8]{2})[0-9]{4}([0-9]{4})";
            System.out.println(tel.replaceAll(regTel,"$1****$2"));
            String name="张三";
            int value=name.length();
            System.out.println(name.replaceAll("(.).*","S1*"));
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值