第七章 常用类

一、字符串相关的类

1、String的特性

  • String类:代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作 为此类的实例实现。
  • String是一个final类,代表不可变的字符序列。
  • 字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。
  • String对象的字符内容是存储在一个字符数组value[]中的。

2、字符串常量和非常量对象的对比

  • String str1 = “abc”;与String str2 = new String(“abc”);的区别?
  • 字符串常量存储在 字符串常量池,目 的是共享
  • 字符串非常量对象 存储在堆中。
    在这里插入图片描述
    .

3、字符串常用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述## 3、字符串和其他类的转换
(1)字符串和基本数据类型、包装类
在这里插入图片描述
(2)字符串和字符数组
在这里插入图片描述
(3)字符串和字节数组
在这里插入图片描述

4、StringBuffer类

(1)概述

  • java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符 串内容进行增删,此时不会产生新的对象。
  • 很多方法与String相同。
  • 作为参数传递时,方法内部可以改变值。
  • StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且提供相关功能的方法也一样在这里插入图片描述

(2)常用方法
在这里插入图片描述
在这里插入图片描述

5、三者区别

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、JDK 8之前的日期时间API

1、java.lang.System类

System类提供的public static long **currentTimeMillis()**用来返回当前时
间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  • 此方法适于计算时间差。
  • 计算世界时间的主要标准有:
  • UTC(Coordinated Universal Time)
  • GMT(Greenwich Mean Time)
  • CST(Central Standard Time)

2、java.util.Date类

表示特定的瞬间,精确到毫秒

  • 构造器:
  • Date():使用无参构造器创建的对象可以获取本地当前时间。
  • Date(long date)
  • 常用方法
  • getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
    表示的毫秒数。
  • toString():把此 Date 对象转换为以下形式的 String: dow mon dd
    hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,
    Wed, Thu, Fri, Sat),zzz是时间标准。
  • 其它很多方法都过时了

3. java.text.SimpleDateFormat类

  • Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat
    类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
  • 它允许进行格式化:日期文本、解析:文本日期
  • 格式化:
  • SimpleDateFormat() :默认的模式和语言环境创建对象
  • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern
    指定的格式创建一个对象,该对象调用:
  • public String format(Date date):方法格式化时间对象date
  • 解析:
  • public Date parse(String source):从给定字符串的开始解析文本,以生成
    一个日期。
    在这里插入图片描述

4. java.util.Calendar(日历)类

  • Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
  • 获取Calendar实例的方法
  • 使用Calendar.getInstance()方法
  • 调用它的子类GregorianCalendar的构造器。
  • 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
  • public void set(int field,int value)
  • public void add(int field,int amount)
  • public final Date getTime()
  • public final void setTime(Date date)

三、Java比较器

1、概述

  • 在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间 的比较问题。
  • Java实现对象排序的方式有两种:
    自然排序:java.lang.Comparable
    定制排序:java.util.Comparator

2、方式一:自然排序:java.lang.Comparable

  • Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。
  • 实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj) 方法的返回值来比较大小。如果当前对象this大于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj,则返回负整数,如果当前对象this等于形参对象obj,则返回零。
  • 实现Comparable接口的对象列表(和数组)可以通过 Collections.sort 或Arrays.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
  • 对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与
    e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致。建议(虽然不是必需的)最好使自然排序与 equals 一致。
  • Comparable 的典型实现:(默认都是从小到大排列的)
    String:按照字符串中字符的Unicode值进行比较
    Character:按照字符的Unicode值来进行比较
    数值类型对应的包装类以及BigInteger、BigDecimal:按照它们对应的数值大小进行比较
    Boolean:true 对应的包装类实例大于 false 对应的包装类实例
    Date、Time等:后面的日期时间比前面的日期时间大

代码演示

class Goods implements Comparable {
private String name;
private double price;
//按照价格,比较商品的大小
@Override
public int compareTo(Object o) {
if(o instanceof Goods) {
Goods other = (Goods) o;
if (this.price > other.price) {
return 1;
} else if (this.price < other.price) {
return -1;
}
return 0;
}
throw new RuntimeException("输入的数据类型不一致");
}
//构造器、getter、setter、toString()方法略
}

3、方式二:定制排序:java.util.Comparator

  • 当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序,强行对多个对象进行整体排序的比较。
  • 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返
    回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示o1小于o2。
  • 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。
  • 还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
    代码演示
Goods[] all = new Goods[4];
all[0] = new Goods("War and Peace", 100);
all[1] = new Goods("Childhood", 80);
all[2] = new Goods("Scarlet and Black", 140);
all[3] = new Goods("Notre Dame de Paris", 120);
Arrays.sort(all, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Goods g1 = (Goods) o1;
Goods g2 = (Goods) o2;
return g1.getName().compareTo(g2.getName());
}
});
System.out.println(Arrays.toString(all));

五、System类

1、概述

(1)System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
(2)成员变量

  • System类内部包含in、out和err三个成员变量,分别代表标准输入流
    (键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
    (2)成员方法
    native long currentTimeMillis():
    该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时
    间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
    void exit(int status):
    该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表
    异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

六、Math类 、BigInteger与BigDecimal

1、Math类

在这里插入图片描述

2、BigInteger与BigDecimal

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值