Java-常用API(StringBuffer,Math,Date,DataFormat,Calender,Runtime,System,包装类)

Posted Ocean:)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-常用API(StringBuffer,Math,Date,DataFormat,Calender,Runtime,System,包装类)相关的知识,希望对你有一定的参考价值。

Java常用API

StringBuffer

为了解决String字符串操作导致的内存冗余,提高效率,Java中提供了StringBuffer和StringBuilder来操作字符串,并且提供了很多方法,便于程序员开发

StringBuffer和StringBuilder中都有char类型可变长数组作为字符串的保存空间,使用到的方法类型和ArrayList类似

  • StringBuffer 线程安全,效率较低
  • StringBuilder 线程不安全,效率较高

StringBuffer构造方法

构造方法Constructor

  • StringBuffer();

    创建一个未存储任何字符串信息的空StringBuffer空间,底层初始化一个16个字符char类型数组

  • StringBuffer(String str);

    根据提供的String类型字符串创建对应的StringBuffer空间,底层char类型数组的容量会根据str.length + 16决定,并且保存对应的str

添加方法
  • append() 在缓冲区的尾部添加新的文本对象
  • insert() 在指定下标位置添加新的文本对象
package cn.ocean888;

public class Demo1 {
	public static void main(String[] args) {
		StringBuffer stringBuffer = new StringBuffer("ocean, ocean, ocean, ocean");
		
		stringBuffer.append("AAAA");
		stringBuffer.append("BBBB");
		
		System.out.println(stringBuffer);
		
		StringBuilder stringBuiler = new StringBuilder("ABCDEFGHIJKLMNOPQISTUVWXYZ");
		stringBuiler.insert(3, "CCCC");
		
		System.out.println(stringBuiler);
	}
}

查看方法
  • String toString();

    将底层的char类型数组保存的字符内容转换成对应的String类型字符串返回

  • int length();

    返回底层char类型数组中有多少有效元素

  • String substring(int begin);

    从指定位置开始获取到char’类型数组有效元素末尾对应的字符串截取操作

  • String substring(int begin, int end);

    从指定位置begin开始到end结束,获取对应的字符串,要头不要尾

  • int indexOf(String str);

    指定元素字符串所在下标位置

  • int lastIndexOf(String str);

    指定元素字符串最后一次所在下标位置

修改方法
  • replace(int start, int end, String str);

    从指定位置start开始,到end结束,start <= n <= end,使用str替换

  • setChar(int index, char ch)

    将指定位置设置为char字符

package cn.ocean888;

public class Demo1 {
	public static void main(String[] args) {
		StringBuffer stringBuffer = new StringBuffer("ocean, ocean, ocean, ocean");
		
		stringBuffer.replace(1, 6, "888");
		System.out.println(stringBuffer);
		
		stringBuffer.setCharAt(1, 'Y');
		System.out.println(stringBuffer);
	}
}

删除方法
  • delete(int start, int end);

    删除指定范围以内的字符

  • deleteCharAt(int index);

    删除指定下标的字符

逆序方法
  • reverse();

    逆序

Math数学类

  • public static double abs(double a);

    返回值为绝对值

  • public static double ceil(double a);

    向上取整

  • public static double floor(double a);

    向下取整

  • public static double round(double a);

    四舍五入

  • public static double random();

    随机数 0.0 <= n <= 1.0

-3.6相对距离-4为0.4所以舍去,结果为-4

Date类

获取当前系统时间-大部分构造方法已经过时

构造方法

  • Date();

    创建一个Date,对应当前时间,精度在毫秒值

  • Date(long date);

    根据时间戳毫秒数,创建对应的Date对象,时间戳是从1970-01-01 00:00:00 GMT

常用方法

  • long getTime();

    通过Date类对象获取对应当前时间的毫秒数

    System.currentTimeMillis();

    可以获取当前系统时间戳毫秒数

DateFormat时间格式

  • DateFormat是一个abstract修饰的类,用于转换时间格式

  • DateFormat不能直接使用,一般使用DateFormat子类SimpleDataFormat来使用

  • SimpleDataFormat构造方法中需要的参数是一个String,String类型的参数有特定的要求

  • String format(Date data);

    根据指定匹配要求,转换Date格式成为字符串

  • Date parse(String format);

    按照指定的匹配规则,解析对应的字符串,返回一个Date数据

package cn.ocean888;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo2 {
	public static void main(String[] args) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss E");
		
		String format = simpleDateFormat.format(new Date());
		
		System.out.println(format);
	}
}

