常用API二
一、Object
成员方法:
1、toString(): 重写前,调用object类中的,打印的是全类名@16进制的地址值 。 重写后打印具体对象的值
2、equals():重写前比较的是地址值 重写后打印的是具体属性值
3、获取字节码对象3种方式(三个获取的值相等)
A:通过Object类中getClass()方法调用,Teacher t = new Teacher();t.getclass();
B:类名点调用 Teacher.class();
C:通过Class类的静态方法format()类获取 Class.forname("全类名");
例子:
package Apiss; public class Zi { public static void main(String[] args) throws ClassNotFoundException { //创建老师对象 Teacher t = new Teacher(); //用对象调用的方法获取字节码 Class cl = t.getClass(); //打印字节码 System.out.println(cl); //用Teacher类点的方法获取字节码 Class cl2 = Teacher.class; System.out.println(cl2); //用forName()的静态方法获取字节码 Class cl3 = Class.forName("字节码.Teacher"); System.out.println(cl3==cl2); System.out.println(cl==cl2); } } //创建Teacher类 class Teacher{ String name; int age; }
结果:
二、System
A:static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :
从src源数组的srcPos索引开始,复制length个元素
从destPost位置开始将这些元素放至到dest数组中
例子:
package Apiss; public class Arraycopyss { public static void main(String[] args) { //创建源数组 int[] arr1 = {1,2,3,4,5}; //创建目标数组 int[] arr2 = new int[5]; //将源数组元素复制到目标数组中 System.arraycopy(arr1, 0, arr2, 0, 5); //遍历数组 for(int i=0;i<arr2.length;i++){ System.out.print(arr2[i]+" "); } } }
结果:
B: System.exit(int i);//终止当前虚拟机
C: System.currentTimeMillis();获取当前系统毫秒时间
例子:
package Apiss; public class Systemss { public static void main(String[] args) { // 创建起始时间 long start = System.currentTimeMillis(); // 循环输出数 for (int i = 0; i < 1000; i++) { System.out.println(i); // 判断第100个数时 if (i == 100) { // 记录结束时间 long end = System.currentTimeMillis(); // 打印时间差 System.out.println(end - start); // 终止当前虚拟机 System.exit(0); } } } }
结果:
三、Date
1、构造方法
Date(); 返回的就是从1970-1-1 8:00:00到当前的时间毫秒值
Date(毫秒值); 返回的就是具体传入毫秒值日期对象
2、成员方法
setTime();
setTime();
例子:
package Apiss; import java.util.Date; public class Datess { public static void main(String[] args) { //创建日期对象 Date d = new Date(); //打印日期 System.out.println(d.toLocaleString()); //获取当前时间的毫秒值 System.out.println(d.getTime());//1510149157189 //设置时间毫秒值 , 据1970-1-1 8:00:00的毫秒值 d.setTime(1510149157189L); System.out.println(d.toLocaleString()); System.out.println("1970年至今"+1510149335204L/1000/60/60/24/365+"年"); } }
结果:
四、SimpleDateFormat
1、构造方法:SimpleDateFormat() :使用默认的模式进行对象的构建
SimpleDateFormat(String pattern) :使用的指定的模式进行对象的构建
例子:SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
2、成员方法:String format(Date d);将日期对象转换成一个字符串
Date parse(String s); 将字符串转成一个日期对象
例子:
package Apiss; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Formate { public static void main(String[] args) throws ParseException { //指定一个日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date date = new Date(); //格式化日期,将日期对象转化为一个字符串 String s = sdf.format(date); System.out.println(s); //将字符串解析为一个日期对象 Date d = sdf.parse("2017年11月08日 10:00:00"); System.out.println(d.toLocaleString()); } }
结果:
计算出生到现在的小时案例:
package Apiss; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class BirthDays { public static void main(String[] args) throws ParseException { //写入出生,现在的时间 String birthday = "2000-11-26"; String now = "2017-11-08"; //设置日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //将两个字符串转化成日期对象 Date d1 = sdf.parse(birthday); Date d2 = sdf.parse(now); //获取日期对应的毫秒时间 long l = d1.getTime(); long ll = d2.getTime(); //计算出生到现在的小时 System.out.println("出生到现在经过了"+(ll-l)/1000/60/60/24+"个小时"); } }
结果:
五、Calendar日历类
1、static Calendar getInstance();使用默认时区和语言环境获得一个日历
Calendar c = Calendar.getInstance();//返回当前时间
2、获取get();
3、修改set();
4、添加add();
例子:
package Apiss; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class GetTimes { public static void main(String[] args) throws ParseException { // 给一个时间字符串 String s = "2017-11-08"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 将字符创转成日期对象,获取从1970年1月1日至今的毫秒值 Date d = sdf.parse(s); // 创建日历对象 Calendar c = Calendar.getInstance(); // 将毫秒值设置到日历对象 c.setTime(d); // 获取年 int year = c.get(Calendar.YEAR); // 获取月(记录月的索引从0开始) int month = c.get(Calendar.MONTH) + 1; // 获取日 int day = c.get(Calendar.DAY_OF_MONTH); // 今天是一年中的第几天 int dayOfYear = c.get(Calendar.DAY_OF_YEAR); System.out.println(s + "是" + year + "年。" + month + "月。" + day + "日。是这一年中的第:" + dayOfYear + "天"); // 获取周 int week = c.get(Calendar.DAY_OF_WEEK); System.out.println(getWeek(week)); } private static String getWeek(int week) { String[] arr = { "", "周日", "周一", "周二", "周三", "周四", "周五", "周六" }; return arr[week]; } }
结果:
六、String
1、构造方法:
String(String s);将一个字符串构建成一个字符串对象
String(char[] arr);将一个字符数组构建成一个字符串对象
String(char[] arr,int index,int count);将一个字符数组截取出来构建成一个字符串对象
2、字符串创建对象赋值和直接赋值的区别
创建对象赋值记录的是堆内存的地址值
直接赋值记录的是方法区中的常量池的地址值
==号:
既可以比较基本数据类型,也可以比较引用数据类型
比较基本数据类型比较的是具体的值
比较引用数据类型比较的是地址值
3、判断功能
boolean equals(String s); 判断两个字符串是否相等,区分大小写
boolean equalsIgnoreCase(String s); 判断两个字符串是否相等,不区分大小写
boolean startsWith(String s); 判断一个字符串是否以传入的字符串为开头
boolean endsWith(String s); 判断一个字符串是否以传入的字符串为结尾
4、获取功能
int length(); 获取一个字符串的长度
char charAt(int index); 根据指定索引获取对应字符
int indexOf(String s); 获取传入的s这个字符串在当前字符串中第一次出现的索引位置
String substring(int index); 将指定索引开始的字符串进行截取。默认截取到字符串的末尾
String substring(int start,int end); 将开始索引到结束索引的部分截取出来。 包含头不包含尾
例子:
public static void main(String[] args) { //将一个字符串构建成一个字符串对象 String s = new String("Java"); System.out.println("字符串s:"+s); String s1 = new String("helloworld"); System.out.println("字符串s1:"+s1); char[] chs = {'j','a','v','a'}; //将一个字符数组构建成一个字符串对象 String s2 = new String(chs); System.out.println("字符串s2:"+s2); //将一个字符数组截取出来构建成一个字符串对象 String s3 = new String(chs,1,2); System.out.println("字符串s3:"+s3); //s3字符串的长度 System.out.println("s3字符串的长度:"+s3.length()); //获取索引为2的元素 System.out.println("s2索引为2的元素:"+s2.charAt(2)); //获取e第一次出现的索引 System.out.println("e第一次出现的索引:"+s1.indexOf("e")); //截取字符串 System.out.println("s1中从索引为2开始往后的元素是:"+s1.substring(2)); System.out.println("s1中索引从2到4的元素是:"+s1.substring(2, 4)); //字符串判断 System.out.println("s,s2相等?"+s.equals(s2)); System.out.println("s,s2忽略大小写是否相等:"+s.equalsIgnoreCase(s2)); //将字符串s全部转为小写再与s2字符串相比较 String snew = s.toLowerCase(); System.out.println("转小写后与s2是否相等:"+snew.equalsIgnoreCase(s2)); System.out.println("s1是以h开头的吗?"+s1.startsWith("h")); System.out.println("s1是以o结尾的吗?"+s1.endsWith("o")); }
结果:
5、转换功能
char[] toCharArray(); 将字符串转成字符数组
String toUpperCase(); 将字符串转成大写的
String toLowerCase(); 将字符串转成小写的
String toString(int[] a); 返回指定数组内容的字符串表示形式。
String toString(char[] a); 返回指定数组内容的字符串表示形式
例子:
public static void main(String[] args) { //创建数组 int[] arr = {1,2,3,4,5}; char[] ch = {'q','w','e','r'}; //将数组转换成字符串 String s = Arrays.toString(arr); String s1 = Arrays.toString(ch); System.out.println(s); System.out.println(ch); }
结果:
6、String类的其他方法
去除两端空白:String trim();
切割字符串:String[] split(String regex);
七、StringBuilder
1、StringBuilder和String的区别
String是不可变的字符序列
StringBuilder是可变的字符序列
2、构造方法
StringBuilder(); 创建一个StringBuilder对象
StringBuilder(String str); 根据传入的字符串构建一个StringBuilder对象
3、功能方法
int capacity(); 返回理论容量
int length(); 返回实际容量
StringBuilder append(Object obj); 向缓冲区中添加内容
StringBuilder reverse(); 将缓冲区的内容反转
4、StringBuilder和String相互转换
A:如何将String转成一个StringBuilder对象呢?
a:直接通过StringBuilder有参构造方法传入一个字符串进去,就会将字符串转成一个StringB对象
b:通过StringBuilder空参构造方法创建对象,调用append(字符串)添加一个字符串进去。就会将字符串转成一个StringBuilder对象
B:如何将StringBuilder对象转成一个String字符串呢?
a:通过StringBuilder类中的toString()方法,将StringBuilder对象转成一个String字符串
例子:
public static void main(String[] args) { //创建对象 StringBuilder sb = new StringBuilder(); StringBuilder sbb = new StringBuilder("hello"); //返回理论容量 System.out.println("sb理论容量:"+sb.capacity()); System.out.println("sbb理论容量:"+sbb.capacity()); // 返回实际容量 System.out.println("sb实际容量:"+sb.length()); System.out.println("sbb实际容量:"+sbb.length()); //添加元素 sb.append("he "); sb.append("is "); sb.append("a ").append("man"); System.out.println("sb是:"+sb); System.out.println("sbb是:"+sbb); //sbb反转后输出 System.out.println("sbb反转后是:"+sbb.reverse()); //StringBuilder转String String s = sb.toString(); System.out.println("sb变String类型后:"+s); }
结果:
八、补充的常用方法
boolean contains(String s); 判断当前字符串是否包含传入的字符串
int lastIndexOf(String s); 获取传入的字符串在当前字符串中最后一次出现的索引位置
byte[] getBytes(); 将字符串转成字节数组
String repleace(String old,String new); 用新的字符串替换老的字符串(替换所有)
String repleaceFirst(String old,String new); 将字符串中第一个老字符串用新字符串替换
int Integer.parseInt(String number); 将一个字符串类型的数字转成一个int类型的数字
例子:
public static void main(String[] args) { //将一个字符串类型的数字转成一个int类型的数字 String s = "1234"; int n =Integer.parseInt(s); System.out.println(n); }
结果: