【技术积累】Java中的常用类【一】
Math类
Math类是Java中的一个数学工具类,提供了一系列常用的数学方法。下面是Math类的常用方法及其案例:
abs()
返回一个数的绝对值。
int num = -10;
int absNum = Math.abs(num);
System.out.println(absNum); // 输出:10
解释:abs()方法返回num的绝对值,即10。
ceil()
返回大于或等于一个数的最小整数。
double num = 3.14;
double ceilNum = Math.ceil(num);
System.out.println(ceilNum); // 输出:4.0
解释:ceil()方法返回大于或等于num的最小整数,即4.0。
floor()
返回小于或等于一个数的最大整数。
double num = 3.14;
double floorNum = Math.floor(num);
System.out.println(floorNum); // 输出:3.0
解释:floor()方法返回小于或等于num的最大整数,即3.0。
round()
返回一个数的四舍五入值。
double num = 3.54;
long roundNum = Math.round(num);
System.out.println(roundNum); // 输出:4
解释:round()方法返回num的四舍五入值,即4。
max()
返回两个数中的较大值。
int num1 = 10;
int num2 = 20;
int maxNum = Math.max(num1, num2);
System.out.println(maxNum); // 输出:20
解释:max()方法返回num1和num2中的较大值,即20。
min()
返回两个数中的较小值。
int num1 = 10;
int num2 = 20;
int minNum = Math.min(num1, num2);
System.out.println(minNum); // 输出:10
解释:min()方法返回num1和num2中的较小值,即10。
random()
返回一个0.0到1.0之间的随机数。
double randomNum = Math.random();
System.out.println(randomNum); // 输出:0.123456789
解释:random()方法返回一个0.0到1.0之间的随机数。
pow()
返回一个数的指定次幂。
double base = 2;
double exponent = 3;
double result = Math.pow(base, exponent);
System.out.println(result); // 输出:8.0
解释:pow()方法返回base的exponent次幂,即2的3次幂为8.0。
sqrt()
返回一个数的平方根。
double num = 16;
double sqrtNum = Math.sqrt(num);
System.out.println(sqrtNum); // 输出:4.0
解释:sqrt()方法返回num的平方根,即4.0。
sin()、cos()、tan()
返回一个角度的正弦、余弦、正切值。
double angle = 45;
double sinValue = Math.sin(Math.toRadians(angle));
double cosValue = Math.cos(Math.toRadians(angle));
double tanValue = Math.tan(Math.toRadians(angle));
System.out.println(sinValue); // 输出:0.7071067811865475
System.out.println(cosValue); // 输出:0.7071067811865476
System.out.println(tanValue); // 输出:0.9999999999999999
解释:sin()、cos()、tan()方法返回angle角度的正弦、余弦、正切值。需要注意的是,Math类的三角函数方法接受的参数是弧度制,因此需要使用Math.toRadians()方法将角度转换为弧度。
Calendar类
Calendar类是Java中用于操作日期和时间的类,它提供了一系列常用的方法来获取、设置和操作日期和时间的各个部分。
下面是Calendar类的常用方法及其案例:
获取日期和时间的各个部分:
- get(int field):获取指定字段的值,返回一个整数。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,所以要加1
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.println("当前日期和时间:");
System.out.println("年:" + year);
System.out.println("月:" + month);
System.out.println("日:" + day);
System.out.println("时:" + hour);
System.out.println("分:" + minute);
System.out.println("秒:" + second);
}
}
设置日期和时间的各个部分
- set(int field, int value):设置指定字段的值。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, Calendar.JANUARY); // 月份从0开始
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
System.out.println("设置后的日期和时间:");
System.out.println(calendar.getTime());
}
}
增加或减少日期和时间的某个部分
- add(int field, int amount):在指定字段上增加或减少指定的数量。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 7); // 增加7天
System.out.println("增加7天后的日期和时间:");
System.out.println(calendar.getTime());
calendar.add(Calendar.MONTH, -1); // 减少1个月
System.out.println("减少1个月后的日期和时间:");
System.out.println(calendar.getTime());
}
}
比较两个日期和时间的先后顺序
- compareTo(Calendar anotherCalendar):比较当前日期和时间与另一个日期和时间的先后顺序,返回一个整数。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar2.add(Calendar.DAY_OF_MONTH, 1);
int result = calendar1.compareTo(calendar2);
if (result < 0) {
System.out.println("calendar1在calendar2之前");
} else if (result > 0) {
System.out.println("calendar1在calendar2之后");
} else {
System.out.println("calendar1和calendar2相同");
}
}
}
判断是否为闰年
- isLeapYear(int year):判断指定年份是否为闰年,返回一个布尔值。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
int year = 2020;
boolean isLeapYear = Calendar.isLeapYear(year);
if (isLeapYear) {
System.out.println(year + "年是闰年");
} else {
System.out.println(year + "年不是闰年");
}
}
}
获取一周的第一天和最后一天
- getFirstDayOfWeek():获取一周的第一天,返回一个整数。
- getLastDayOfWeek():获取一周的最后一天,返回一个整数。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int firstDayOfWeek = calendar.getFirstDayOfWeek();
int lastDayOfWeek = calendar.getFirstDayOfWeek() + 6;
System.out.println("一周的第一天:" + firstDayOfWeek);
System.out.println("一周的最后一天:" + lastDayOfWeek);
}
}
获取一月的第一天和最后一天
- getActualMinimum(int field):获取指定字段的最小值,返回一个整数。
- getActualMaximum(int field):获取指定字段的最大值,返回一个整数。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int firstDayOfMonth = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("一月的第一天:" + firstDayOfMonth);
System.out.println("一月的最后一天:" + lastDayOfMonth);
}
}
判断日期和时间是否相等
- equals(Object obj):判断当前日期和时间与另一个日期和时间是否相等,返回一个布尔值。
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
boolean isEqual = calendar1.equals(calendar2);
if (isEqual) {
System.out.println("calendar1和calendar2相等");
} else {
System.out.println("calendar1和calendar2不相等");
}
}
}
这些方法可以帮助我们更方便地操作和处理日期和时间,满足不同的需求。
StringBuilder类
StringBuilder类是Java中用于处理字符串的可变类,它提供了一系列方法来操作字符串,包括添加、删除、替换、插入等操作。下面是StringBuilder类的常用方法及其案例:
append()方法
用于在字符串末尾添加内容。
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出:Hello World
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用append()方法在其末尾添加了字符串" World"。最后,通过toString()方法将StringBuilder对象转换为String类型并输出。
insert()方法
用于在指定位置插入内容。
StringBuilder sb = new StringBuilder("Hello");
sb.insert(2, "Java");
System.out.println(sb.toString()); // 输出:HeJavallo
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用insert()方法在索引位置2插入了字符串"Java"。最后,通过toString()方法将StringBuilder对象转换为String类型并输出。
delete()方法
用于删除指定位置的字符或字符序列。
StringBuilder sb = new StringBuilder("Hello World");
sb.delete(5, 11);
System.out.println(sb.toString()); // 输出:Hello
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用delete()方法删除了索引位置5到11之间的字符。最后,通过toString()方法将StringBuilder对象转换为String类型并输出。
replace()方法
用于替换指定位置的字符或字符序列。
StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // 输出:Hello Java
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用replace()方法将索引位置6到11之间的字符替换为字符串"Java"。最后,通过toString()方法将StringBuilder对象转换为String类型并输出。
reverse()方法
用于反转字符串。
StringBuilder sb = new StringBuilder("Hello");
sb.reverse();
System.out.println(sb.toString()); // 输出:olleH
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用reverse()方法将字符串反转。最后,通过toString()方法将StringBuilder对象转换为String类型并输出。
length()方法
用于获取字符串的长度。
StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb.length()); // 输出:5
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用length()方法获取了字符串的长度。
capacity()方法
用于获取StringBuilder对象的容量。
StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb.capacity()); // 输出:21
解释:在上述代码中,我们创建了一个StringBuilder对象sb,并使用capacity()方法获取了StringBuilder对象的容量。
总结:StringBuilder类提供了一系列方法来操作字符串,包括添加、删除、替换、插入等操作。通过使用这些方法,我们可以方便地对字符串进行修改和处理。需要注意的是,StringBuilder类是可变的,因此在处理大量字符串拼接时,使用StringBuilder类比直接使用String类效率更高。
StringBuffer类
StringBuffer类是Java中用于处理字符串的可变类,它提供了许多常用的方法来操作字符串。下面是StringBuffer类的常用方法及其案例:
StringBuffer与StringBuilder的区别与联系
StringBuffer和StringBuilder都是Java中用于处理字符串的类,它们的主要区别在于线程安全性和性能。
1. 线程安全性:
- StringBuffer是线程安全的,它的方法都是同步的,可以在多线程环境下使用,但是同步操作会带来一定的性能损耗。
- StringBuilder是非线程安全的,它的方法没有进行同步处理,因此在单线程环境下使用性能更好。
2. 性能:
- StringBuffer的方法都是同步的,因此在多线程环境下使用时可以保证数据的一致性,但是同步操作会带来一定的性能损耗。
- StringBuilder的方法没有进行同步处理,因此在单线程环境下使用性能更好,但是在多线程环境下可能会出现数据不一致的问题。
3. 使用场景:
- 如果在多线程环境下需要进行字符串操作,应该使用StringBuffer,以保证数据的一致性。
- 如果在单线程环境下进行字符串操作,且对性能要求较高,应该使用StringBuilder。
4. 共同点:
- StringBuffer和StringBuilder都是可变的字符串类,可以进行字符串的拼接、插入、删除等操作。
- 它们都继承自AbstractStringBuilder类,具有相似的方法和属性。
总结:StringBuffer和StringBuilder都是用于处理可变字符串的类,主要区别在于线程安全性和性能。StringBuffer是线程安全的,适用于多线程环境,但性能较差;StringBuilder是非线程安全的,适用于单线程环境,性能较好。
append()方法
用于将指定的字符串追加到当前字符串的末尾。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出:Hello World
insert()方法
用于将指定的字符串插入到当前字符串的指定位置。
StringBuffer sb = new StringBuffer("Hello");
sb.insert(2, "Java");
System.out.println(sb.toString()); // 输出:HeJavallo
delete()方法
用于删除当前字符串中指定位置的字符或字符序列。
StringBuffer sb = new StringBuffer("Hello World");
sb.delete(6, 11);
System.out.println(sb.toString()); // 输出:Hello
reverse()方法
用于将当前字符串反转。
StringBuffer sb = new StringBuffer("Hello");
sb.reverse();
System.out.println(sb.toString()); // 输出:olleH
replace()方法
用于将当前字符串中指定位置的字符或字符序列替换为指定的字符串。
StringBuffer sb = new StringBuffer("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // 输出:Hello Java
substring()方法
用于获取当前字符串中指定位置的子字符串。
StringBuffer sb = new StringBuffer("Hello World");
String sub = sb.substring(6, 11);
System.out.println(sub); // 输出:World
length()方法
用于获取当前字符串的长度。
StringBuffer sb = new StringBuffer("Hello");
int len = sb.length();
System.out.println(len); // 输出:5
capacity()方法
用于获取当前字符串的容量。
StringBuffer sb = new StringBuffer("Hello");
int cap = sb.capacity();
System.out.println(cap); // 输出:21
setLength()方法
用于设置当前字符串的长度。
StringBuffer sb = new StringBuffer("Hello");
sb.setLength(3);
System.out.println(sb.toString()); // 输出:Hel
indexOf()方法
用于查找当前字符串中指定字符或字符序列的第一个出现位置。
StringBuffer sb = new StringBuffer("Hello World");
int index = sb.indexOf("o");
System.out.println(index); // 输出:4
以上是StringBuffer类的常用方法及其案例。这些方法可以帮助我们方便地操作字符串,例如追加、插入、删除、替换、反转、截取等操作。
【技术积累】Java中的常用类【一】的更多相关文章
- java中的常用类(二)
java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...
- java 中的常用类
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等. 基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能 ...
- Java中的常用类——Arrays
数组工具类java.util.Arrays Arrays类中的方法都是static修饰的静态方法,因此可以直接使用类名.方法名来调用,而不用通过new使用对象来调用(是"不用"不是 ...
- Java学习笔记-Java中的常用类
Java中有很多类是很常用的,此处列举System,Runtime,Date,Calendar,Math System System:类中的方法和属性都是静态的 字段摘要 static PrintSt ...
- Java中的常用类:包装类、String、StringBuffer、StringBuilder、Math、System、Arrays、BigInteger、BigDecimal、Data、Calendar
一.包装类 √ 二.String类 ★ 三.StringBuffer和StringBuilder类 ★ 四.Math类 五.System类 六.Arrays类 七.BigInteger类和BigDec ...
- Java中的常用类有哪些
1NumberFormat 2DecimalFormat 3BigDecimal 4Math 5Random 6DateFormat 7SimpleDateFormat 8Calendar 9Date ...
- java中最常用jar包的用途说明
java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ...
- Java中最常用的集合类框架之 HashMap
一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构. HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...
- Qt 中一些常用类中文说明
Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...
- java-API中的常用类,新特性之-泛型,高级For循环,可变参数
API中的常用类 System类System类包含一些有用的类字段和方法.它不能被实例化.属性和方法都是静态的. out,标准输出,默认打印在控制台上.通过和PrintStream打印流中的方法组合构 ...
随机推荐
- win10环境下 VMware Workstation Pro 安装centos7无法上网
一.安装centos7 网上类似的教程太多了,我就不一一写了,提供两个网址,先按照教程安装 VMware Workstation Pro ,秘钥在第二个链接里面(亲测可用), 安装完VMware在根据 ...
- Uniswap V2 — 从代码解释 DeFi 协议
Uniswap V2 - 从代码解释 DeFi 协议 为了理解我们在分析代码时将要经历的不同组件,首先了解哪些是主要概念以及它们的作用是很重要的.所以,和我一起裸露吧,因为这是值得的. 我在 5 个段 ...
- R的基本用法2
title: "Lectures" author: '01' date: "2022-09-23" output: pdf_document knitr::op ...
- [图像处理]仿射变换(Affine Transformation)
文章目录 仿射变换(Affine Transformation) 平移变换 Translation 缩放变换(Scale) 剪切变换(Shear) 旋转变换(Rotation) 组合 仿射变换(Aff ...
- [双目视差] 立体匹配算法推理 - SGBM算法(一)
文章目录 立体匹配算法推理 - SGBM算法(一) 一.SGBM与SGM的区别 二.代价计算 立体匹配算法推理 - SGBM算法(一) SGBM立体匹配算法,总体来讲包含以下6个步骤: Preproc ...
- [双目视差] 单双目MATLAB 相机标定(二)双目摄像机标定
文章目录 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 二.标定过程 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 MATLAB R2014a+windows7 6 ...
- Prism Sample 23-RegionMemberLifetime
在导航中跳转时,视图是缓存的.如果要求某视图在离开后就销毁,需要实现 public class ViewAViewModel : BindableBase, INavigationAware, IRe ...
- Prism Sample 16-RegionContext
终于发现一个有趣的新知识了. 本例的核心是RegionContext,意思是一个区域的上下文.但与DataContext似乎并不相同. 先看一下整体思路. 在主窗体上只有一个Region: <G ...
- List 集合手动分页的方法总结
前言 在工作中难免会遇到,将组装的集合数据进行分页处理,现在我将自己手动分页的三种方法进行总结,有不对的地方敬请大家批评指正! 一.数据准备 // 当前页 int pageIndex = 1; // ...
- 2023-04-15:ffmpeg的filter_audio.c的功能是生成一个正弦波音频,然后通过简单的滤镜链,最后输出数据的MD5校验和。请用go语言改写。
2023-04-15:ffmpeg的filter_audio.c的功能是生成一个正弦波音频,然后通过简单的滤镜链,最后输出数据的MD5校验和.请用go语言改写. 答案2023-04-15: 代码见gi ...