常用API
API:应用程序编程接口
就是JAVA帮我们已经写好了一些程序,如:类,方法,等,
Object类
Object是所有类的祖宗
toString() // 返回对象的字符串表现形式
equals(Object o) //判断两个对象是否相等
代码实例
public static void main(String[] args) {
Student s = new Student("王一博", 20);
System.out.println(s.toString());
}
toString
会返回对象的地址
在开发中,父类toString的意义,为了让子类重写,以便返回内容
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
equals
默认就是比较两个对象的地址是否一样,一样才是true,反之
equals的意义是为了让让子类重写,以便子类可以自己比较内容是否相等
@Override
public boolean equals(Object o) {
//1.判断是否同一个对象比较,如果是直接返回true
if (this == o) return true;
//2.判断o如果是null直接返回false
//判断如果比较的不是学生类型的对象也直接返回false
if (o == null || getClass() != o.getClass()) return false;
//3.说明o肯定不是null,也一定是学生对象的类型,开始比较内容
Student student = (Student) o;
return age == student.age && sex == student.sex && Objects.equals(name, student.name);
}
Objects
Object是一个工具类,提供了很多的操作对象的静态方法给我们使用
- Objects.equals(name1,name2)
可以避免空指针异常,还可以给正常的结果,普通的name1.equalse(name2)不会规避空指针异常
-
Objects.isNull(name1)
-
Objects,nonNull(name2)
//掌握Objects类提供的常用方法
String name1 = null;
String name2 = "西门吹牛";
// System.out.println(name1.equals(name2));
//使用上面:Objects的equals方法更为的安全可靠,可以避免空指针异常,还能给正常的结果
//原因:多了一个非空校验,必须不是null,才会比较内容
System.out.println(Objects.equals(name1, name2));
//判断对象是否是null
System.out.println(Objects.isNull(name1));//true
System.out.println(name1 == null);//true
//判断对象是否不是null
System.out.println(Objects.nonNull(name2));//ture
System.out.println(name2 != null);//true
包装类
万物皆对象
包装类就是把基本类型的数据包装成对象
基本数据类型 | 对应的包装类(引用数据类型) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Float |
double | Double |
boolean | Boolean |
float | Float |
包装类可以把基本类型的数据变成字符串
StringBuilder,StringBuffer
- StringBuilder()/ StringBuilder(String str)
代表了一个可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的
好处:StringBuildeer比String更合适做字符串的修改操作,效率会更高,代码也会更简洁
StringBuilder与StringBuffer功能一样
StringBuffer是线程安全的,而StringBuilder线程不安全的
//1.创建StringBuilder对象,封装字符串数据
StringBuilder sb = new StringBuilder();
// StringBuilder sb = new StringBuilder("111")
System.out.println(sb);
//2.调用方法append拼接字符串数据进去
sb.append("黑马").append(666).append(true).append(99.5);
System.out.println(sb);
//3.反转内容
sb.reverse();
System.out.println(sb);
//4.获取长度
System.out.println(sb.length());
//5.把StringBuilder对象转换成String类型
//StringBuilder只是一种操作字符串的手段
// String才是目的
String rs = sb.toString();
System.out.println(rs);
StringJoiner
JDK8才开始有的,跟StringBuilder一样,也是用来操作字符串的
private static String getArrayData(int[] arr) {
if (arr == null) {
return null;
}
//1.创建一个StringJoiner对象,准备拼接内容
//参数一:拼接符号
//参数二:开始符号
//参数三:结束符号
StringJoiner sj = new StringJoiner(",", "[", "]");
//2.遍历这个数组中的每个数据开始拼接
for (int i = 0; i < arr.length; i++) {
sj.add(arr[i] + " ");
}
//3.返回数据
return sj.toString();
}
System
System代表程序所在的系统,也是一个工具类
System.exit(0) 终止当前运行的Java虚拟机
System.currentTimeMillis(); 系统当前时间
1.public static void exit(int status):
//终止当前运行的Java虚拟机
//该参数用作状态代码;按照惯例,非零状态代码表示异常终止
// System.out.println("开始。。");
// System.exit(0);
// System.out.println("结束...");
//
//2.public static long currentTimeMillis():
//获取当前系统的时间
//返回的是long类型的时间毫秒值,指的是从1970-1-1 0:0:0开始走到此刻的总的毫秒值 1s = 1000ms
long time1 = System.currentTimeMillis();
//用来做性能分析
for (int i = 0; i < 100000; i++) {
System.out.println(i);
}
long time2 = System.currentTimeMillis();
System.out.println("耗时" + (time2 - time1) / 1000.0);
}
BigDecimal
用来解决浮点型运算的精度问题
double a = 0.1;
double b = 0.2;
double c = a + b;
System.out.println(c);
System.out.println("------------------------");
//1.把浮点型数据a包装成BigDecimal对象
/*
* 得到BigDecimal对象。
* 第一种:public BigDecimal(String val)
* 第二种:oublic static BigDecimal valueOf(double val);
*
* */
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
//2.调用他的方法,得到精确的结果
BigDecimal c1 = a1.add(b1);//加
BigDecimal c2 = a1.subtract(b1);//减
BigDecimal c3 = a1.multiply(b1);//乘
BigDecimal c4 = a1.divide(b1);//除
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println("--------------");
//3.创建BigDecimal对象,实现精度控制
BigDecimal i = new BigDecimal("0.1");
BigDecimal j = new BigDecimal("0.3");
/*
* 参数一:除数
* 参数二:保留位数
* 参数三:舍入模式
* */
BigDecimal k = i.divide(j, 2, RoundingMode.HALF_UP);
System.out.println(k);
//4.BigDecimal是解决精度问题的手段
//double才是目的
double result = k.doubleValue();//0.33
System.out.println(result);
Time
//0.获取本地日期对象(不可变对象)
LocalDate ld = LocalDate.now();
System.out.println(ld);
//1.获取日期对象中的信息
int year = ld.getYear();//年
int month = ld.getMonthValue();//月
int day = ld.getDayOfMonth();//日
int dayOfYear = ld.getDayOfYear();//一年中的第几天
int dayOfweek = ld.getDayOfWeek().getValue();//星期几
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(dayOfYear);
System.out.println(dayOfweek);
//2.直接修改某个信息:withYear,withMonth,withDayOfMonth,withDayOfYear
LocalDate ld2 = ld.withYear(2099);
LocalDate ld3 = ld.withMonth(12);
System.out.println(ld2);
System.out.println(ld3);
System.out.println(ld);
//3.把某个信息加多少 : plusYears,plusMonths,plusDays,plusweeks
LocalDate ld4 = ld.plusYears(2);
LocalDate ld5 = ld.plusMonths(2);
System.out.println(ld4);
//4.把某个信息减多少
LocalDate ld6 = ld.minusYears(2);
LocalDate ld7 = ld.minusMonths(2);
//5.获取指定日期的LocalDate对象:public static LocalDate of(int year,int month,int dayOfMonth)
LocalDate ld8 = LocalDate.of(2099, 12, 12);
LocalDate ld9 = LocalDate.of(2099, 12, 12);
//6.判断2个日期对象,是否相等,在前还是在后 equals isBefore isAfter
System.out.println(ld8.equals(ld9));
System.out.println(ld8.isAfter(ld));
System.out.println(ld8.isBefore(ld));
//0.获取本地时间对象
LocalTime lt = LocalTime.now(); // 时,分,秒,纳秒,不可变
System.out.println(lt);
//1.获取时间中的信息
int hour = lt.getHour();//时
int minute = lt.getMinute();//分
int second = lt.getSecond(); //秒
int nano = lt.getNano(); //纳米
//2.修改时间:withHour,withMinute,WithSecond,withNano
LocalTime lt3 = lt.withHour(21);
LocalTime lt4 = lt.withMinute(10);
标签:ld,BigDecimal,int,System,API,println,out
From: https://www.cnblogs.com/yifan0820/p/17827151.html