Java中的常用API

一、java.lang包下的API

Java常用基础包,在开发中会自动导入到代码环境中,不需要import。

1.基本数据类型/包装类

(1)基本数据类型:byte、short、int、long、float、double、char、boolean

(2)包装类:

  • Byte:–提供了将字节数据转换为其他类型的方法,从Number抽象类继承过来.decode:将各种进制的数据内容的字符串,转换为十进制标识的字节类型,数字进制的标识符:无标识符:按十进制转换;ox、OX、#:按十六进制转换;o:按八进制转换.
  • Short、Integer –将short、Integer装换为其数据类型的方法,从Number抽象类继承过来。decode与Byte类中的decode方法一样可进行不同进制的装换。parseShort、parseInt、parseByte一样,可以进行不同的进制装换值。

             注意:Integer十进制转其他进制的方法:toBinaryString()、toHexString()、toOctalString()。

  • Float、Double –isInfinite():用于判断数字是否有趋近无穷大,无法完整描述的情况。isNaN():判断浮点数据是否为有效数据(浮点类型参与运算后用于判断是否有效)
  • 字段:
    最大值:MAX_VALUE
    最小值:MIN_VALUE

       注:valueOf、parseXXX方法可以将字符串形式的值装换为数字。

(3)包装类与基本数据类型之间可以实现数据类型的自动转换,即装箱和拆箱。

          装箱:自动将基本数据类型转换为其对应的包装类.

          拆箱:自动将包装类型转换为基本数据类型.

public class IntegerDemo {
	public static void main(String[] args) {
		//int型数据的范围
		System.out.println(Integer.MIN_VALUE+"~"+Integer.MIN_VALUE);
		System.out.println("---------");
		//进制转换
		int i = 100;
		//二进制
		System.out.println(Integer.toBinaryString(i));
		//八进制
		System.out.println(Integer.toOctalString(i));
		//十六进制
		System.out.println(Integer.toHexString(i));
		System.out.println("--------------");
		//String-->int类型
			//方式1:
				int i2 = Integer.parseInt("100");
				System.out.println(i2);
			//方式2:
				//创建Integer对象,传入String类型的数据
				//Integer integer = new Integer("1000");
				int i3 = new Integer("1000").intValue();
				System.out.println(i3);
	}

}


2:Character类的讲解
2.1 Character:Character 类在对象中包装一个基本类型 char 的值
  此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
  2.2 构造方法:
  public Character(char value)
  2.3 成员方法
  public static boolean isUpperCase(char ch) 判断是否是大写字符
  public static boolean isLowerCase(char ch) 判断是否是小写字符
  public static boolean isDigit(char ch) 判断是否是数字
  public static char toUpperCase(char ch) 转成大写
  public static char toLowerCase(char ch) 转成小写

public class CharacterTest {
	public static void main(String[] args) {
		//2.3 需求:键盘录入一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
		/** 
		 * 分析:
		 * 1.创建键盘录入对象,录入数据
		 * 2.将字符创转换为字符数组
		 * 3.遍历数据拿出每一个字符进行if判断
		 * 4.创建统计变量,统计次数
		 */
		//1.创建键盘录入对象,录入数
		Scanner sc = new Scanner(System.in);
		
		//1.2 录入字符串数据
		String str = sc.nextLine();
		
		//2.将字符创转换为字符数组
		char[] chs = str.toCharArray();
		
		//3.遍历数据拿出每一个字符进行if判断
		int bigChar = 0;
		int smallChar = 0;
		int number = 0;
		
		for (int i = 0; i < chs.length; i++) {
			//System.out.println(chs[i]);
			if (Character.isUpperCase(chs[i])) {
				bigChar++;
			}
			if (Character.isLowerCase(chs[i])) {
				smallChar++;
			}
			if (Character.isDigit(chs[i])) {
				number++;
			}
		}
		
		System.out.println("大写字符出现的次数"+bigChar);
		System.out.println("小写字符出现的次数"+smallChar);
		System.out.println("数字字符出现的次数"+number);
		
	}

}


3.数学运算类:Math;其重要方法有:

        abs() :获取绝对值函数.

        acos()、asin():反余弦、反正弦函数(以弧度为参数值PI结合运算).

        cbrt():立方根函数.

        cos()、sin():三角余弦、三角正弦函数(以弧度为参数值PI结合运算).    

     max(int a,int b)、min(int a,int b):获取两个数值中的最大值或最小值.

        log()、log10():对数.

        random():获取随机数.

        round():四舍五入(获得整形值).

        floor():得到小于该数的最小整数.

        ceil():得到大于该数的最大整数.

        sqrt():平方根.

