java中中有着一系列的api
方便程序员调用
比如我们最常见的Math类
public class MathDemo {
public static void main(String[] args) {
System.out.println(Math.sqrt(4));//开方
System.out.println(Math.pow(2, 3));//平方
System.out.println(Math.floor(9.9));//向下取整
System.out.println(Math.ceil(9.1));//向上取整
System.out.println(Math.PI);
System.out.println(Math.round(8.8));//四舍五入求近似值
System.out.println(Math.round(8.2));
System.out.println(Math.random());//0-1内的随机数
}
}
还有Date类
但是要注意,处理date类中常用的getTime方法外,其他的方法普遍已经比较少见或者有着更好的方法解决,比如Calendar类
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
Date date = new Date();
date.getTime();
System.out.println(date.getTime());
date.getMonth();
System.out.println(date.getMonth());
date.getYear();
System.out.println(date.getYear());
//java中不建议使用的方法,因为已经有更好的方法
}
}
Calendar类
public class CaldendarDemo {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar();//高丽格里利日历
System.out.println(calendar.getTimeInMillis());//从1900年1月1日0点开始一直到程序运行结束的毫秒差
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)+1);//月份按数组算,所以真实月份要+1
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
}
}
随机数类Random
import java.util.Arrays;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random random = new Random();
// System.out.println(random.doubles());
System.out.println(random.nextFloat());//随机0-1之间的数
System.out.println(random.nextBoolean());//随机true false
byte[] a = new byte[3];
random.nextBytes(a);
System.out.println(Arrays.toString(a));
}
}
格式化日期类
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateformatDemo {
public static void main(String[] args) {
Date date = new Date();
System.out.println(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日");//格式化日期类 呈现相应的格式
String str = sdf.format(date);
System.out.println(str);
}
}
StringBuffer类
StringBuffer 可变的字符串 线程安全 适用于多线程问题 上锁 安全 char[] value; 默认会创建一个数组,向数组中添加元素,当数组中元素充满之后就会进行扩容 (value.length << 1)+2 2倍+2 判断 if (minimumCapacity - value.length > 0) { value = Arrays.copyOf(value, newCapacity(minimumCapacity)); 然后将新数组的地址赋给value 无论此处扩容拼接多少次,StringBuffer对象都始终只创建一次
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s = new StringBuffer();
//无参构造方法,默认创建一个长度为16的char数组
s.append("abcdef");
s.append("abcdef");
s.append("abcdef");
System.out.println(s);
StringBuffer s1 = new StringBuffer("abcd");//有参 创建的数组 容量是给定的长度+16
s1.append("abcd");
s1.append("abcd");
s1.append("abcd");
System.out.println(s1);
StringBuffer s2 = new StringBuffer(20);//指定容量 创建的数组 容量是指定的
s2.append("abcde");
s2.append("abcde");
s2.append("abcde");
s2.insert(2, "x");//指定位置插入指定内容
System.out.println(s2);
s2.deleteCharAt(3);//删除指定位置的字符
System.out.println(s2);
s2.replace(0, 3, "YYY");//指定区间替换为某一项YYY ---->左闭右开
System.out.println(s2);
//s2.reverse();//逆序
//System.out.println(s2);
s2.substring(0, 5);
String ss = s2.substring(0,5);//此处创建一个新的对象,String类型 截取(复制)到新String类型对象中去
System.out.println(s2);
System.out.println(ss);
}
}
StringBuilder类
几乎与StringBuffer类一模一样
二者唯一的区别就是StringBuffer类源码中是上锁的,线程安全,一般用于多线程问题
--->synchronized
SstringBuilder类未上锁,线程不安全,一般用于单线程问题