Java常用类库

StringBuffer类

用于频繁修改的字符串(大部分情况还是用String)

StringBuild类

StringBuilder类和StringBuffer一样,只不过是所有方法是异步的,而StringBuffer所有方法是同步的,加了synchronized修饰

(考虑多线程安全用StringBuffer,单线程用StringBuilder效率更高一点)

(通常使用字符串的情况还是选择常用的String类)

Runtime类

用于启动新的进程和运行时环境的相关操作,例如获取内存空间,释放垃圾空间等

(该类使用单例模式,用getRuntime()获取该类对象)

		Runtime runtime=Runtime.getRuntime();
		//最大可用内存,正常可用内存,当前空余内存,垃圾回收,调用画板进程并在2秒后关闭
		System.out.println(runtime.maxMemory());
		System.out.println(runtime.totalMemory());
		System.out.println(runtime.freeMemory());
		runtime.gc();
		Process process=runtime.exec("mspaint.exe");
		Thread.sleep(2000);
		process.destroy();

设置初始化内存空间

每一块内存存在内存伸缩区,当内存不足就会动态开辟

totalMemory+内存伸缩区=maxMemory

可以通过启动参数设置初始化内存空间:-Xms初始内存,-Xmx最大内存,-Xmn年轻代堆内存

(在开发环境的VM ararguments中设置)

 

垃圾回收

GC垃圾收集器会不定期回收,也可以手动回收  runtime.gc(),是一种对内存空间释放的方式

垃圾回收主要针对新生代和旧生代进行回收(Young/Old Generation)

新生代内存空间存放刚产生的对象,经过若干次回收还未被回收的对象移动到旧生代

对新生代进行MinorGC(从垃圾回收),对旧生代进行MajorGC(主垃圾回收),两者互不干涉

Full GC完全回收是对新生代,旧生代同时回收,runtime.gc()就属于完全回收

垃圾回收采取分代回收策略,较高频率对新生代内存回收,较低频率对旧生代内存回收

java对象创建之后先存放在新生代,新生代内存不够则MinorGC,要是内存还是不够则则存入旧生代,旧生代内存不足进行MajorGC回收,如果旧生代底下的Tenured区(永久代)内存不够则Full GC,如果此时内存还是不够则内存溢出"OutOfMemoryError",程序中断

 

System类

提供系统的一些支持操作:数组复制,取得当前时间,垃圾回收等

		//数组复制
		String[] a={"zhangs","lisi"};
		String[] b=new String[10];
		System.arraycopy(a, 0, b, 0, 2);
		System.out.println(b[0]);
		//获取时间
		long time1=System.currentTimeMillis();
		for(int i=0;i<2;i++){
			Thread.sleep(100);
		}
		long time2=System.currentTimeMillis();
		System.out.println(time1+"   "+time2);
		//垃圾回收
		System.gc();

System.gc()间接调用Runtime.gc(),两者作用相同

 

finalize()方法:回收前的收尾工作

可以在类中覆写该方法,会在该类被回收前调用

    @Override
	protected void finalize() throws Throwable {
		// TODO Auto-generated method stub
		System.out.println("这是该类的对象被回收前的操作");
	}

clone()方法:对象的克隆

类中覆写clone()方法

public class Animal {
	private String a;

	public Animal(String a) {
		super();
		this.a = a;
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}
}

Animal animal=new Animal("Cat");
Animal animal2=(Animal) animal.clone();

 

Math类 

数学计算操作类

常用的有四舍五入round()方法

Math.round(f);

利用round()实现向上取整

(int) Math.round((f+0.5));

 保留小数位的四舍五入

	public static double round(double num,int scale){
		return Math.round(num*Math.pow(10.0, scale))/Math.pow(10.0, scale);
	}

 

Random类:随机数类

Random生成伪随机数,是根据种子数生成的随机数,知道种子数的情况下就能知道后续随机数的值

Random random=new Random()   无参构造会默认设置一个无法预测的种子数,这样具有更强的随机性

也可以手动设置种子Random random=new Random(long seed) ;种子数相同,生成的随机数序列也相同

Random random=new Random();
for(int i=0;i<10;i++){
    System.out.println(random.nextInt(10));
}

BigInteger,BigDecimal:大整数操作类,大小数操作类

可以操作无限大的整型数据,可以操作无限大的小数