Calender日历类

替换了很多Date类中的方法,把很多数据都作为静态的属性,通过一些特定的方法来获取,比Date处理日期数据更加方便

Calender是一个abstract修饰的类,没有自己的类对象,这里通过特定的方法getInstance获取Calender日历类对象

public static Calender getInstance();

默认为当前系统时区

常用方法

  • public int get(int field);

    返回特定数据的数值

  • public void set(int field, int value);

    设置特定字段对应的数据

  • public Date getTime();

    返回得到一个Date对象,从计算机元年到现在的毫秒数,保存在date对象中

package cn.ocean888;

import java.util.Calendar;
import java.util.Date;

public class Demo3 {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH)+1;
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		
		int hour = calendar.get(Calendar.HOUR_OF_DAY);
		int minute = calendar.get(Calendar.MINUTE);
		int second = calendar.get(Calendar.SECOND);
		
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		
		System.out.println(year + "-" + month + "-" + day + " " + hour + ":" 
				+ minute + ":" + second + " " + dayOfWeek);
		
		calendar.set(Calendar.YEAR, 2008);
		calendar.set(Calendar.MONTH, 7);
		calendar.set(Calendar.DAY_OF_MONTH, 8);
		
		Date time = calendar.getTime();
		System.out.println(time);
	}
}

System类

System类提供了大量的静态方法,操作的内容和系统有关

  • 可以获取当前时间戳 long currentTimeMillis()
  • 获取系统属性的方法 Properties getProperties();
  • 退出当前程序 exit(int status)
  • 数组拷贝方法 arrayCopy(Object src, int srcPos, Object dest, int destPos, int length)
package cn.ocean888;

import java.util.Arrays;
import java.util.Properties;

public class Demo4 {
	public static void main(String[] args) {
		
		// 属性类
		Properties properties = System.getProperties();
		properties.list(System.out);
		System.out.println("-----------");
		
		// 获取系统对应属性的数据
		String property = System.getProperty("os.name");
		System.out.println(property);
		System.out.println("-----------");
		
		// 数组拷贝方法
		int[] arr = {1, 3, 5, 7};
		int[] temp = new int[10];
		System.arraycopy(arr, 0, temp, 0, arr.length);
		
		System.out.println(Arrays.toString(temp));
		System.out.println("-----------");
	}
}

输出效果

Runtime类

Runtime当前程序运行环境类对象,只要程序启动就又会对应的Runtime存在

获取Runtime对象的方法:

  • Runtime Runtime.getRuntime();

需要了解的方法:

  • gc(); JVM的GC机制,但是调用了GC方法,也不会立即执行
package cn.ocean888;

import java.io.IOException;

public class Demo5 {
	public static void main(String[] args) throws IOException {
		Runtime runtime = Runtime.getRuntime();
		
		System.out.println(runtime.totalMemory());
		System.out.println(runtime.freeMemory());
		System.out.println(runtime.maxMemory());
	}
}

包装类

Java中提供了两种数据类型

  • 基本数据类型

    byte short int long double float boolean char

  • 引用数据类型

    类对象 数组 字符串

自动装箱和自动拆箱

基本类型和包装类型之间进行转换的操作

  • 装箱:从基本类型到包装类
  • 拆箱:从包装类到基本类型
package cn.ocean888;

public class Demo6 {
	public static void main(String[] args) {
		// 自动方式
		// 基本类型
		
		int num = 5;
		
		// 基本数据类型赋值给包装类,自动装箱的过程
		Integer num1 = num;
		System.out.println(num1);
		
		// 包装类转换成基本数据类型,自动拆箱的过程
		int num2 = num1;
		System.out.println(num2);
		
		// 强行包装
		Integer i = new Integer(5);
		Integer ii = Integer.valueOf(5);
		
		// 强制拆箱
		int intValue = i.intValue();
	}
}

在输出结果上没有差异

包装类和字符串数据转换过程

以上是关于Java-常用API(StringBuffer,Math,Date,DataFormat,Calender,Runtime,System,包装类)的主要内容,如果未能解决你的问题,请参考以下文章

Java-常用API(StringBuffer,Math,Date,DataFormat,Calender,Runtime,System,包装类)

常用JAVA API :String StringBuilderStringBuffer的常用方法和区别

java基础系列:常用API的用法及区别

常用对象API(StringBuffer 类)

JavaAPI学习:API && String类 && Stringbuffer && StringBuilder

Java api 入门教程 之 JAVA的StringBuffer类