常用类
4.13 Math类
定义:Math类是Java提供的一个执行数学基本运算的类,提供的数学运算方法都为static形式,另外还提供了一些数学常量。 语法格式:Math.数学方法 Math.数学常量
1. 三角函数
public static double sin(double a) 正弦 public static double cos(double a) 余弦 public static double tan(double a) 正切 public static double asin(double a) public static double acos(double a) public static double atan(double a) public static double toRadians(double angdeg) 将角度转换成弧度 public static double toDegrees(double angrad) 将弧度转换成角度
//例题4_15三角函数实例
public class example4_15 {
public static void main(String args[]) {
System.out.println("60度的正弦值:"+Math.sin(Math.PI/3));//取60度的正弦
System.out.println("180度的余弦值:"+Math.cos(Math.PI));//取180度的余弦
System.out.println("90度的正切值:"+Math.tan(Math.PI/2));//取90度的正切
System.out.println("0的反正弦值:"+Math.asin(0));//取0的反正弦
System.out.println("1的反余弦值:"+Math.acos(1));//取1的反余弦
System.out.println("1的反正切值:"+Math.atan(1));//取1的反正切
//弧度的定义是:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。
//当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度。
//圆弧长公式:弧长=nπr/180 n就是角度数,即圆心角n所对应的弧长。
//用弧度求扇形面积公式:S=|α| r^2/2 二分之一倍的α角的大小,与半径的平方之积。
//半径为r的扇形面积为nºπr²/360º
//把度化成弧度的公式:弧度=度×π/180 单位rad
System.out.println("45度的弧度值:"+Math.toRadians(45));//取45度的弧度值 角度->弧度
//把弧度化成度的公式:度=弧度×180°/π
System.out.println("п/2的角度值:"+Math.toDegrees(Math.PI/2));//取п/2的角度值 弧度->角度
}
}
2. 指数函数
public static double exp(double a) 返回e的a次方 public static double log(double a) 返回a的自然数 public static double log10(double a) 返回底数为10的a的对数 public static double sqrt(double a) 返回a的平方根 public static double pow(double a,double b) 返回a的b次方
//例题4_1指数函数实例
public class example4_16 {
public static void main(String[] args) {
System.out.println("e的3次方:"+Math.exp(3));//e的3次方
System.out.println("3的自然对数:"+Math.log(3));//3的自然对数
System.out.println("以10为3的自然对数:"+Math.log10(3));//3的自然对数
System.out.println("9的平方根值:"+Math.sqrt(9));//9的平方根值
System.out.println("2的3次方值:"+Math.pow(2, 3));//2的3次方值
}
}
3. 取整函数
public static double ceil(double a) 返回>=a的最小浮点数 public static double floor(double a) 返回<=a的最大浮点数 public static double rint(double a) 返回对a四舍五入后的最近的长整数 public static int round(float a) 返回对a四舍五入后的最近的整数 public static long round(double a) 返回对a四舍五入后的最近的长整数
//例题4_17取整函数实例
public class example4_17 {
public static void main(String[] args) {
System.out.println("Math.ceil(8.3)="+Math.ceil(8.3));
System.out.println("Math.floor(3.5)="+Math.floor(3.5));
System.out.println("Math.rint(3.7)="+Math.rint(3.7));
System.out.println("Math.round(2.5)="+Math.round(2.5));
System.out.println("Math.round(4.3f)="+Math.round(4.3f));
}
}
4. 取最大值、最小值、绝对值函数
public static int max(int a,int b) 返回两个int值中较大的一个 public static long max(long a,long b) 返回两个long 值中较大的一个 public static float max(float a,float b) 返回两个float 值中较大的一个 public static double max(double a,double b) 返回两个double值中较大的一个 public static int min(int a,int b) 返回两个int值中较小的一个 public static long min(long a,long b) 返回两个long 值中较小的一个 public static float min(float a,float b) 返回两个float 值中较小的一个 public static double min(double a,double b) 返回两个double值中较小的一个 public static int abs(int a) 返回int值的绝对值 public static long abs(long a) 返回long 值的绝对值 public static float abs(float a) 返回float 值的绝对值 public static double abs(double a) 返回double 值的绝对值
//例题4_18取最大值绝对值函数实例
public class example4_18 {
public static void main(String[] args) {
System.out.println("4.8和3.2中较大者:"+Math.max(4.8,3.2));
System.out.println("4.8和3.2中较小者:"+Math.min(4.8,3.2));
System.out.println("-3的绝对值:"+Math.abs(-3));
}
}
4.14 StringBuffer类和StringBuilder类
定义:String类创建的字符串是常量,是不可更改的。若对字符串进行动态增减,则用StringBuffer类。StringBuffer又称动态字符串,每个字符串缓冲区都有一定的容量。
1. StringBuffer类
(1)常用构造方法
- StringBuffer() 构造一个不带字符的字符串缓冲区,初始容量为16个字符。
- StringBuffer(int iniCapacity) 指定字符容量的字符串缓冲区。
- StringBuffer(String str) 内容初始化为指定字符串的字符缓冲区。
(2)常用方法
- public int length() 返回字符串的个数。
- public append(object obj) 在尾部添加对象。
- public insert(int StartPos,Object obj) 在StartPos位置插入对象obj。
- public StringBuffer delete(int start,int end) 删除从start到end-1处的字符串,返回当前对象。
- public StringBuffer deleteChartAt(int index) 删除索引为index处的字符,返回当前对象。
- public char CharAt(int index) 返回索引处的字符。
- public void setCharAt(int index,char c) 设置索引index处的字符为c。
- public String substring(int startIndex) 返回从startIndex开始直到最后的全部字符。
- public String substring(int startIndex,int endIndex) 返回范围startIndex~endIndex的字符串。
- public StringBuffer reverse() 将字符串序列反转,返回当前对象的引用。
- public String replace(int startIndex,int endIndex,String newStr) 用newStr代替从startIndex到endIndex-1的字符序列,返回当前对象。
//例题4_19StringBuffer的使用
public class example4_19 {
public static void main(String[] args) {
// StringBuffer的使用
String s = "Hello java!";
StringBuffer str = new StringBuffer();
// 在str后添加字符(串)
str.append(s).append("你好!").append("Java!");
System.out.println(str);
// 删除索引为0的位置的字符
str.deleteCharAt(0);
System.out.println(str);
// 从索引为0的位置开始,截取11个字符 空格字符也算。
s = str.substring(0, 11);
System.out.println(s);
// 使str内容反向
str.reverse();
System.out.println(str);
// 在4索引后插入第二个参数的内容
str.insert(4, "这是插入的字符");
System.out.println(str);
}
}
2. StringBuilder类
由于StringBuilder没有实现同步机制,而StringBuffer实现了,所以StringBuilder比StringBuffer有更高的性能。 所以优先采用StringBuilder。
4.15 Date类
定义:Date类表示日期和时间,提供了操作日期的时间各组成部分的方法,在java.util包中。
1. 常用构造方法
- Date()
- Date(long date)
//例题4_20获取当前时间
public class example4_20 {
public static void main(String[] args) {
//直接输出Date类型对象
Date d = new Date();
System.out.println(d);
//将字符串格式的时间转为Date
String ds="2021-3-29 21:07";
System.out.println(ds.valueOf(ds));
}
}
2. 常用方法
- public void setTime(long time) 设置此Date对象
- public long getTime() 返回Date对象表示的毫秒数
- public static Date valueOf(String s) 将字符串格式日期转成Date
3. 相关类SimpleDateFormat
定义:用于格式化日期,在java.text包中。 (1)构造方法 SimpleDateFormat(String FormatString) FormatString常用样式:
- y或yy 表示年份
- m或MM 表示月份
- d或dd 表示天
- H或HH 表示小时
- m或mm 表示分
- s或ss 表示秒
- E 表示字符串输出的星期
格式化参数Date对象,返回字符串。 public String format(Date d) 设置解析字符串日期时,是否严格检查日期字符串。true接收无效数字,false不接受无效数字并严格检查。 public setLenient(boolean b) 根据构造函数中的格式,解析字符串日期为date类型,不能解析则抛出异常。 public Date parse(String dateString)
//例题4_21 SimpleDateFormat实例
public class example4_21{
//throws Exception 抛出运行时的所有异常
//throws ParseException 抛出运行时的ParseException异常
public static void main(String[] args) throws ParseException {
//根据SimpleDateFormat构造函数实例化SimpleDateFormat对象
//通过Ctrl+B可以查看SimpleDateFormat源码
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d=new Date();
//根据构造函数中的格式将Date对象输出为字符串。
String DateString=sf.format(d); //返回类似的日期 2014-01-21 16:03:39
System.out.println(DateString);
//设置解析字符串日期时,是否严格检查日期字符串。true接收无效数字,false不接受无效数字并严格检查
sf.setLenient(false);
//根据构造函数中的格式,解析字符串日期为date类型,用来检验日期字符串
sf.parse(DateString);
}
}
4. 相关类DateFormat
定义:用于格式化日期,在java.text包中。 (1)静态方法 public DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale alocal) 用于获得一个Dateformat实例 dateStyle为日期常数,timeStyle为日期类型,alocal为地区常数 (2)实例方法 public String format(Date d) 格式化参数Date对象,返回字符串。
//例题4_22 DateFormat实例
public class example4_22 {
public static void main(String[] args) {
//public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
//dateStyle 日期类型
//timeStyle 时间类型
//aLocale 地区常数
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG, Locale.CHINA);
System.out.println(df.format(new Date())); // 按中国格式显示日期时间
}
}
4.16 Calendar类
定义:本类提供了日历功能,但这些功能都是由其子类GregorianCalendar实现。
1. GregorianCalendar类
(1)构造方法 GregorianCalendar() 用当前系统日期初始化对象。 (2)常用方法 public int get(int field) 返回与field相关的日期。field是Calenda中的静态字段。 public void set(int field,int value)用value值替换field表示的日期 public final void set(int year,int value) 设置年/月/日 public final void set(int year,int month,int date) 设置年月日 public final void set(int year,int month,int date,int hour,int minute) 设置年月日时分秒 public final void set(int year,int month,int date,int hour,int minute,int second) 设置年月日时分秒毫秒 public long getTimeMillis() 获取对象毫秒数
//例题4_23 获取当前日期时间_使用日历功能
public class example4_23 {
public static void main(String[] args) {
GregorianCalendar gre = new GregorianCalendar(); // 获得实例
//Calendar.YEAR等是Calendar中定义的静态字段 get()返回与静态字段有关的日期
//日期字符串拼接
String now = gre.get(Calendar.YEAR) + "-" + (gre.get(Calendar.MONTH) + 1)
+ "-" + gre.get(Calendar.DATE) + " "
+ gre.get(Calendar.HOUR_OF_DAY) + ":"
+ gre.get(Calendar.MINUTE) + ":" + gre.get(Calendar.SECOND);
System.out.println(now); //显示当前日期时间
System.out.println(gre.getTimeInMillis()); //获得对象毫秒数
}
}
2. Calendar类
定义:Calendar类是一个抽象类,但可以使用其中的static方法getInstance()初始化日历对象。它为日历字段之间转换提供方法,为操作日历字段提供方法。 (1)常用方法 public Date getTime() 获取日期,返回一个表示calendar时间值的Date对象 public long getTimeInMillis() 返回此calendar的时间值,以毫秒为单位 public void add(int field,int amount) 根据日历规则,为给定的日历字段添加或减去指定的时间量 public int getMaximum(int field) 返回field最大值 public setTime(Date date) 设置日期 (2)静态字段 YEAR MONTH DATE(DAY_OF_MONTH) 分别表示年月日 HOUR MINUTE SECOND MILLISECOND 分别表示时分秒毫秒 HOUR为12小时制 HOUR_OF_DAY 表示一天中的第几个小时(24小时制) DAT_OF_YEAR 表示一年中的第几天 WEEK_OF_YEAR 表示一年中的第几周 WEEK_OF_MONTH 表示一月中的第几周 DAY_OF_WEEK 表示一周中的第几天(1表示星期日,2表示星期一,以此类推)
//例题4_24 打印未来几年的10个黑色星期五_使用日历功能
public class example4_24 {
public static void main(String[] args) {
//Calendar类是一个抽象类,不能new实例化。但可以使用Calendar类static方法getInstance()初始化一个日历对象。
Calendar cal = Calendar.getInstance();
//实例化SimpleDateFormat对象设置日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd EEEE");//设置日期格式
cal.set(Calendar.DAY_OF_MONTH, 13);//设置日期为13号
int n = 1;
while (n <= 10) {
//日历的变化都是有序的。
System.out.println("输出当前日历"+sdf.format(cal.getTime()));
//遇到星期五就分段输出结果。 调用静态字段Calendar.DAY_OF_WEEK-表示一周的第几天。
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {//如果是星期五
Date date = cal.getTime();//获得日期,返回一个表示此Calendar时间值的Date对象
System.out.println(sdf.format(date));//按照格式打印黑色星期五
n++;
}
cal.add(Calendar.MONTH, 1);//月份增加1个月
}
}
}