(这两个用到的比较少,请自行百度)

 

Date类:获取日期,操作日期

java.util.Date和java.sql.Date

java.sql.Date为java.util.Date的子类,用于JDBC的日期操作,平时都用java.util.Date

		Date date=new Date();
		System.out.println(date);
		//当前日期的long型
		System.out.println(date.getTime());

 

SimpleDateFormat日期格式化类

yyyy年,MM月,dd日,HH时,mm分,ss秒,SSS毫秒

		//日期转String
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		Date date=new Date();
		String s=simpleDateFormat.format(date);
		System.out.println(s);
		//String转Date
		String dateString="2018-12-06 6:6:6.6";
		Date date2=simpleDateFormat.parse(dateString);
		System.out.println(date2);

(如果String设置了错误的日期会采取自动日期进位)

 

Calendar类:日期操作类,可以精确到毫秒

Calendar和Date相比更加强大,当然实现也更复杂

Calendar本身为抽象类,Calendar calendar=Calendar.getInstance()获取实例;

		Calendar calendar=Calendar.getInstance();
		System.out.println(calendar.get(Calendar.YEAR));
		System.out.println(calendar.get(Calendar.MONTH)+1);
		System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
		System.out.println(calendar.get(Calendar.MINUTE));
		System.out.println(calendar.get(Calendar.SECOND));
		System.out.println(calendar.get(Calendar.MILLISECOND));

这里注意月份,月份起始从0开始,所以后面要+1显示

 

Arrays类:数组操作类

判断两个数组是否相等,数组内容填充,数组排序,数组二分查找,数组转字符串

		int[] a=new int[]{1,2,3,7,8,9};
		int[] b=new int[]{7,55,3,4,1,99,5};
		//数组排序
		Arrays.sort(b);
		System.out.println(Arrays.toString(b));
		//二分查找
		System.out.println(Arrays.binarySearch(b, 3));
		//数组填充
		Arrays.fill(a, 11);
		System.out.println(Arrays.toString(a));
		//数组比较
		System.out.println(Arrays.equals(new int[]{1, 2,3},new int[]{1, 2,3}));

数组二分查找之前必须先完成排序

 

比较器接口:Comparable

普通数组可以通过Arrays类来进行比较,排序等操作

而对象数组就必须实现比较器接口来进行比较,排序等操作,例:Apple[] apples=new Apple[10];

public interface Comparable<T> {
    public int compareTo(T o);
}

三种返回值1,-1,0

本类大于另一个类返回1,小于返回-1,等于返回0

挽救比较器接口:Comparator

如果一个类在编写的时候没有考虑要排序,也没有实现比较器

之后使用的时候又想加上比较器的时候就使用挽救比较器接口:Comparator

public class AnimalComparator implements Comparator<Animal>{

	@Override
	public int compare(Animal o1, Animal o2) {
		// TODO Auto-generated method stub
		return 0;
	}
}

Animal[] animals=new Animal[]{new Animal("1"),new Animal("2")};
Arrays.sort(animals,new AnimalComparator());

正则表达式

一种字符串操作的语法规则,主要用于格式验证

正则标记:http://www.runoob.com/regexp/regexp-metachar.html

Android 手机号格式验证(正则):https://blog.csdn.net/yh18668197127/article/details/85629597

Android 密码格式验证(正则):https://blog.csdn.net/yh18668197127/article/details/85633256

Pattern,Matcher类用于正则操作:是否匹配,根据正则匹配替换字符,根据正则进行字符串拆分等

    //判断输入的格式是否为手机号
    public boolean isPhone(String phone){
        String regex="^1[3456789]\\d{9}$";
        Pattern p=Pattern.compile(regex);
        Matcher m=p.matcher(phone);
        boolean isMatch=m.matches();
        Log.i(TAG, "isPhone: 是否正则匹配"+isMatch);
        return isMatch;
        }
    }

String类也有方法支持正则(功能和上面2个类一样,具体自行百度)

 

反射机制

https://blog.csdn.net/yh18668197127/article/details/86131365

 

国际化Locale类和ResourceBundle类

Locale(language,country),构造方法设置语言和国家编码

Locale.getDefault()获取当前语言环境的Locale对象

zh表示中文,CN表示中国 

ResourceBundle类根据不同语言,国家环境获取不同的资源文件,因为基本不用所以这里不做介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值