Java中的常用类
String类和StringBuffer类
string类:在Java中,String类是final类型的,所以定义的String字符串是一个常量,一旦被创建就不能在被修改。若要对一个字符串进行修改,则必须在重新定义一个;
StringBuffer类:为了方便对字符串进行修改,jdk中提供了该类,也叫做,字符串缓冲区。StringBuffer类似于一个字符容器,可以对其进行操作,可以改变内容和长度;
用String定义的字符串都会存在于字符串常量池中,一旦被定义,就不能被修改;为了方便对字符串就行修改,有了StringBuffer类;
两类的区别:
- String不可变,StringBuffer可变;
- String类重写浏览equal()方法,而StringBuffer类没有重写;
- Sting对象可以用 + 进行拼接,StringBuffer不能‘;
拓展:StringBuilder类和StringBuffer类似,其所拥有的方法也基本相同,最大的不同是StringBuffer是线程安全的;
Math类
该类的构造方法为private的,所以无法创建Math对象,类中的所有方法都是静态的,还包括两个静态常量 PI 和 E ,( 表示 Π 和 e);
abs( ):求绝对值 sin();正弦 cos();余弦; tan();正切 sqrt();平方根 cbrt();立方根 pow(2,3); 乘方 2 的 3 次方;
Random类
有两个构造方法:
Random(){}//无参构造;
Random(long seeed){}//有参构造 通过有参构造创建的对象,若 seed相同,会生成相同的随机数;
Random 方法;
nextBoolean() 随机生成 boolean 类型的随机数; nextDouble(),nextFloat(),nextInt(),nextLong();
nextInt(int n ) 随机生成 【0,n】 之间 int 类型的随机数;
包装类
在Java中,有很多类中的方法都要接收引用类型的对象,此时基本类型的数据就无法传入,为了解决这个问题,JDK中提供了包装类,每个基本类型的值可以包装成引用数据类型;
除了 int 类型的 包装类为 Integer , char类型的 包装类 为 Character 外 ,其余 六种基本数据类型的 包装类名 与 基本数据类型一样(首字母大写)
基本数据类型和基本数据类型包装类之间可以进行自动转换,称为自动装箱和自动拆箱;
自动装箱:将基本数据类型的变量赋值给对应的基本数据包装类变量;
自动拆箱:将基本数据包装类变量赋值给对应的基本数据类型的变量;
其他方法进行 基本数据类型,基本数据包装类,字符串 之间的转换:
- 通过 String 中的 valueOf方法 可以将 八种基本数据类型 转化为 对用的字符串类型; 基本数据类型 -> 字符串类型;
- 通过各类中的 valueOf方法,可以将 基本数据类型 转化为 包装类, 也可将 字符串类型 转化为 包装类;(Character 除外, 它不能将String类型 转化为 Character包装类);
- 通过构造方法;(Character 除外, 它不能将String类型 转化为 Character包装类);
- 通过 8中包装类的静态方法 parseXxx() 可以将变量内容匹配的字符串 转化为 定义的基本数据类型;
除了 Character 外,其余的包装类都有 valueOf(String s) 和 parseXxx(String s) 方法;
时间和日期类
Date类
两种构造方法:
- 无参构造 Date(), 创建当前日期时间 的 Date对象;
- 有参构造 Date(long date); 创建 指定的 日期时间Date对象,参数date表示 时间戳(1970年1月1号 毫秒数), System.currentTimeMillis 获得当前系统时间毫秒数;
Date类的功能已经被Calendar替代,由于没有考虑国际化的问题;
Calendar类
Calenadar是一个抽象类,不能实例化, 可以通过 调用 getInstance()静态方法得到 Calendar 对象;
Calendar calendar = Calendar.getInstance(); //得到 Calendar 对象;
该抽象类中 有一些 静态属性,表示当前的时间 YEAR,MONTH,DATE,HOUR,MINUTE,SECOND(表示年月日时分秒) 注意:月份的值为 0-11;
Calendar中的主要方法;
get 方法
int get (int field) ;// 返回指定日历的字段值;
int month = calendar.get(Calendar.MONTH) + 1; // 与 Calendar.YEAR 搭配; 得到当前月份值
set 方法
void set(int filed , int value); //设置指定日历字段值
calendar.set(calendar.MONTH,8); //设置 calendar的MONTH 为 8;
void set(int year , int month , int date); //设置年月日
calendar.set(2021,5,10);
void set(int year,, int month , int date,int hour ,int minute , int second)//设置年月日时分秒
add 方法
void add (int filed , int amout)// 指定的日历字段 添加amount 时间量;
calendar.add(Calendar.MONTH,4); // 月份 加 4 ;
JDK8又增加了一个java.time包,此包下有更多的时间日期操作类。