首页
Preview

7个鲜为人知的Java类

照片由 engin akyurtUnsplash 上提供

在我的许多其他文章中,我重点关注了内置方法的使用及其优点。但事实上,许多这些方法被归类为类和库,只有了解它们各自的目的,你才能优化对其函数的使用。

在我的编程经验中,我遇到了几个类,我以前从未意识到它们,但一旦我掌握了它们,它们在我的项目中就非常有用。相同的类一定会使编程更加容易、更快速、更高效。

1. DoubleSummaryStatistics 类

尽管最初很困惑,但 DoubleSummaryStatistics 类简单地用于收集统计信息。可以存储平均值、最大值和最小值等信息。

本质上,这可以像一个 数组 一样工作;值可以被接受到对象中,然后被记录。然后可以从这些值中提取数据和信息摘要。

基础

这个类可以使用一个构造函数实例化。这个构造函数将是空的,不提供任何统计信息或任何值给实例。

DoubleSummaryStatistics name = new DoubleSummaryStatistics()

方法

  • getAverage() — 返回记录的值的平均值
  • accept() — 将另一个值记录到对象中
  • getCount() — 返回对象中值的数量
  • getSum() — 返回记录的值的总和

示例:

DoubleSummaryStatistics c = new DoubleSummaryStatistics();c.accept(1);
c.accept(2);
c.accept(3);System.out.println("Average: " + c.getAverage());
System.out.println("Sum: " + c.getSum());
System.out.println("Count: " + c.getCount());/*
Output:
Average: 2.0
Sum: 6.0
Count: 3
*/

2. StringTokenizer 类

StringTokenizer 类与字符串一起工作。具体来说,它将字符串分解成令牌(在字符串的上下文中,令牌是字符串的离散部分或单词。例如,“Tandrew is legit”这样的句子可以被分解成令牌“Tandrew”、“is”和“legit”)。这提供了一种快速分离字符串中单词的替代方法,这是字符串操作的重要方面。

基础

StringTokenizer 类使用构造函数实例化。必须在构造函数中传递一个参数:要“分词”的字符串值。

第二个可选参数也可以传递,表示程序将按照字符串或字符值分隔字符串的字符串。例如,对于字符串“Cake,Donuts,Cream”,如果第二个参数是“,”,那么令牌将通过“,”分隔,导致令牌“Cake”、“Donuts”和“Cream”。

第三个参数也是可选的,是一个 布尔值(默认为 false),表示第二个参数中指定的分隔符值是否被认为是令牌。对于上面的第二个参数的相同示例,如果传入 true,则令牌现在将涉及分隔符“,”。

生成的令牌:“Cake”, “,”, “Donuts”, “,”, “Cream”

语法:

StringTokenizer name = new StringTokenizer(string);

示例:

StringTokenizer tokens = new StringTokenizer("Werdna wa xueruoma");

要访问拆分的令牌或显示它们,必须使用 nextToken() 方法。简单地打印 StringTokenizer 对象或按索引引用它将不起作用,因为它不是一个 数组。访问对象的所有令牌最直接的方法是迭代,最好是 while 循环。

// Using the object "tokens" in the above example
// hasMoreTokens() returns a boolean as to whether the given object  // has more tokens
while (tokens.hasMoreTokens()){
    System.out.println(tokens.nextToken());
}/* 
Output:Werdna
wa
xueruoma
*/

方法

此类没有有用的独特方法。

3. Currency 类

顾名思义,Currency 类用于处理货币值。此类中的方法允许访问和操作与货币相关的方面。我发现这个特定的类在设计金融应用程序或程序时非常有用。

其他用法示例:游戏或应用内购买、投资和股票相关的程序、货币兑换程序。

基础

要访问 Currency 类中的大多数方法,必须从货币对象中引用它们。货币对象可以表示一个国家的特定货币(例如,USD、JPY、CAD)。不能使用构造函数创建货币对象,只能使用 getInstance() 方法创建。

在这种情况下,getInstance() 接受一个字符串参数,给定货币代码。返回该代码的货币实例,从而创建对象。

语法:

Currency name = Currency.getInstance(currencyCode);

示例:

// Creates an instance of us currency
Currency usd = Currency.getInstance("USD");

方法

以下是 Currency 类中的几个方法示例。除了下面列出的方法之外,还有几种更复杂的方法。请随意探索它们以完全掌握和理解此类。

  • getSymbol() — 返回货币对象的符号。不带参数。准确地说,返回货币代码,除了代码的最后一个字母,它表示货币类型(CAD,D 表示美元/$;JPY,Y 表示日元/¥)。这将替换为货币符号。
  • getDisplayName() — 返回货币的全名。不带参数。
  • getCurrencyCode() — 返回货币的货币代码。不带参数。

示例:

getSymbol()

Currency japan = Currency.getInstance("JPY");
System.out.println(japan.getSymbol());// Output: JP¥

getDisplayName()

Currency japan = Currency.getInstance("JPY");
System.out.println(japan.getDisplayName());// Output: Japanese Yen

getCurrencyCode()

Currency japan = Currency.getInstance("JPY");
System.out.println(japan.getCurrencyCode());// Output: JPY

4. TimeZone类

TimeZone类用于获取UTC时区偏移量。UTC偏移量是某个时区超前或落后于协调世界时(UTC)的时间量。

它还可用于获取时区ID和确定夏令时。我发现在为应用程序设计时间组件或确定用户位置时,这个类很有用。

基础知识

当使用个别特定时区时,你需要实例化代表特定时区的时区对象。要创建时区对象,你可以使用getTimeZone()方法,而不是构造函数。此方法是TimeZone类之一的方法,它返回与参数中输入的ID相对应的TimeZone对象。

