1 常用工具类
1.1 Java API简介
(Java Application Programming Interface) Java应用程序接口的缩写,Java中的API,具有JDK提供的各种工具类。java.lang包是基础包,所以使用java.lang包下的所有类,都不需要进行导包操作。使用其它包下的类,都要进行导包。
常用的工具包:
- java.lang:Java语言包
- 例如:System、String、Math类等
- java.util:Java工具包
- 例如:Scanner、集合、日期类型等
- java.spl:操作数据的工具包
- 操作数据库的核心接口和类都在当前包下
- java.io:输入输出流
- 对文件操作的一些接口和对象都在io包下
- java.net:针对网络编程的核心类和接口在net包下
1.2 Object类
Object类在java.lang包下,它是所有类的根类。
Object类中提供了多个public修饰的方法,只介绍equals()、hashcode()、toString()
1.2.1 equals方法
public boolean equals(Objec obj){}比较两个对象的引用是否相等
public class Person {
private int id;
private String name;
public Person() {
}
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean showObj(Object obj){
if(this.equals(obj)){
return true;
}else{
return false;
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime*result+id;
result = prime*((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (id != other.id)
return false;
if (name == null){
if(other.name != null)
return false;
}else if (!name.equals(other.name))
return false;
return true;
}
}
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.showObj(p2));//true
Person p3 = new Person(1001,"三岁");
Person p4 = new Person(1001,"三岁");
System.out.println(p3==p4);//false
System.out.println(p3.equals(p4));//true
}
}
1.2.2 "=="和equals的区别
==是比较运算符,既能比较基本数据类型,也可以比较引用数据类型,如果是比较基本数据类型,比较的是字面量的值。如果比较的引用类型,比较的是地址,equals只能比较引用类型,比较的是两个对象的引用,但是一般equals方法都会被子类进行重写,重写的目的就是判断对象的属性值如果相同,就认为两个对象是同一个。
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
}
1.2.3 toString方法
public String toString(){} 以字符串的格式打印对象的属性值
1.2.4 hashcode方法
public int hachCode(){} 返回的是对象哈希码
hashCode()方法就是对象的身份证号。
1.3 Math类中常用方法
常用方法 | 说明 |
---|---|
Math.abs() | 绝对值 |
Math.cbrt() | 立方根 |
Math.sqrt() | 平方根 |
Math.floor() | 地板值 |
Math.ceil() | 天花板值 |
Math.max() | 比较最大值 |
Math.pow() | 返回次幂 |
Math.round() | 四舍五入 |
Math.random() | 随机数 |
public class DemoMath {
//Math类型中常用的方法
public static void main(String[] args) {
double pi = Math.PI;
//绝对值
System.out.println(Math.abs(3.15));//3.15
System.out.println(Math.abs(3.16F));//3.16
System.out.println(Math.abs(3));//3
System.out.println(Math.abs(3L));//3
System.out.println(Math.abs(-3.15));//3.15
System.out.println(Math.abs(-3));//3
//立方根
System.out.println(Math.cbrt(9));//2.080083823051904
//平法根
System.out.println(Math.sqrt(8));//2.8284271247461903
//地板值
System.out.println(Math.floor(8.9));//8.0
//天花板值
System.out.println(Math.ceil(8.1));//9.0
//比较最大值
System.out.println(Math.max(5,7));//7
//返回次幂
System.out.println(Math.pow(2,3));//8.0
//四舍五入
System.out.println(Math.round(3.98));//4
//随机数 0~1
System.out.println(Math.random());//0.03133454786691492
System.out.println((int)(Math.random()*11+90));//93
}
}
1.4 包装类
为了符合java面向对象的特性,还有类型转换,把八大基本数据封装了类,这个就叫做包装类。
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本类型转成包装类型(装箱):直接赋值、通过有参构造器
包装类型转成基本类型(拆箱):直接赋值、通过xxxValue()
包装类型转成字符串类型:toString()、+ “”
字符串类型转成基本类型: 包装类型.parseXXX(String s)
字符串类型转成包装类型:包装类型.valueOf(String s)
1.4.1 基本类型和包装类型的转换
Integer i = null;
Integer i1 = 55;//装箱 基本类型转成包装类型
System.out.println(i1+9);
Integer i2 = new Integer(44);
System.out.println(i2+2);//拆箱 包装类型转成基本类型
- 字符串转成int类型
通过包装类的构造器:
Integer i1 = new Integer(String s);
注意:参数s,只能传整数格式的字符串,否则就会报数组格式异常。
- 字符串类型转成包装类型
//字符串转成包装类型
Integer i3 = new Integer("19");
System.out.println(i3);
Double d1 = new Double("2.3");
System.out.println(d1);
- 字符串类型转成基本类型
//字符串类型转成基本类型
int i4 = Integer.parseInt("253");
System.out.println(i4);
- 包装类型转成字符串类型
//包装类型转成字符串类型
Integer i5 = 828;
String s = i5.toString();
System.out.println(s);
1.5 String类中常用方法
查询方法: indexOf(String s)、lastIndexOf(String s)、
charAt(int i)、 contains(String s)
替换字符串: replace(String oldStr,String newStr)
切割字符串:String[] arr = split(String s)
截取字符串:subString(int index)、 subString(int index,int endIndex)
import java.util.Arrays;
import java.util.Locale;
public class DemoString {
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
//String类构造器
char[] arr = {'h','e','l','l','o'};
String s3 = new String(arr);
System.out.println(s3);//hello
//字符串转char类型数组
String s4 = "highcom";
char[] arr1 = s4.toCharArray();
System.out.println(Arrays.toString(arr1));//[h, i, g, h, c, o, m]
//查询功能
//通过索引查找字符
char c = s4.charAt(2);
System.out.println(c);//g
//从主字符串开始查找子字符串第一次出现的位置
int n1 = s4.indexOf("ghc");
System.out.println(n1);//2
//从主字符串开始查找子字符串最后一次出现的位置
int n2 = s4.lastIndexOf("h");
System.out.println(n2);//3
int n3 = s4.indexOf("h");
System.out.println(n3);//0
//字符串拼接
String s5 = s4.concat(".com");
System.out.println(s5);//highcom.com
//主字符串是否包含某个子字符串
boolean f1 = s5.contains("hiygh");
System.out.println(f1);//false
//判断是否以某个前缀为开头
System.out.println(s5.startsWith("high"));//true
String s6 = "HiGHCOM.COM";
String s7 = "fendou";
String s8 = "abc";
String s9 = "fen#dou#de#lu#shang";
System.out.println(s5.equals((s6)));//false
//忽略大小写比较
System.out.println(s5.equalsIgnoreCase(s6));//true
//把小写转成大写
System.out.println(s7.toUpperCase());//FENDOU
//大写转小写
System.out.println(s6.toLowerCase());//highcom.com
//转成字节数组
byte[] bbs = s8.getBytes();
System.out.println(Arrays.toString(bbs));//[97, 98, 99]
//字符串长度
System.out.println(s8.length());//3
//字符串替换
System.out.println(s8.replace("b","B"));//aBc
//切割字符串 返回字符串数组
String[] strs = s9.split("#");
System.out.println(Arrays.toString(strs));//[fen, dou, de, lu, shang]
//截取字符串
//从索引位置 向后截取
System.out.println(s6.substring(3));//HCOM.COM
//从开始索引位置 截取到结束索引位置
System.out.println(s6.substring(2,7));//GHCOM
//取出前后空格
String s10 = " hell o ";
System.out.println(s10+"a");// hell o a
System.out.println(s10.trim()+"a");//hell oa
}
}
1.6 日期类 java.util.Date
public static void main(String[] args) {
//创建日期对象
Date date = new Date();
System.out.println(date);
Date date1 = new Date(1489555961512L);
System.out.println(date1);
Date date2 = new Date(2022-1900,1,2);
System.out.println(date2);
// Date date3 = new Date("2023-1-1");
// System.out.println(date3);
//打印当前日期对象的毫秒值
long time = date.getTime();
System.out.println(time);
//比较两个日期
System.out.println(date1.after(date2));//false
System.out.println(date1.before(date2));//true
}
1.7 SimpleDateFormat类
public static void main(String[] args) throws ParseException {
//创建日期格式化类对象 指定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
//创建当前系统时间对象
Date date = new Date();
//日期类型转成字符串类型
String s1 = sdf.format(date);
System.out.println(s1);
//字符串类型转成日期类型
String s2 = "2023/7/16 13:13:13";
Date date1 = sdf.parse(s2);
System.out.println(date1);
String s3 = sdf.format(date1);
System.out.println(s3);
}
1.8 Calendar类
public static void main(String[] args) {
//日历类对象的声明
Calendar c = Calendar.getInstance();
System.out.println(c);
//获取年份
System.out.println(c.get(Calendar.YEAR));
//获取月份
System.out.println(c.get((Calendar.MARCH)));
//获取日
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
//添加相应字段的值
c.add(Calendar.YEAR,2);
c.add(Calendar.MARCH,-3);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
//创建第二个日历类对象
Calendar c1 = Calendar.getInstance();
c1.set(2020,5,6);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
//比较两个日历类对象
System.out.println(c.before(c1));//false
System.out.println(c.after(c1));//true
//获取一周的第一天
System.out.println(c.getFirstDayOfWeek());
//日历对象转成日期对象
Date date = c.getTime();
System.out.println(date);
//获取毫秒值
System.out.println(c.getTimeInMillis());
Date date1 = new Date(1389562073920L);
c.setTime(date1);
System.out.println(c);
}
}
1.9 NumberFormat类
public static void main(String[] args) {
double pi = 3.1415926;
//取整数位
System.out.println(new DecimalFormat("0").format(pi));
//取小数点后一位
System.out.println(new DecimalFormat("0.0").format(pi));
//取小数点后三位
System.out.println(new DecimalFormat("0.000").format(pi));
//取小数点后四位
System.out.println(new DecimalFormat("0.0000").format(pi));
System.out.println(new DecimalFormat("#").format(pi));
System.out.println(new DecimalFormat("#.#").format(pi));
System.out.println(new DecimalFormat("#.##").format(pi));
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
//整数位变成2位,不足用0补齐
System.out.println(new DecimalFormat("00.00").format(pi));//03.14
}
}