java常用类
常用类
1.包装类
基本数据类型 | 对应的包装类 | 继承关系 |
---|---|---|
byte | Byte | --》Number--》Object |
short | Short | --》Number--》Object |
int | Integer | --》Number--》Object |
long | Long | --》Number--》Object |
float | Float | --》Number--》Object |
double | Double | --》Number--》Object |
char | Character | Object |
boolean | Boolean | Object |
Integer
-
被final修饰,不能被继承
-
属性:MAX_VALUE表示int类型能够表示的最大值
MIN_VALUE表示int类型能够表示的最小值
-
没有无参构造器,可以传入int或String类型的数据
Integer i=new Integer(10);
Integer j=new Integer("15");
Integer l=new Integer("asd");//编译通过,运行异常!!!转换不了
数字格式化异常:java.lang.NumberFormatException
-
自动装箱和自动拆箱(JDK1.5之后)
Integer i=128;//自动装箱 Integer k=128;//自动装箱 int j=i;//自动拆箱 System.out.println(i+1);//自动拆箱后运算 i==k//false ==不会触发自动拆箱,比较的是两个对象的地址 Integer m=127;//自动装箱 Integer n=127;//自动装箱 m==n;//true!!!!!!!!! m和n指向同一个对象
Java中为提高效率,将【-128,127】之间的所有包装对象提前建好,放入方法区的整数型常量池中,只要使用这个区间的数据,不需要再new,直接在常量池中取(Integer类加载时会初始化整数型常量池)
-
comparaTo方法
相等返回0,i<j返回-1,i>j返回1
Integer i=new Integer(10); Integer j=new Integer("15"); i.comparaTo(j);//相等返回0,i<j返回-1,i>j返回1
-
equals方法
i.equals(j);//相等返回true,否则返回
-
intValue();
将Integer转换成int类型
Integer i=new Integer(10); int j=i.intValue();
-
parseInt(String s); 静态方法
将字符串数字转换成int类型
int i=Integer.parseInt("123");
-
toBinaryString(int i); 静态方法
将10进制转换成二进制字符串
String s=Integer.toBinaryString(7);//s="111"
-
valueOf(int i)/(String s); 静态方法
将int类型、String类型转换成Integer

