java常用类(二)
Arrays类
针对数组进行操作的工具类
public static String toString(int[] a)
把数组转成字符串形式public static void sort(int[] arr)
对数组进行排序public static int binarySearch(int[] a, int key)
二分查找
Integer类
-
Integer.MAX_VALUE
int最大值 -
Integer.MIN_VALUE
int最小值 -
构造方法
public Integer(int value)
public Integer(String s)
-
int 类型与String类型的相互转化
int ----> String : String s= String.valueOf(number); String ----> int : int result = Integer.parseInt(s);
-
int类型与Integer类型的相互转化
int ----> Integer: Integer iii = Integer.valueOf(number); Integer ----> int: int num = iii.intValue();
-
十进制到其他进制与其他进制到十进制
public static String toString(int i, int redix)
十进制到其他进制public static int parseInt(String s, int redix)
其他进制到十进制 -
进制的范围:2~36进制。
0~9,a~z
-
jdk5的新特性:自动装箱与自动拆箱
Integer ii = 100; //ii不能为null ii += 200;//否则在这里会报错,空指针异常 System.out.println("ii:"+ii); //以上代码反编译后 Integer ii = Integer.valueOf(100); //自动装箱 ii = Integer.valueOf(ii.intValue() + 200); //先自动拆箱,再自动装箱 System.out.println((new StringBuilder("ii:").append(ii).toString()));
-
public static String toBinaryString(int i)
二进制public static String toOctalString(int i)
八进制public static String toHexString(int i)
十六进制 -
数据缓冲池
Integer ii = 127; Integer ii2 = 127; Integer i1 = 128; Integer i2 = 128; System.out.println(ii == ii2) //输出true(-128到127输出true) System.out.println(i1 == i2) //输出false
针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间
Character类
- 构造方法:Character(char value):只有这一种
- 成员方法:
public static boolean isUppserCase(char ch)
判断大写public static boolean isLowerCase(char ch)
判断小写public static isDigit(char ch)
判断数字public static char toUpperCase(char ch)
转化为大写public static char toLowerCase(char ch)
转化为小写public static boolean isLetter(char ch)
判断是否是字母
-
正则表达式:符合一定规则的字符串
public static boolean CheckQQ(String qq) { return qq.matches("[1-9][0-9]{4,14}"); }
-
判断功能:
public boolean matches(String regex)
-
分割功能:
public String[] split(String regex)
String s1 = "aa,bb,cc"; String strArray = s1.split(","); String s2 = "aa bb cc"; String[] str2Array = s2.split(" +"); String s3 = "aa.bb.cc"; String[] str3Array = s3.split("\\."); String s4 = "E:\\javase\\day14\\avi"; String[] str4Array = s4.split("\\\\");
-
替换功能:
public String replaceAll(String regex, String replacement)
例: String result = s.replaceAll("\\d+","*");
-
获取功能:Pattern和Matcher类的使用
获取下面这个字符串中有三个字符组成的单词
“da jia ting wo shuo,jin tian yao xia yu,bu shang wan zhi xi”;
String s= "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zhi xi”; String regex = “\\b\\w{3}\\b”; //规则 Pattern p = Pattern.compile(regex) ; //把规则编译成模式 Matcher m = p.matcher(s); //通过模式对象得到匹配器对象 while(m.find()) { //查找存不存在 System.out.println(m.group()); //获取刚才查找的数据 }
-
Math类
-
成员变量
public static final double PI
public static final double E
public static int abs(int a)
-
成员方法
public static int abs(int a)
绝对值public static double ceil(double a)
向上取整public static double ceil(double a)
向下取整public static int max(int a, int b)
最大值public static int min(int a, int b)
最小值public static double pow(double a, double b)
a的b次幂public static int round(float a)
四啥五入,参数也可以为doublepublic static double sqrt(double a)
正平方根
Random类
构造方法:
public Random()
没有给种子,是当前时间的毫秒值
public Randome(long seed)
给定种子(每次得到的随机数是相同的)
成员方法:
public int nextInt()
返回int范围内的随机数
public int nextInt(int n)
返回的是[0,n)范围内的随机数
System类:包含一些类的字段和方法,它不能被实例化
方法:
public static void gc()
Person p = new Person(“lqs”,18);
p = null;
System.gc();//执行它之前,系统会自动调用finalize()方法清除对象占用的资源,通过super.finalize()方式可以实现从上到下的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源,不要频繁的调用它(要执行大量对象释放,调用垃圾回收器较好)。
public static void exit(int status)
0正常退出,非0异常退出
publit static long currentTimeMillis()
返回以毫秒为单位的时间
public static long nanoTime()
返回以纳秒为单位的时间
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- @param scr 源对象
- @param srcPos源对象的位置
- @param dest 新对象
- @param destPos 新对象的位置
- @param length 需要复制的长度
BigInteger类
大数运算(在java.math.BigInteger类中)
构造方法
BigInteger(String val);
成员方法
public BigInteger add(BigInteger val);
加
public BigInteger substract(BigInteger val);
减
public BigInteger multiply(BigInteer val);
乘
public BigInteger divide(BigInteger val);
除
public BigInteger[] divideAndRemainder(BigInteger val);
返回商和余数的数组
BigInteger[] b = new BigInteger(“12234199341”).divideAndRemainder(new BigInteger(“39348342231”);
//则商为b[0], 余数为b[1];
BigDecimal类
提高精度,一般涉及金额计算用此类(float,double会损失精度),解决了0.09+0.01的问题(输出的是0.0999999999999999999)。
构造方法:
BigDecimal(String val);
成员方法:
public BigDecimal add(BigDecimal augend);
public BigDecimal subtract(BigDecimal subtrahend);
public BigDecimal multiply(BigDecimal divisor);
public BigDecimal divide(BigDecimal divisor);
public BigDecimal divide(BigDecimal div,int scale, int roundingMode);
/**
*** @param div 对象**
*** @param scale 精度**
*** @param roundingMode 舍取方式BigDecimal.ROUND_HALFUP;**
*/
Date类
构造方法:
Date()
: 根据当前默认毫秒值创建日期对象
Date(long date)
: 根据给定毫秒值创建日期对象
成员方法:
**public long getTime();
** //获取时间,已毫秒为单位
public void setTime(long time);
// 设置时间
DateFormat类
(抽象类) 子类为 : SimpleDateFormat()。日期格式化,字符串解析
年—y 月—M 日—d 时—H 分—m 秒—s 毫秒—S
public final String format(Date date); //将date 已指定格式返回到字符串中
SimpleDateFormat(String pattern) : 构造方法,已给定的模式解析
Date ---->String(格式化)
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”);
String s = sdf.format(d);//
System.out.println(s);
//将其封装(Date ----> String)
public static String dateToString(Date d,String format) {
return new SimpleDateFormat(format).format(d);
}
String----> Date
String str = “2008-08-08 12:12:12”;
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date d = sdf.parse(str);//异常处理
System.out.println(d);
将其封装(String ----> Date)
public static Date StringToDate(String s,String format) {
return new SimpleDateFormat(format).parse(s);
}
Calendar类
日历类(抽象类)用Calendar.getInstance();得到子类对象
public int get(int field)
//field(字段,YEAR, MONTH, DATE)
例:Canlendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH); //月份从0开始,实际得到的月份为月份+1。
public void add(int field,int amout)
//增量或者减量
例:c.add(Calendar.YEAR, -3); //三年前
public final void set(int yaer,int month, int date)
//设置年月日
public long getTimeMillis();
Date getTime();
题目:
//1.计算来到这个世界多少天?
用Date类和SimpleDateFormat类
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你的年月日,格式(yyyy-MM-dd):”);
String line = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
Date d = sdf.parse(line);//(需要异常处理)
long myTime = d.getTime();
long nowTime = System.currentTimeMillis();
long day = (nowTime – myTime)/1000/60/60/24;
System.out.println(“你来到世界:” + day + “天”);
用Calendar类
public static long getYouDay(int year,int month,int day) {
Calendar c = Calendar.getInstance();
c.set(yaer,month-1,day);
long start = c.getTimeMillis();
long end = System.currentTimeMillis();
return (end-start)/1000/60/60/24;
}
//2.获取任意一年2月的天数
public static int getDay(int year) {
Calendar c = Calendar.getInstance();
c.set(year,2,1); //3月1日
c.add(Calendar.DATE,-1); //3月1日的前一天是2月的最后一天
return c.get(Calendar.DATE);
}
//3.一个大的字符串包含几个小的字符串?
public static int getCount(String maxString,String minString) {
int count = 0;
int index;
while((index = maxString.indexOf(minString)) != -1) {
count++;
maxString = maxString.substring(index + minString.length());
}
return count;
}