类库概述
利用JavaDoc技术,将这些注释抽取出来,组织形成以HTML为表现形式的API(Application Programming Interfa 应用程序接口)文档
数字相关类
1、整数:short16,int32,long64
2、浮点数:Float32单精度,Double32双精度
3.、大数类:BigInteger(大整数)支持无限大的整数运算,BigDecimal(大浮点数类)
4、随机类:Random
5、工具类:Math
import java.math.BigInteger;
public class BIgIntegerTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger b1 = new BigInteger(“123456789”);
BigInteger b2 = new BigInteger(“987654321”);
System.out.println(“b1=”+b1+" b2="+b2);
System.out.println(“加法”+b2.add(b1));
System.out.println(“减法”+b2.subtract(b1));
System.out.println(“乘法”+b2.multiply(b1));
System.out.println(“除法”+b2.divide(b1));
System.out.println(“最大数”+b2.max(b1));
System.out.println(“最小数”+b2.min(b1));
//求出余数的除法
BigInteger result[] = b2.divideAndRemainder(b1);
System.out.println(“商是”+result[0]+“余数是”+result[1]);
System.out.println(“等价性”+b1.equals(b2));
int flag = b1.compareTo(b2);
if(flag == -1) {
System.out.println(“b1<b2”);
}
else if(flag == 0) {
System.out.println(“b1==b2”);
}
else
System.out.println(“b1>b2”);
}
}
——————————————
b1=123456789 b2=987654321
加法1111111110
减法864197532
乘法121932631112635269
除法8
最大数987654321
最小数123456789
商是8余数是9
等价性false
b1<b2
BigInteger无法用运算符来计算
Random随机数
nextint()返回一个随机int
nextInt(int a)返回一个[0,a)之间的随机int
nextDouble()返回一个[0.0,1.0]之间的double
Random rd = new Random();
//采用Random类随机生成在int范围内的随机数
System.out.println(rd.nextInt());
System.out.println(rd.nextInt(100));
System.out.println(rd.nextLong());
System.out.println(rd.nextDouble());
————————————————————————
ints方法批量返回随机数组
//返回无限个int类型范围内的数
rd.ints();
int[] arr = rd.ints(2).toArray();
for(int i = 0;i<arr.length;i++) {
System.out.println(arr[i]);
}
——————————————————————
Math函数
System.out.println(Math.abs(-5));//绝对值
System.out.println(Math.max(-5,-8));//比较
System.out.println(Math.pow(-5,2));//幂函数
System.out.println(Math.round(3.5));//四舍五入
System.out.println(Math.ceil(3.5));//向上取整
System.out.println(Math.floor(3.5));//向下去取整
5
-5
25.0
4
4.0
3.0
字符串相关类
1、String
-java使用频率最高的类
-是一个不可变对象,加减操作性能较差
String a = “123;456;789;123”;
System.out.println(a.charAt(0));//返回第0个值
System.out.println(a.indexOf(";"));//返回;的第一个位置
System.out.println(a.concat(";000"));//连接一个新字符串并返回,a的值不变
System.out.println(a.contains(“000”));//判断a是否包含000
System.out.println(a.endsWith(“000”));//判断a是否以0结尾
System.out.println(a.equals(“000”));//判读是否等于000
System.out.println(a.equalsIgnoreCase(“000”));//判断在忽略大小写的情况下是否等于000
System.out.println(a.trim());//返回a除去前后空格后的字符串,a不变
String[] b = a.split(";");//将a字符串按照;分成数组
for(int i = 0;i<b.length;i++) {
System.out.println(b[i]);
}
System.out.println(“");
System.out.println(a.substring(2,5));//获取a的第二个第五个之间的字符,a不变
System.out.println(a.replace(“1”, “a”));//把1换成a
System.out.println(a.replaceAll(“1”, “a”));//replaceall的第一个参数是正则表达式
System.out.println("____”);
String s1 = “12345?789”;
String s2 = s1.replace("?", “a”);
String s3 = s1.replaceAll("[?]", “a”);
//[?]表示字符问号,这样才能正常替换,不然在正则中会有特殊的意义就会报异常
System.out.println(s2);
System.out.println(s3);
——————————————————————————————
1
3
123;456;789;123;000
false
false
false
false
123;456;789;123
123
456
789
123
3;4
a23;456;789;a23
a23;456;789;a23
12345a789
12345a789
2、可变字符串
-StringBuffer(字符串加减,同步,性能好)
-StringBuilder(字符串加减,不同步,性能更好)
-length字符串实际大小,capacity字符串占用空间大小
-trimToSize()去除空间间隙,将字符串存储压缩至实际大小
-如有大量append,事先预估大小,在调用相应的构造函数
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = sb1;
sb1.append(“1234454555”);
System.out.println(sb2);
1234454555
sb1和sb2指向同一个内存
String sb1 = new String(“123”);
String sb2 = sb1;
sb1 = “dcf”;
System.out.println(sb1+","+sb2);
————————————————————————————
dcf,123
sb1指向新的地址,sb2还是旧的地址
字符串的拼接速度StringBuilder>StringBuffer>String
String一开始的内存是16个字节,一旦字符串的长度大于字节数,capacity会在前一次的基础上加1后再翻倍
String(不可变对象)
StringBuffer(字符串加减,同步,性能好)
StringBuilder(字符串加减,不同步,性能更好)
时间相关类
1、java.sql.Date(和数据库对应的时间类)
2、Calendar是目前程序中最常用的,但是是抽象类
-Calendar gc=Calendar.getInstance();
-Calendar gc=new GregorianCalendar();返回子类的一个对象
-简单工厂模式
——————————————————————————
import java.util.Calendar;
public class CalendarTest {
Calendar ca = Calendar.getInstance();
public void test1() {
//获取年
int year = ca.get(Calendar.YEAR);
//获取月,这里的月份范围是0-11,所以需要加1
int month = ca.get(Calendar.MONTH) + 1;
//获取日
int day = ca.get(Calendar.DAY_OF_MONTH);
//获取时
int hour = ca.get(Calendar.HOUR);
//获取分
int min = ca.get(Calendar.MINUTE);
//获取秒
int sec = ca.get(Calendar.MINUTE);
//获取星期
int week = ca.get(Calendar.DAY_OF_WEEK);
System.out.println(year+" “+month+” “+day+” “+hour+” “+min+” “+sec+” “+week);
}//2020 8 11 10 32 32 3
public void test2() {
//一年后的时间
ca.add(Calendar.YEAR, 1);
System.out.println(Calendar.YEAR);//1
}
public void test3() {
//获取任意一个月的最后一天,假设求6月的最后一天
int currentMonth = 6;
//先求出七月份的第一天
ca.set(ca.get(Calendar.YEAR),currentMonth,1);
ca.add(Calendar.DATE,-1);
//获取日
int day = ca.get(Calendar.DAY_OF_MONTH);
System.out.println(“june’s last day”+day);//june’s last day30
}
public void test4() {
ca.set(2020,8,11);
int year = ca.get(Calendar.YEAR);
int month = ca.get(Calendar.MONTH);
int day = ca.get(Calendar.DAY_OF_MONTH);
System.out.println(year+” “+month+” “+day);//2020 8 11
}
public void test5() {
ca.set(2020,8,8);
//roll做加减法只影响当前字段,不影响进位,add会影响进位
ca.roll(Calendar.DAY_OF_MONTH, -8);
int year = ca.get(Calendar.YEAR);
int month = ca.get(Calendar.MONTH);
int day = ca.get(Calendar.DAY_OF_MONTH);
System.out.println(year+” “+month+” “+day); //2020 8 30
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CalendarTest c = new CalendarTest();
c.test1();
System.out.println(”_________");
c.test2();
System.out.println("_________");
c.test3();
System.out.println("_________");
c.test4();
System.out.println("_________");
c.test5();
}
java.time 包主要类:
-LocalTime:时间类(时分秒-纳秒)
-LocalDate:日期类
-LocalDateTime:LocalTime+LocalDate
-Instant:时间戳
import java.time.LocalDate;
public class LocalDateExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
//当前时间
LocalDate today = LocalDate.now();
System.out.println(“curremt time”+today);//curremt time2020-08-12
//根据指定时间创建LocalDate
LocalDate firstDay2020 = LocalDate.of(2020, 8, 12);
System.out.println(“specific date”+firstDay2020);//specific date2020-08-12
//给定错误时间参数,将报异常java.time.DateTimeException
//2014年的第100天
LocalDate hundredDay = LocalDate.ofYearDay(2020, 100);
System.out.println("100days of 2020 "+hundredDay); //100days of 20202020-04-09
}
}
import java.time.LocalTime;
import java.time.ZoneId;
public class LocalDateExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
//当前时间
LocalTime time = LocalTime.now();
System.out.println(“curremt time”+time);//curremt time21:41:29.486
//根据时分秒
LocalTime specificTime = LocalTime.of(21, 35);
System.out.println(“specific date”+specificTime);//specific date21:35
//给定错误时间参数,将报异常java.time.DateTimeException
//上海时间
LocalTime Timesh = LocalTime.now(ZoneId.of(“Asia/Shanghai”));
System.out.println("shanghai time "+Timesh);//shanghai time 21:41:29.487
//一天中的第几秒
LocalTime specificSecend = LocalTime.ofSecondOfDay(10000);
System.out.println(specificSecend);//02:46:40
}
}
java.timeutil 可以加减时间,调整时间,时间段计算,判断是否是闰年