一、数学相关类
1.Math类
介绍:概述数据工具类
作用:主要用于数学运算
特点:构造方法私有了
方法都是静态的
使用:类名直接调用
public class Demo01Math {
public static void main(String[] args) {
//求参数绝对值
System.out.println(Math.abs(-10));
//向上取整
System.out.println(Math.ceil(3.6));
//向下取整
System.out.println(Math.floor(3.6));
//四舍五入
System.out.println(Math.round(3.6));
System.out.println(Math.round(-2.8));
//求两数之间的较大值
System.out.println(Math.max(10,20));
//求两数之间的较小值
System.out.println(Math.min(10,20));
}
}
2.BigInteger类
概述:我们操作数据,将来的数据有可能非常大,大到比long还要大,这种数据我们称之为”对象“
作用:处理超大的整数
构造:BigInteger(String val)->参数个数必须是数字型
方法:
BigInteger add(BigInteger val) 返回值为(this+val)的BigInteger
BigInteger subtract(BigInteger val)返回值为(this-val)的BigInteger
BigInteger multiply(BigInteger val)返回值为(this*val)的BigInteger
BigInteger divide(BigInteger val)返回值为(this / val)的BigInteger
int intValue()将BigInteger转成int
long longValue()将BigInteger转成long
public class Demo02BigInteger {
public static void main(String[] args) {
BigInteger b1=new BigInteger("12122121555555555555555555555");
BigInteger b2=new BigInteger("12122121555555555555555555555");
System.out.println(b1.add(b2));
System.out.println(b1.subtract(b2));
System.out.println(b1.multiply(b2));
System.out.println(b1.divide(b2));
}
}
3.BigDecimal类
概述:我们知道直接用float或者double做运算会出现精度损失的问题,所以将来设计到钱,我们就不能用float或者double直接来做运算,所以我们用BigDecimal
构造方法:BigDecimal(String val)->val必须要是数字形式
常用方法:
static BigDecimal valueOf(double val)->此方法初始化小数时可以传入double型整数
BigDecimal add(BigDecimal val) 返回值为(this+val)的BigDecimal
BigDecimal subtract(BigDecimal val)返回值为(this-val)的BigDecimal
BigDecimal multiply(BigDecimal val)返回值为(this*val)的BigDecimal
BigDecimal divide(BigDecimal val)返回值为(this / val)的BigDecimal
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
divisor:除号后面的那个数
scale:指定保留几位小数
roundingMode:取舍方式
static int ROUND_UP->向上加1
static int ROUND_DOWN->直接舍去
static int ROUND_HALF_UP->四舍五入
import java.math.BigDecimal;
public class Demo03BigDecimal {
public static void main(String[] args) {
// big01();
// big02();
big03();
}
private static void big03() {
BigDecimal b1=new BigDecimal("3.55");
BigDecimal b2=new BigDecimal("2.12");
BigDecimal divide = b1.divide(b2, 2, BigDecimal.ROUND_UP);
System.out.println(divide);
double v = divide.doubleValue();
System.out.println(v);
}
private static void big02() {
BigDecimal b1=new BigDecimal("3.55");
// BigDecimal b2=new BigDecimal("2.12");
BigDecimal b2=BigDecimal.valueOf(2.12);
BigDecimal add = b1.add(b2);
System.out.println("add="+add);
BigDecimal subtract=b1.subtract(b2);
System.out.println("subtract="+subtract);
BigDecimal multiply = b1.multiply(b2);
System.out.println(multiply);
BigDecimal divide = b1.divide(b2);
System.out.println(divide);
}
private static void big01() {
float a=3.55F;
float b=2.12F;
float result=a-b;
System.out.println("result="+result);
}
}
二、日期相关类
1.Date日期类
概述:表示特定的瞬间,精确到毫秒
常识:
1000毫秒=1秒
时间原点:1970年1月1日 0时0分0秒(UNIX系统起始时间)叫做格林威治时间在0时区上
时区:北京位于东八区,一个时区经度差15度时间相差一个小时所以北京时间比时间原点所在时区差8个小时
Date类使用
Date()->获取当前系统时间
Date(long time)->获取指定时间,传递毫秒值->从时间原点开始算
Date类的常用方法
Void setTime(long time)->设置时间,传递毫秒值->从时间原点开始算
Long getTime()->获取时间,返回毫秒值
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
date01();
date02();
}
private static void date02() {
Date date = new Date();
// Void setTime(long time)->设置时间,传递毫秒值->从时间原点开始算
date.setTime(1000L);
long time = date.getTime();
// Long getTime()->获取时间,返回毫秒值
System.out.println(time);
}
private static void date01() {
// Date()->获取当前系统时间
Date date = new Date();
System.out.println("date1="+date);
// Date(long time)->获取指定时间,传递毫秒值->从时间原点开始算
Date date1 = new Date(1000L);
System.out.println("date2="+date1);
}
}
2.Calendar日历类
概述:日历类,抽象类
获取:calendar中的方法:
Static Calendar getInstence()
月份对比:
国外:0 1 2 3 4 5 6 7 8 9 10 11
国内:1 2 3 4 5 6 7 8 9 10 11 12
字段值 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月(从0开始,可以+1使用) |
DAY_OF_MONTH | 月中的天(几号) |
HOUR | 时(12小时前) |
HOUR_OF_DAY | 时(24小时制) |
MINUTE | 分 |
SECOND | 秒 |
DAY_OF_WEEK | 周中的天(周几,周日为1,可以-1使用) |
常用方法:
int get (int field)->返回给定日历字段的值
void set(int field,int value):将给定的日历字段设置为指定的值
void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量
Date getTime():将Calendar转成Date对象
field:代表的是日历字段->年 月 日 星期等,都是静态的
扩展方法:
void set(int year ,int month,int date)->直接设置年月日
需求:键盘录入一个年份,判断这一年是闰年,还是平年
import javax.sql.DataSource;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Demo02Calendar {
public static void main(String[] args) {
// calendar01();
// calendar02();
calendar03();
}
private static void calendar03() {
Calendar calendar=Calendar.getInstance();
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
calendar.set(year,2,1);
calendar.add(Calendar.DATE,-1);
int day=calendar.get(Calendar.DATE);
if (day==29){
System.out.println("闰年");
}else {
System.out.println("平年");
}
}
private static void calendar02() {
Calendar calendar=Calendar.getInstance();//多态
int year = calendar.get(Calendar.YEAR);
System.out.println("YEAR="+year);
// calendar.set(Calendar.YEAR,2028);
// System.out.println(calendar.get(Calendar.YEAR));
calendar.add(Calendar.YEAR,-1);
System.out.println(calendar.get(Calendar.YEAR));
Date date=calendar.getTime();
System.out.println("date="+date);
}
private static void calendar01() {
Calendar calendar=Calendar.getInstance();
System.out.println(calendar);
}
}
3.日期格式化类
SimpleDateFormat日期格式化类
构造:SimpleDateFormat(String pattern)
pattern代表的是什么:代表的是我们自己指定的日期格式
字母不能改变但是中间的连接符我们可以改变
yyyy-MM-dd HH:mm:ss
时间字母表示 | 说明 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
常用方法:
String format(Date date)->将Date对象按照指定的格式转成String
Date parse(String source)->将符合日期格式的字符串转成Date对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo03SimpleDateFormat {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time1=sdf.format(new Date());
System.out.println("time1="+time1);
String time2="2000-10-10 10:10:10";
Date date = sdf.parse(time2);
System.out.println("date="+date);
}
}
4.工具类(System类)
概述:系统相关类,是一个工具类
特点:构造私有,不能利用构造方法new对象
方法都是静态的
使用:类名直接调用
方法 | 说明 |
---|---|
static long currentTimeMillis() | 返回以毫秒为单位的当前时间,可以测效率 |
static void exit(int status) | 终止当前正在运行的java虚拟机 |
static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) | 数组复制 src:源数组 srcPos:从源数组的哪个索引开始复制 dest:目标数组 destPos:从目标数组哪个索引开始粘贴 length:复制多少个元素 |
public class Demo01System {
public static void main(String[] args) {
// currentTimeMills();
// exit();
arraycopy();
}
private static void arraycopy() {
int[] arr={1,2,3,4,5};
int[] arr1=new int[10];
System.arraycopy(arr,0,arr1,0,5);
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
private static void exit(){
for (int i=0;i<100;i++){
if (i==5){
System.exit(0);
}
System.out.println("helloworld"+i);
}
}
private static void currentTimeMills() {
long time=System.currentTimeMillis();
System.out.println(time);
}
}
三、Arrays数组工具类
特点:构造私有、方法静态
使用:类名直接调用
方法 | 说明 |
---|---|
static String toString(int[] a) | 按照格式打印数组元素[元素1,元素2,.....] |
static void sort(int[] a) | 升序排序 |
static int binarySearch(int[]a,int key) | 二分查找 |
static int[]coptOf(int[] original,int newLength) | 数组扩容 |
import java.util.Arrays;
public class Demo02Array {
public static void main(String[] args) {
int[] arr={1,2,8,22,5,8};
System.out.println(Arrays.toString(arr));
System.out.println("=============");
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println("====================");
int[] arr1={1,2,3,4,5,67};
int index = Arrays.binarySearch(arr1, 3);
System.out.println(index);
System.out.println("===============");
int[] arr2={1,2,3,4,5};
int[] ints = Arrays.copyOf(arr2, 10);
System.out.println(Arrays.toString(ints));
}
}
四、包装类
基本数据类型对应的引用数据类型(包装类)
概述:就是基本类型对应的类(包装类),我们需要基本类型转成包装类,从而让基本类型拥有类的特性(说白了,将基本类型转成包装类之后,就可以使用包装类中的方法操作数据)
为什么要学包装类:
将来有一些特定场景,特定操作,比如调用方法传递包装类。比如:ArrayList集合,里面有一个方法add(Integer i),此时我们不能调用add方法之后传递基本类型,因为引用类型不能直接接收基本类型的值,就需要先将基本类型转成包装类,传递到add方法中
将来我们还可以将包装类转成基本类型:包装类不能直接使用+-*/,所以需要将包装类转成基本类型,才使用+-*/
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Charactor |
boolean | Boolean |
1.Integer基本使用(其他包装类运用和这个一样)
概述:Integer时int包装类
构造:
Ingeter(int value)
Ingeter(String s)S必须时数字形式
import java.util.ArrayList;
public class Demo01integer {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);//这里发生了类型转换,自动将基本类型转成了包装类
}
}
public class Demo02Ingeter {
public static void main(String[] args) {
Integer integer = new Integer(10);
System.out.println(integer);
Integer integer1 = new Integer("10");
System.out.println(integer1);
Boolean aTrue = new Boolean("true");
System.out.println(aTrue);
}
}
装箱:将基本类型转成对应的包装类(推荐使用)
拆箱:将包装类转成基本类型,方法:int intvalue();
public class Demo03Integer {
public static void main(String[] args) {
Integer integer = Integer.valueOf(10);
System.out.println(integer);
Integer integer1 = Integer.valueOf("100");
System.out.println(integer1);
int i = integer.intValue();
System.out.println("(i+10)="+(i+10));
}
}
拆箱和装箱很多时候都是自动完成的
public class Demo04Integer {
public static void main(String[] args) {
Integer i=10;//发生了自动装箱
Integer sum=i+10;//自动发生了拆箱
System.out.println(sum);
}
}
2.基本类型和String之间的转换
方式1:+ 拼接
方式2:String中的静态方法 static String valueOf(int i)
String转成基本数据类型
每个包装类都有一个类似的方法:parsexxxx
public class Demo05Parse {
public static void main(String[] args) {
method01();
method02();
}
private static void method02() {
int number=Integer.parseInt("111");
System.out.println(number+1);
}
private static void method01() {
int i=10;
String s1=i+"";
System.out.println(s1+1);
System.out.println("============");
String s=String.valueOf(10);
System.out.println(s+1);
}
}
拓展:
在实际开发中,怎么定义一个标准的javaBean
定义javabean一般会将基本类型的属性定义成包装类型
举例:如果uid为Integer型,默认值是null
将来javabean中的数据都是和数据库表联系起来,我们可以将javabean中的数据添加到表中,如果表中的uid为主键自增此时添加语句时uid的数据不用我们单独维护赋值了添加语句的sql语句就可以这样写:
insert into user (uid,username,password)values(NULL,'名和怡','999999');
到时候,我们需要javabean中封装的数据获取出来放到sql语句中,如果uid为主键自增,而且javabean中的uid为包装类型,默认值为null这样就不用单独维护uid的值了,也不用先给javabean中的uid赋值,然后在保存到数据库中了,咱们就可以直接使用uid的默认值,将默认值放到sql语句中的uid中
而且将javabean中的属性变为包装类型,还可以使用包装类型方法去操作属性值
public class User {
// private int uid;//用户id
private Integer uid;//用户id
private String username;
private String password;
public User() {
}
public User(Integer uid, String username, String password) {
this.uid = uid;
this.username = username;
this.password = password;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
”苦尽甘来终有时,一路向阳待花期“,加油,少年!