java常用的基础类和方法

一、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);

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值