10.常用类API

1. 正则:regex

\r\n : 回车+ 换行

\.: 匹配点

\t: 制表符tab

\b: 英文的 单词分隔

\d: 数字m

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

\w: 字母数字 下划线 [0-9A-Za-z_]

\W: 非字母数字 下划线[^0-9A-Za-z_]

[]: 字符簇: 中括号中的一个字符

{m, n}: 次数 出现m次到n次之间。 {m} m次 {m,} m到∞

? : {0,1} 0次或1次

+: {1,} 1次到多次

*: {0, } 0到多次

*?: 贪婪 最少匹配次数

. : 除了换行符\n外所有的字符

^: 开始符号

$: 结束符

		
		// 模式:样本:通过静态方法实例化的
		Pattern p = Pattern.compile("\\d+");
		
		// 匹配器
		Matcher m = p.matcher("adjfaoj1233`4j3214kl124j32 4j 321j4 231j423l14 ");
		
		// 正则是否匹配
		boolean b1 = m.matches(); 
		System.out.println(b1);
		
		// 找到匹配的正则
		while (m.find()) { // 找下一个
			String str = m.group(); // 匹配的内容
			System.out.println(str + "\"position:" + m.start() + "\"end:" + m.end()); //[起始下标, 结束下标 )
		}
		
		System.out.println(Pattern.matches("\\d+", "a1111")); // "^\\d+$"
		System.out.println("a111".matches("^a\\d+")); // "^\\d+$"

2。StringBuffer / StringBuilder

目的: 提高 字符串拼接速度。

StringBuffer:由于有线程同步锁,慢,安全

StringBuilder: 没有锁, 快, 不安全

  • append(); 字符串拼接
  • insert(index, str): 插入
  • reverse(); 反转
	
		String a = new String("a");
		long start = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) {
			a = a + "a";
		}
		long end = System.currentTimeMillis();
		System.out.println(end - start);
		
		StringBuilder sb1 = new StringBuilder();
		sb1.append("hello");
		sb1.append(" ");
		sb1.append("world");
		System.out.println(sb1.toString());
		
		// 没有锁,快
		StringBuilder sb = new StringBuilder("a");
		start = System.currentTimeMillis();
		for (int i = 0; i < 10000000; i++) {
			sb.append("a");
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		
		// 有同步锁, 慢,但是安全
		StringBuffer sb2 = new StringBuffer("a");
		start = System.currentTimeMillis();
		for (int i = 0; i < 10000000; i++) {
			sb2.append("a");
		}
		end = System.currentTimeMillis();
		System.out.println(end - start);
		
	

3. Math:

  • abs() ; 绝对值:
  • ceil(); 天花板 在上 。 数轴取右
  • floor(); 地板 在下。 数轴取左
  • pow(n, m); n的m次幂
  • random(); [0.0, 1.0) 内随机小数
  • round(); 四舍五入
		System.out.println(Math.abs(-1));
		
		System.out.println(Math.ceil(2.1)); // 3.0
		System.out.println(Math.ceil(-2.1)); // -2.0
		
		System.out.println(Math.floor(2.1)); // 2.0
		System.out.println(Math.floor(-2.1)); // -3.0
		
		System.out.println(Math.pow(10, 2)); // 100.0
		
		for (int i = 0; i < 100; i++) {
			System.out.println(Math.random()); // 底层Random [0.0, 1.0)   [32, 55]
		}
		// 随机32-55之间的数字
		System.out.println("--------------------------");
		for (int i = 0; i < 100; i++) {
			System.out.println((int) (Math.random() * 24 + 32)); // 底层Random [0.0, 1.0) * 24 + 32 ==  [32, 56)
		}
		
		System.out.println(Math.round(3.1415)); // 3
		System.out.println(Math.round(-3.1415)); // -3

		// 作一个五舍六入
		System.out.println(Math.floor(Math.PI + 0.4));
	

4. Object类

  • getClass(); 获取反射类对象

  • int hashCode(): hash算法 ,可以理解存储地址(不是绝对的),保证new 的hashCode值是不重复的

  • boolean equals(): 内容的比较。

    • ※必须和hashCode统一 : 如果覆盖equals()方法一定要覆盖hashCode方法
  • clone() : 克隆对象: 慎用

    • ※必须实现Cloneable接口
    • jdk 2个标记型接口: Cloneable ,Serializable 没有任何方法
  • toString(); 用于打印的多态

  • notify|notifyAll() : 用于线程的唤醒(waiting pool —> runable)

  • wait() : 线程进入 waiting pool

  • finalize() : GC回调: 慎用。

    5. GC: 垃圾回收

    针对堆的回收。

    GC: 是我们控制不了的。

    System.gc(); 只是通知,不是直接GC。

    
    	
    		Person p1 = new Person("tom", 10);
    		Person p2 = new Person("tom", 10);
    		
    		System.out.println(p1 == p2);
    		System.out.println(p1.equals(p2));
    		System.out.println(p1);
    		System.out.println(p2);
    		System.out.println("tom".hashCode());
    
    		Person p3 = p1;
    		p3.setAge(20);
    		System.out.println(p1.getAge());
    		
    		int a = 1;
    		int b = a;
    		b = 10;
    		System.out.println(a);
    		
    		Person p4 = (Person) p1.clone();
    		p4.setAge(30);
    		System.out.println(p4);
    		System.out.println(p4.getAge());
    		System.out.println(p1.getAge());
    		
    		
    		p3 = null;
    		p1 = null;
    		System.out.println("--------------");
    		System.gc(); // 通知jvm 在不忙的可以进行回收了		
    		System.out.println("--------------");
    		while (true) {
    			
    		}
    	
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值