语法:

TimeZone timezoneName = TimeZone.getTimeZone(timezoneID);

示例:

TimeZone tokyo = TimeZone.getTimeZone("Asia/Tokyo");

如果你不知道特定区域时区的ID,则可以使用以下公式来获取ID。

"Continent/City"

方法

以下是未在上面使用的其他方法。

  • getID() — 返回对应时区对象的ID
  • getAvailableIDs() — 返回包含此类中所有可用时区ID的数组
  • setID(<em>ID</em>) — 将时区ID设置为参数中指定的字符串(将时区的ID更改为自定义名称)
  • getOffset(<em>date</em>) — 返回给定日期(以长数字形式指定)的对应时区对象与UTC之间的偏移量
  • getDefault() — 返回你所在地区的默认时区

示例:

TimeZone myRegion = TimeZone.getDefault();
System.out.println("Original Time Zone: " + myRegion.getID());
myRegion.setID("Africa/Tandrewland");
System.out.println("New Arrival: " + myRegion.getID());/* 
Output:Original Time Zone: America/Toronto
New Arrival: Africa/Tandrewland
*/

5. GregorianCalendar类

GregorianCalendar类是Calendar类的具体子类。

Calendar类是一个抽象类。具体子类是抽象类的子类。

它是一种支持公历和儒略历系统的日历。公历是世界上大多数地区使用的日历,是教皇格列高利十三世修改的儒略历。儒略历是由凯撒创造的,基于罗马日历。

基础知识

我创建GregorianCalendar对象的方法很简单,只需使用构造函数即可。程序将提供当前日期、时间和时区的日历。但是,可以通过构造函数参数自定义这些值。

语法:

GregorianCalendar name = new GregorianCalendar(date/time)

可以按以下格式指定日期和时间:

年、月、日、小时、分钟_和_秒

请注意,此参数是可选的。你也可以将时区、语言环境或两者都作为构造函数的参数传递。

方法

以下是Gregorian Calendar类中的一些方法。

  • getTime() — 返回日历对象的当前日期和时间。这可能不是实际的当前日期和时间,具体取决于你如何更改日历的属性。
  • setTime() — 设置日历对象的日期和时间。此参数需要两个参数。第一个是要更改的日历字段(例如,如果要设置月份,则应将此参数指定为Calender.MONTH)。第二个参数是新的更改后的值。
// Calendar representing current time and date
GregorianCalendar g = new GregorianCalendar();
System.out.println("Original Time: " + g.getTime());// Setting the current day to the 28th
g.set(Calendar.DAY_OF_MONTH, 28);
System.out.println("Altered Time: " + g.getTime());/* 
Output:Original Time: Mon Sep 20 18:10:11 EDT 2021
Altered Time: Tue Sep 28 18:10:11 EDT 2021
*/

6. Date类

Date类允许访问日期对象,这些对象表示各种日期和时间,类似于Calendar类的更具体版本。

基础知识

可以使用构造函数创建Date对象。

Date name = new Date();

如果使用Date()来创建对象,则该对象将包含表示当前日期和时间的数据。但是,可以通过将长数字输入Date()构造函数来自定义此值。长数字代表毫秒。此构造函数还可以接收表示年、月、小时和分钟的整数参数。最后,这些都是可选参数。

方法

  • setTime() — 设置日期对象的时间。它接受一个参数:表示毫秒时间的长数字。应用该方法的日期对象将被更改。
  • getTime() — 以毫秒形式返回给定日期对象表示的时间和日期。
  • after() — 检查日期对象的日期是否在传递到参数中的日期之后。
  • before() — 与after()相反。检查日期对象的日期是否在传递到参数中的日期之前。

示例:

Date birth = new Date(2006, 2, 27);
Date death = new Date(2021, 4, 3);
Date current = new Date();

System.out.println("Is death after birth? " + death.after(birth));
System.out.println("Is birth before death? " + birth.before(death));
System.out.println("What is the current time? " + current.getTime());

current.setTime(100);

System.out.println("What is the altered time? " + current);/*
Output:Is death after birth? true
Is birth before death? true
What is the current time? 1632624244495
What is the altered time? Wed Dec 31 19:00:00 EST 1969
*/

7. Calendar类

Calendar类是与Gregorian Calendar和Date类相关的抽象类。它们经常一起使用,以优化程序中的数据操作。

基础知识

由于Calendar类是抽象类,因此不能使用构造函数来创建Calendar对象。相反,我们使用getInstance()方法。

Calendar name = Calendar.getInstance();

通过这样做,分配给该实例的变量将是包含当前时间和日期数据的日历对象,就像Date函数一样。但是,在Calendar类中,你可以使用特定的Calendar字段:月、日、小时、年等。```

方法

  • get() — 返回指定参数的日历字段在已分配的日历对象中的值。
  • getMaximum() — 返回已分配的日历对象中给定日历字段的最大可能值。

示例:

Calendar cal = Calendar.getInstance();

System.out.println("Current Month: " + cal.get(Calendar.MONTH));
// Max Days in Week:
System.out.println(cal.getMaximum(Calendar.DAY_OF_WEEK));/*
Output:Current Month: 8
Maximum amount of Days in a Week: 7
*/

结论

上面讨论的类在现代应用程序中的各种常见场景中非常有用。在线支付和金融程序以及用户界面上的日期和时间存在于各种类型的应用程序中,从基本和高级的商业实用程序到游戏和视频流服务。无论你是否了解这些类,都要探索它们的方法,熟悉它们的用法,并将它们应用到你未来的项目中。这肯定会让你走上优化编码技能和进一步扩展知识的道路。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
阿波
The minute I see you, I want your clothes gone!

评论(0)

添加评论