pow(double a,double b)  a的b次方

ceil(double a)  向上取整

floor(double a)   向下取整

abs(int a)   取绝对值

round(float a)   获得[0,1)的随机数

4.字符串类

(1)String:不需要通过new就可以直接创建String对象;+运算符可以用来拼接String内容.

        方法:

              startsWith():字符串是否由指定字符开头.

              endsWith():字符串是否由指定字符结尾.

              indexOf():返回子串在父串中第一次出现的下标(从左起).

              lastIndexOf():返回子串在父串最后一次出现的下标(从右起).

              split():按特殊字符拆分字符内容

              replace():用新字符串内容,替换父串中原有的字符串内容.

              matches():字符验证方法。

5.Object 类

5.1 Object:是所有类的根类。所有的类都直接或者间接的继承自该类
   创建学生对象打印学生对象的地址值(本质上是将地址通过哈希算法算出的哈希值)
   同一个对象的哈希值肯定是一样的。
   哈希值相同的对象的地址值未必一样。
  新华字典,zhu -- 456(哈希值)  -- 猪(第三个),朱(第5个),珠(第9个)
  
   5.2 为什么重写toString()方法
   默认情况下,打印的是对象的字符串表示,意义不大。
    包名...类名+@+该对象的哈希值的十六进制
    所以,我们建议,所有子类重写该方法。
   表示该对象的数据:
   [类名 成员变量1=数据值1,成员变量2=数据值2,...]

  5.3 equals():
默认情况下,比较的是地址值。没有意义。
所以,建议子类重写该方法。
至于如何重写,你就不要问了,自动生成即可。
这个生成的方法作用是比较对象的成员变量值是否相同。
    5.4 面试题:
==和equals()的区别?
A:==的作用
a:基本类型 数据值
b:引用类型 地址值
B:equals()
只能比较引用类型。默认比较地址值。
如果重写后,是按照重写后的规则进行的。

6.Scanner 类
  6.1
  Scanner:帮助我们从键盘获取数据。
  构造方法:
  Scanner(InputStream source)
 
  Scanner sc = new Scanner(System.in);
  
  System.in in是System类下面的一个静态的成员变量。
  现在我们并不知道in这个成员变量的数据类型。
请看一下伪代码:
  Scanner {
  public Scanner(InputStream in){}
  }
  
  System {
  public static final InputStream in;
  }
  InputStream System.in
  
  成员方法:
  int nextInt():获取int类型的数据
  String nextLine():获取String类型的数据
  
  InputMismatchException:输入的数据和最终的结果类型不匹配。
  建议:要什么类型,你就输入什么类型。
  
  5.2
  当为同一个Scanner对象,数据的输入顺序问题:
  String,String
  String,int
  int,int
  int,String
  
  出现的问题:
  先int再String就出现了问题。
  
  解决:
  A:我把所有的数据都按照String来拿。
  String s1
  String s2
  String s3
  将来你要什么,我就把String的数据转换为什么类型。
  B:重新创建一个新的对象。

public class ScannerDemo {
	public static void main(String[] args) {
		//String,String
/*		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个字符串");
		String str1 = sc.nextLine();
		System.out.println("请输入第二个字符串");
		String str2 = sc.nextLine();
		System.out.println(str1);
		System.out.println(str2);*/
		
		System.out.println("------------------");
		//String,int
/*		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个字符串");
		String str1 = sc.nextLine();
		System.out.println("请输入第二个数字");
		int str2 = sc.nextInt();
		System.out.println(str1);
		System.out.println(str2);*/
		System.out.println("---------------------------");
		
		//int,int
/*		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int str1 = sc.nextInt();
		System.out.println("请输入第二个数字");
		int str2 = sc.nextInt();
		System.out.println(str1);
		System.out.println(str2);*/
		
		System.out.println("--------------------");
		// int,String
/*		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int str1 = sc.nextInt();
		System.out.println("请输入第二个字符串");
		String str2 = sc.nextLine();
		System.out.println(str1);
		System.out.println(str2);*/
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int str1 = sc.nextInt();
		Scanner sc2 = new Scanner(System.in);
		System.out.println("请输入第二个字符串");
		String str2 = sc2.nextLine();
		System.out.println(str1);
		System.out.println(str2);

	}

}