2.日期相关
### **java.util.Date**
-
date对象
Date nowTime =new Date();//获取系统当前时间,精确到毫秒
-
after(Date d); before(Date d); compareTo(Date d);
比较时间先后
nowTime1.after(nowTime2);//1时刻在2时刻后面返回true nowTime1.before(nowTime2);//时刻在2时刻前面返回true nowTime1.comparaTo(nowTime2);//1时刻在2时刻后面返回1,相等返回0,否则返回-1
java.util.Calendar
-
Calendar对象
Calendar c=Calendar.getInstance(); System.out.println(c.getTime());//打印时间信息
-
获取毫秒数
自1970年以来到当前系统时间的总毫秒数
System.out.println(c.getTimeInMillis());//打印毫秒数
-
获取时间信息
int year=c.get(Calendar.YEAR); int month=c.get(Calendar.MONTH);//月份返回0~11,比正常月份少一!! int day=c.get(Calendar.DAY_OF_MONTH); int hour=c.get(Calendar.HOUR_OF_DAY); int minute=c.get(Calendar.MINUTE); int second=c.get(Calendar.SECOND);
-
修改时间
Calendar c2=Calendar.getInstance(); c2.set(Calendar.DAY_OF_MONTH,21);//将c2的日期改为21号
-
add方法修改时间
Calendar c3=Calendar.getInstance(); c3.add(Calendar.HOUR,-2);//小时减2
-
获取当前时间月份的最大天数
int max=c.getActuaMaximum(Calendar.HOUR_OF_DAY);//28,29,30,31
SimpleDateFormat
yyyy | 年份如2020 |
---|---|
MM | 月份如9 |
dd | 天 |
HH | 时 |
mm | 分 |
ss | 秒 |
SSS | 毫秒 |
System.out.println("========================");
SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");//创建SimpleDateForma对象
Date d=new Date();//创建Date对象
String str=s.format(d);//格式化Date(日期---->字符串)System.out.println(str);//解析(字符串--->日期)
Date d2=s.parse(str);//解析时字符串必须与SimpleDateForma对象的格式一致
System.out.println("========================");
3.System类
-
数组复制
arraycopy(目标数组,拷贝起始下标(包括),结果数组,复制起始下标(包括),长度);
int[] arr={20,16,16,200,31,91,52}; int[] dest= new int[7]; System.arraycopy(arr,4,dest,4,3);//dest:0 0 0 0 31 91 52
-
获取系统时间毫秒数
System.out.println(System.currentTimeMillis());
-
垃圾回收
垃圾回收器不会回收常量池中的内存
System.gc();//让垃圾回收器回收垃圾
-
推出程序
System.exit(0);
4.String类
1.字符串是常量,创建后不可改变
2.字符串字面值存储在字符串池中(方法区内存),可以重复使用
String s="hello";//字符串池中创建一个“对象”,s指向他 String s1="hello";//s和s1指向的地址相同 String s2=new String("你好");//在堆内存和字符串常量池中各有一个对象 //s2指向堆内存中的对象,堆内存中的对象指向常量池中的对象 String s3=new String("你好");//s2和s3指向的地址不同,分别指向堆内存中的两个对象 //堆内存的两个对象指向常量池中的同一个对象
-
length();
返回字符串的长度
-
charAt(int index);
返回某个位置的字符,index范围:0~(length-1)
若超过范围会出现字符串下标越界异常:java.lang.StringIndexOutOfBoundsException
-
contains(String str);
判断是否包含某个子字符串,返回boolean类型
-
toCharArray();
返回字符串对应的数组
-
indexOf(String s); lastIndexOf(String s)
返回子字符串首次/最后出现的位置 index范围:0~(length-1)
-
trim();
去掉字符串前后的空格,返回新的zfc
-
toUpperCase(); toLowerCase();
把小写转换成大写/大写转换成小写,返回新的字符串
-
endWith(String s); startWith(String s);
判断是否以字符串s结尾/开头,返回boolean类型
-
replace( oldstr , newstr );
用新的字符串替换旧的字符串,并返回新的字符串
-
split(String s);
对字符串进行拆分,返回字符串数组
String s="i ,am Chinese !"; String[] s1=s.split(" ");//以空格为标准拆分 String[] s2=s.split("[ ,]");//[]表示多种拆分标准,这里选择空格和“,” String[] s1=s.split("[ ,]+");//这里+使连续多个空格或“.”只表示一个拆分标准
-
equals(String s);
String s="hello"; Strings1="Hello"; System.out.println(s.equals(s1));//false System.out.println(s.equalsIngnoreCase(s1));//true,这里比较时忽略大小写
-
comparaTor(String s);
对两个字符串逐个字符比较,当有一个不相同时结束比较,返回ASCII差值,若一个字符串结束后仍未比出结果,返回字符串长度差值,完全相等返回0
-
应用
//在text前面加一个easyString s="this is a text"; String str=s.replace("text","easy text"); System.out.println(str);//将每个单词首字母大写 String news=""; String[] arr=s.split(" ");//拆成字符串数组 for (int i = 0; i < arr.length; i++) { char first=arr[i].charAt(0);//取出首字母 char Upperfirst=Character.toUpperCase(first);//找到对应大写 String newss = Upperfirst+arr[i].substring(1);//替换 news=news+newss+" ";//拼接成一个新字符串 } System.out.println(news);
可变长字符串
如果要进行大量的字符串拼接操作,为避免浪费常量池里的空间,提高效率,建议使用:
java.lang.StringBuffer和java.lang.StringBuilder
区别:StringBuffer中的方法都有synchronized关键字修饰,表示其在多线程环境下运行是安全的
-
append(String s); 追加
StringBuffer sb=new StringBuffer(); sb.append("java第一"); System.out.println(sb.toString());
-
insert(int offset,String s); 添加
offset不是index
StringBuffer sb=new StringBuffer(); sb.append("java第一"); System.out.println(sb.toString()); sb.insert(4,"永远"); System.out.println(sb.toString());//“java永远第一”
-
replace( int firstIndex ,int lastIndex , String s ); 替换
前闭后开,替换范围包括firstIndex,不包括lastIndex
-
delete(int firstIndex,int lastIndex); 删除
前闭后开,替换范围包括firstIndex,不包括lastIndex
sb.delete(0,sb.length());//清空
5.BigDecimal类
double的精度问题
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);//0.09999999999999998
BigDecimal
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
BigDecimal r1=bd1.subtract(bd2);//相减
System.out.println(r1);//0.1
传入的参数用字符串的形式!!!
-
subtract(); 减法
-
add(); 加发
-
multiply(); 乘法
-
divide(BigDecimal bd, int scal , RoundingMode mode ); 除法
执行除法运算时要抛出错误
scal: 指定精确到小数点后几位
mode:指定小数部分取舍模式,通常采用四舍五入,
取值:BigDecimal.ROUND_HALF_UP
6.Object类
超类、基类,所有类的直接或间接父类,位于继承树最顶层
Object类型可以储存任何对象,作为参数可接受任何对象,作为返回值可返回任何对象
-
getClass();
返回引用中存储的实际对象类型,通常用于判断两个引用实际存储对象是否一致
Object o1=new Student(); Person o2=new Person(); Class c1=01.getClass(); Class c2=02.getClass(); c1==c2;//false
-
hashCode();
返回该对象的哈希码值
哈希值是根据对象的地址或字符串或数字使用hash算法计算处的int类型数值
-
toString();
返回该对象的字符串表示
建议根据程序需求覆盖该方法
快捷键:alt+insert--->toString
-
equals(Object obj);
默认判断两个对象的地址是否相等
建议根据程序需求覆盖该方法
覆盖步骤
- 判断obj是否为空
- 判断是否是同一个引用
- 判断引用指向的实际对象类型是否一致
- 将obj强制类型转换
- 依次比较各个属性是否相同
快捷键:alt+insert--->equals
-
finalize();
当对象被判定为垃圾对象时,JVM自动调用此方法,用以标记此对象,进入回收队列
- 垃圾对象:没有有效引用指向此对象时,视为垃圾对象
- 垃圾回收:由GC销毁垃圾对象,释放储存空间
- 自动回收机制:JVM内存耗尽,一次性回收所有垃圾对象
- 手动回收机制:使用System.gc();通知JVM执行垃圾回收