一、System类
在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
注意,system类不能手动创建对象,因为构造方法被私有化(即被private关键字修饰),组织外界创建对象(即不能用new关键字生成一个对象)。System类中的都是静态方法(static关键字修饰),类名访问即可。在JDK中,有许多这样的类。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
常用的方法:
//控制台输出
System.out.println();
//当前系统时间 毫秒
System.currentTimeMillis();
// 终止当前正在运行的 Java 虚拟机
System.exit(0);
//运行垃圾回收器。
System.gc();
//确定当前的系统属性。
System.getProperties();
//用来实现将源数组部分元素复制到目标数组的指定位置
/**
* Object arr:要复制的原数组;
* Int srcPos:数组源的起始索引;
* Object dest:复制后的目标数组;
* int destPos:目标数组起始索引;
* int length,指定复制的长度;
*/
System.arraycopy(arr, 3 , copy, 0 , 2);
二、String类
//将此字符串与指定对象进行比较。
public boolean equals (Object anObject);
//将此字符串与指定对象进行比较,忽略大小写。
public boolean equalsIgnoreCase (String anotherString);
//返回此字符串的长度
public int length ();
//将指定的字符串连接到该字符串的末尾。
public String concat (String str);
//返回指定索引处的 char值。
public char charAt (int index);
//返回指定子字符串第一次出现在该字符串内的索引。
public int indexOf (String str);
//返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
public String substring (int beginIndex);
//返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
public String substring (int beginIndex, int endIndex);
//将此字符串转换为新的字符数组。
public char[] toCharArray ();
//使用平台的默认字符集将该 String编码转换为新的字节数组
public byte[] getBytes ();
//将与target匹配的字符串使用replacement字符串替换
public String replace (CharSequence target, CharSequence replacement);
//将此字符串按照给定的regex(规则)拆分为字符串数组。
public String[] split(String regex ;
//判断字符串中是否包含指定字符。
boolean contains(CharSequence s);
三、Arrays类
Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。
//将参数数组变成字符串
Arrays.toString(arr);
/**
* 如果是数值,sort默认按照升序从小到大
* 如果是字符串,sort默认按照字母的升序
* 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持
*/
Arrays.sort()
//填充数组
Arrays.fill();
int[] arr = new int[5];//新建一个大小为5的数组
Arrays.fill(arr,4);//给所有值赋值4
String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//二分查找法找指定元素的索引值(下标)
Arrays.binarySearch();
int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 30));
//输出:2 (下标索引值从0开始)
//截取数组
Arrays.copeOf() 和Arrays.copeOfRange();
int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[10, 20, 30] (截取arr数组的3个元素赋值给姓数组arr1)
/**-------------------------------**/
int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOfRange(arr,1,3);
String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[20, 30] (从第1位(0开始)截取到第3位(不包括)
四、Integer类
//用于将字符串转换成基本数据类型
Integer.valueOf(); Integer.parseInt();
//区别:
valueOf()的内部其实就是调用了parseInt()方法
parseInt返回的是基本类型int,而valueOf返回的是对象
Integer.ValueOf()会比Integer.parseInt()多创建一个Integer对象
//基本数据类型转为字符串
Integer.toString();
//比较两个数的大小 x<y返回-1 否则返回1
Integer.compare(int x, int y);
五、Math类
在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数、对数、平方根和三角函数等。Math 类位于 java.lang 包,它的构造方法是 private 的,因此无法创建 Math 类的对象,并且 Math 类中的所有方法都是类方法,可以直接通过类名来调用它们
1、四舍五入
//(推荐使用)
- int/long Math.round(float/double d);
- 如果入参是float,返回int类型,如果入参是double,返回long类型。
public static void main(String[] args) {
float f1 = 1.34f;
double f2 = 1.5;
double f3 = 2.5;
System.out.println(Math.round(f1));
System.out.println(Math.round(f2));
System.out.println(Math.round(f3));
}
输出: 1
2
3
2、向上、向下取整
- double java.lang.Math.ceil(double a):向上取整。只要小数位包含有效值,取比当前值大的最小整数作为结果,否则结果不变。
- double java.lang.Math.floor(double a):向下取整。只要小数位包含有效值,取比当前值小的最大整数作为结果,否则结果不变。
public static void main(String[] args) {
//向上、向下取整
System.out.println(Math.ceil(-2.1));
System.out.println(Math.floor(2.34));
}
输出:
-2.0
2.0
3、求绝对值、最大值、最小值
- double java.lang.Math.abs(double a):求绝对值。
- double java.lang.Math.max(double a, double b):求最大值,a和b相同,则随意返回一个。
- double java.lang.Math.min(double a, double b):求最小值,a和b相同,则随意返回一个。
public static void main(String[] args) {
//求最大值、最小值、绝对值
System.out.println(Math.max(2.11, 2.12));
System.out.println(Math.min(2.11, 2.12));
System.out.println(Math.abs(-2.11));
}
输出:
2.12
2.11
2.11
4、求n次方及n次方根
- double java.lang.Math.sqrt(double a):求平方根。
- double java.lang.Math.cbrt(double a):求立方根。
推荐使用: - double java.lang.Math.pow(double a, double b)
描述:入参为所有基本数值类型,返回值double类型。底数是a,指数是b。该方法既可以用来计算n次方,也可以用来计算n次方根,只要把指数换成1/n的方式即可。
public static void main(String[] args) {
//求n次方,2是底数,3是指数
System.out.println(Math.pow(2, 3));
//求n次方根
System.out.println(Math.sqrt(8));//求平方根:square root
System.out.println(Math.cbrt(8));//求立方根:cube root
System.out.println(Math.pow(16,1/(double)4));//求N次方根
}
输出:
8.0
2.8284271247461903
2.0
2.0
5、获取一定范围内的随机数
- double java.lang.Math.random():返回[0,1)范围内的随机数(左闭右开区间)
//获取[1,100]内的随机整数
System.out.println((int)(Math.random()*100+1));
6、三角函数
6.1角度和弧度之间的转换
- double java.lang.Math.toRadians(double angdeg):度数转弧度。
- double java.lang.Math.toDegrees(double angrad):弧度转度数。
6.2 基本三角函数的计算
- double java.lang.Math.sin(double a):正弦函数。a表示弧度值。
- double java.lang.Math.cos(double a):余弦函数。a表示弧度值。
- double java.lang.Math.tan(double a):正切函数。a表示弧度值。
7、保留小数问题
//数字的保留小数问题
//使用#的特点:对于整数部分,不做处理,对于小数部分,只有超出时做四舍五入
DecimalFormat decimalFormmat = new DecimalFormat("#.##");
//使用0的特点:对于整数部分,超出部分不作处理,不足部分,用0补齐。对于小数部分,超出部分,四舍五入,不足部分,0补齐
DecimalFormat decimalFormmat1 = new DecimalFormat("00.00");
//组合使用,不修改整数部分,只对小数部分保留2位小数,不足以0补齐
DecimalFormat decimalFormmat2 = new DecimalFormat("#.00");
六、Random类
在JDK的java.util包中有一个Random类,他可以在指定的取值范围内随机产生数字。在Random类中有两种构造方法
Random() 无参构造方法,用于创建一个伪随机数生成器。
Random(long seed) 有参构造方法,使用一个long类型的seed种子创建伪随机数生成器。
Random random=new Random();
for (int i = 0; i < 50; i++) {
//随机生产100以内的随机数
System.out.println(random.nextInt(100));
}
六、BigDecimal类
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算.其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类.BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念.float和Double只能用来做科学计算或者是工程计算;在商业计算中,对数字精度要求较高,必须使用 BigInteger 类和 BigDecimal 类,它支持任何精度的定点数,可以用它来精确计算货币值。
- 由于在运算的时候,float类型和double很容易丢失精度,所以一般不用来做计算货币。
- BigDecimal构造方法
BigDecimal BigDecimal(double d); //不允许使用
BigDecimal BigDecimal(String s); //常用,推荐使用
static BigDecimal valueOf(double d); //常用,推荐使用
public BigDecimal add(BigDecimal augend);//加
public BigDecimal subtract(BigDecimal subtrahend);//减
public BigDecimal multiply(BigDecimal multiplicand);//乘
public BigDecimal divide(BigDecimal divisor);//除
public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode);//商,几位小数,舍取模式
七、Calendar类
Calendar是java util包下的一个工具类,提供了很方便的不同日期格式的处理
public static void main(String[] args) {
System.out.println("------------Calendar无参构造------------");
//Calendar对象,不传参数,默认为当前日期
Calendar calendar =new GregorianCalendar();
//获取当前年份
System.out.println(calendar.get(Calendar.YEAR));
//获取当前月份 从0开始,0代表一月,1代表二月,以此类推
System.out.println(calendar.get(Calendar.MONTH));
//获取当前日期 也可以使用DAY_OF_MONTH
System.out.println(calendar.get(Calendar.DATE));
//获取当前时 24小时进制
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
//获取当前分
System.out.println(calendar.get(Calendar.MINUTE));
//获取当前秒
System.out.println(calendar.get(Calendar.SECOND));
//获取今天是这个月的第几个星期
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));
//获取今天是星期几 1表示星期天,2表示星期一,以此类推
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("------------Calendar有参构造------------");
/**
* 有参构造 分别代表年月日时分秒,写法简单明了,很符合我们人类的思维
* 注意月份的设置是从0开始的,这里设置的是月份是6,实际是设置了7月份
*/
calendar =new GregorianCalendar(2019, 6, 14, 16, 15,30);
/**
* 除了在构造方法直接设置之外,也可以通过set方法设置
* 第一个参数表示设置的参数类型,第二个表示具体值
*/
calendar.set(Calendar.YEAR, 2000);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 20);
//...
System.out.println("------------Calendar和Date转换------------");
Date now = calendar.getTime();
calendar.setTime(now);
System.out.println("------------Calendar日期计算以及判断------------");
calendar = new GregorianCalendar();
Calendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.YEAR, 2800);
//是否在某个时间(calendar2)之后
System.out.println(calendar.after(calendar2));
//是否在某个时间(calendar2)之前
System.out.println(calendar.before(calendar2));
//增加多少年年,月日以及时分秒同理
calendar.add(Calendar.YEAR, -10);
}