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类的常用方法及其案例。这些方法可以帮助我们方便地操作字符串,例如追加、插入、删除、替换、反转、截取等操作。