7. Random类
  Random:用于产生随机数的类。和种子相关(种子其实可以把它看成一个产生随机数的定义的规则)。
  
  构造方法:
  Random():没有指定种子,采用的是默认种子。
  Random(long seed):可以指定种子。种子相同,产生的随机数就相同。
  成员方法:
  public int nextInt():返回int范围内的数据
  public int nextInt(int n):返回[0,n)之间的数据
  得到1-100之间的随机数:
  new Random().nextInt(100) + 1

import java.util.Random;

/**
 *   成员方法:
  		public int nextInt():返回int范围内的数据
  		public int nextInt(int n):返回[0,n)之间的数据
 *
 */
public class RandomDemo {
	public static void main(String[] args) {
		//产生一个0-50之间的随机数数据
		Random random = new Random();
		System.out.println(random.nextInt(50));
		
		System.out.println("---------------");
		/**
		 *   得到1-100之间的随机数:
  			 new Random().nextInt(100) + 1
		 */
		System.out.println(new Random().nextInt(100)+1);
	}

}
8. System类:
  System 类包含一些有用的类字段和方法。它不能被实例化。 
  
  成员方法:
  public static void exit(int status):终止当前正在运行的 Java 虚拟机。根据惯例,非 0 的状态码表示异常终止。 
  public static long currentTimeMillis():获取当前时间的毫秒值。
  public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):复制数组
  参数一:要复制的源数组
  参数二:从源数组那个索引开始复制
  参数三:需要复制到哪个数组中
  参数四:从哪个索引开始进行覆盖
  参数五:需要覆盖几个元素
public class SystemDemo {
	public static void main(String[] args) {
		// public static void exit(int status):
		//终止当前正在运行的 Java 虚拟机。根据惯例,非 0 的状态码表示异常终止。 
		//System.out.println("hello");
		//终止掉jvm虚拟机
		//System.exit(100);//只要是非0的状态码都表示异常终止
		//System.exit(0);//正常终止jvm虚拟机
		//System.out.println("world");
		
		System.out.println("----------------");
		// public static long currentTimeMillis():获取当前时间的毫秒值。
		//输出当前时间的毫秒之值
		//long currentTimeMillis = System.currentTimeMillis();
		//System.out.println(currentTimeMillis);
		
		//需求:求出打印1-10000之间的所有数字所需要的时间
		/**
		 * 1.获取执行前的的毫秒值
		 * 2.执行for循环
		 * 3.执行完毕获取当前时间的毫秒值
		 * 4.做减法
		 */
/*		long startTime = System.currentTimeMillis();
		
		//for循环执行1-10000之间的打印
		for (int i = 0; i < 10000; i++) {
			System.out.println(i);
		}
		
		long endTime = System.currentTimeMillis();
		
		System.out.println("执行时间是:"+(endTime-startTime));*/
		
		System.out.println("-----------------");
	/**
	 * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):复制数组
		  参数一:要复制的源数组
		  参数二:从源数组那个索引开始复制
		  参数三:需要复制到哪个数组中
		  参数四:从哪个索引开始进行覆盖
		  参数五:需要覆盖几个元素
	 */
		int[] arr = {1,2,3,4,5};
		int[] arr2 = {6,7,8,9,10};
		//需求:将arr2中的元素8,9使用arr数组中的3,4,覆盖
		System.arraycopy(arr, 2, arr2, 2, 2);
		//打印这个数组
		System.out.println(Arrays.toString(arr2));
	}

}
9.Date类
  Date:类 Date 表示特定的瞬间,精确到毫秒。 
  
  构造方法:
  Date():默认获取的是当前的日期时间
  Date(long date):把当前日期按照指定的毫秒值进行设定
  
  成员方法:
  public long getTime():获取日期对象的毫秒值
  public void setTime(long time):设置日期对象的毫秒值
import java.util.Date;

public class DateDemo {
	public static void main(String[] args) {
		//Date():默认获取的是当前的日期时间
		Date d = new Date();
		System.out.println(d);
		
		//public long getTime():获取日期对象的毫秒值
		System.out.println(System.currentTimeMillis());
		System.out.println(new Date().getTime());
		
		//Date(long date):把当前日期按照指定的毫秒值进行设定
		Date d2 = new Date(1492847203378L);
		System.out.println(d2);
		
		//public void setTime(long time):设置日期对象的毫秒值
		Date d3 = new Date();
		d3.setTime(1492847203378L);
		System.out.println(d3);
	}

}
10..DateFormat(格式化和解析日期对象)
10.1
  格式化:
  Date -- String
  2015年9月27日 15:14:23
  
  String format(Date d)
  
  解析:
  String -- Date
  "2015-12-12"
  
  Date  parse(String s)
 
 
 构造:
 SimpleDateFormat()用默认的模式格式化日期对象
 SimpleDateFormat(String pattern):用给定的模式格式化日期对象
 例如:
 yyyy年MM月dd日 HH:mm:ss
 yyyy-MM-dd HH:mm:ss
 
 成员方法:
 public final String format(Date date)将一个 Date 格式化为日期/时间字符串
 public Date parse(String source)throws ParseException从给定字符串的开始解析文本,以生成一个日期对象

10.2
 案例:
 键盘录入出生日期,算一下你来到这个世界多少天?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class DateFormatDemo {
	public static void main(String[] args) throws ParseException {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的出生日期");
		String brith = sc.nextLine();		
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		String str = sdf.format(d);
		System.out.println((sdf.parse(str).getTime()-sdf.parse(brith).getTime())/86400000);
	}

}
11.Calendar类
 11.1
  Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法
  
  Calendar(日历类) -- 获取年,获取月,获取日,获取时,获取分,获取秒。
  public int get(int field):返回给定日历字段的值
  
 11.2
  public void add(int field,int amount):根据amount修改field的值
  public void set(int year,int month,int date):设置当前日历的年月日
 
 11.3
 键盘录入年份,获取任意一年的二月有多少天 

import java.util.Calendar;
import java.util.Scanner;

// 键盘录入年份,获取任意一年的二月有多少天
public class CalendarDemo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份");
		int year = sc.nextInt();
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);
		c.add(Calendar.DATE, -1);
		System.out.println(c.get(Calendar.DATE));
		
	}

}



        正则表达式:由一组通用的特殊字符所组成的一套字符串内容验证规则,String通过matchs()方法来使用正则表达式验证字符串内容是否合要求.

              语法-边界匹配器:

              ^:行的开头,代表一个正则表达式的开始.

             $:行的结尾,代表一个正则表达式的结束.

             \b:标识某一个单词的开头或结尾.

        字符:

            [abc]:a或b或c的任意一个.

            [^abc]:除a、b、c以外的任意字符.

            [a-zA-Z]:所有字母(大小都包括).

            [a-d[m-p]]:a到d或m到p([m-p]将该内容作为整体)

             [a-z&&[def]]:a-z和def两个表达式都满足.

             [a-z&&[^bc]]、[a-z&&[^m-p]]

             [0-9]

        预定义字符:

             .:代表任意字符.

             \d:字符内容只能是[0-9]的数字.

             \s:空白字符.

             \w:所有字符大小写、下划线、数字

        反向字符:\D、\S、\W

        数量词:?:一次或一次也没有.

                         *:零次或多次.

                         +:一次或多次.

                         {n}:n代表一定要出现的次数

X{n,} X,至少 n 次   

                         {n,m}:n<=出现次数<=m.

        拓展:

        零宽断言\捕获-是使用正则表达式来获取字符串中对应内容的所在位置.(不能结合String的matchs方法),而应该结合String的replaceAll、replaceFirst方法使用,用来找到替换需要替换的内容)。语法:

        (?=exp):若字符串中有内容的结尾与exp匹配,则满足该断言.

        (?<=exp):若字符串中的内容的开头与exp匹配,则满足该断言.

        (?!=exp):若字符中的内容的结尾与exp不匹配,则满足该断言.

        (?

(2)StringBuffer:对于内容变动较大的字符串内容处理能力较好(线程安全)

          常用方法:append()、delete()、insert()                  

          与String的区别:String类,在有新内容追加时,是结合原有字符串内容创建新的字符串对象(性能较低)

(3)StringBuilder:对于内容变动较大的的字符串内容处理能力较好(线程不安全 JDK1.5)

          常用方法:append()、delete()、insert()

          注意:StringBuffer和StringBuilder为可变字符串类型:其字符内容可以灵活变动(追加、删除、插入)

 

(4)   其他程序的调用类:

        Runtime: 

        作用:获取java虚拟机的运行信息(可使用的CPU数量、所分配的内存大小、空闲内存).

        特点:一个虚拟机环境内有且仅有一个Runtime对象.

        方法:

                 static getRuntime():获取虚拟机对应的运行时信息.

                 static exec(String):启动子进程.                         

        Process:用于描述被JVM启动的一个子进程信息,可以通过Process让java代码与子进程通信.

你可能感兴趣的:(修炼之路)