常用类

常用类

1、包装类  √
2、String类 ★
3、StringBuffer和StringBuilder类  ★
4、Math类
5、System类
6、Arrays类
7、BigInteger类和BigDecimal类
8、Date日期类、Calendar日历类以及新的日期

包装类

理解

回顾

数据类型
    基本数据类型
    引用数据类型
        数组
        用class定义的
        用interface定义的
    **基本数据类型没有属性和方法**

包装类需求

① 获取int类型的最大值
② 将某个整数转换成十六进制形式

概念
为八大基本数据类型对应的提供了引用数据类型,则这些引用数据类型称为包装类

// i 与 i2是一样的
int i=10;
Integer i2=new Integer(i);

分类 ★

引用类型命名要求首字母大写,前六个为数值类,其父类为Number
byte————————————Byte
short———————————Short
int—————————————Integer
long————————————Long
float—————————— Float
double——————————Double
char————————————Character
boolean—————————Boolean

基本类型和包装类型之间的转换(针对八大包装类型) ★

jdk5.0之前:

手动装箱(int 转 Integer):
    方式一:Integer i = new Intege r(10);
    方式二:Integer i2 = Integer.valueOf(10);
手动拆箱(Integer 转 int):
    int j = i.intValue();

jdk5.0之后:

自动装箱:
Integer i = 10;
自动拆箱:
int j = i;

包装类型和String类型之间的转换

包装类型——>String类型

Integer i = 10;
//方式1:
String s1= i.toString();
//方式2:
String s2 = String.valueOf(i);
//方式3:
String s3 = i+"";
System.out.println(s3);

String——>包装类

//方式1:
Integer j = new Integer(s1);
//方式2:
Integer j2 = Integer.valueOf(s2);

基本类型和String类型之间的转换

基本类型——>String类型

int i = 10;
//方式1:
String s=i+"";
//方式2:
String s2 = String.valueOf(i);

String——>基本类型(除了char类型)

int j = Integer.parseInt(s);
char c = s.charAt(0);

总结包装类中涉及到的API

通用方法

valueOf:将String类型或基本类型转换成对应的包装类型
parseXX:将String类型转换成对应的基本类型
xxValue:将包装类型转换成对应的基本类型

Character类的特有方法:
toUpperCase:转换为大写
toLowerCase:…..小写
isUpperCase:判断某个字符是否为大写
isLowerCase:……………小写
isDigit:判断某个字符是否为数字
isLetter:判断某个字符是否为字母
isWhiteSpace:判断某个字符是否为空格

例1

public class TestInteger {
    public static void main(String[] args) {
        Integer m = 1;//自动装箱,实则调用Integer类的valueOf(方法中-127 - 128之间的数是地址相等的,其他的则是new)
        Integer n = 1;
        System.out.println(m == n);
//        只要有new,地址肯定不同
        Integer x = 128;//new Integer(128);
        Integer y = 128;//new Integer(128)
        System.out.println(x == y);
    }
}

例2

Integer i1 = 127int i2 = 127;
System.out.println(i1 == i2);  //true(双等里面有一个是int,则按int值是否相等来判断)

String类

理解

String类用于保存一组字符串序列的(”john”、”” 都相当于字符串常量对象)

创建对象

方式1:直接赋值

String s  = "hello";

方式2:通过调用构造器

String s = new String("hello");  //其中hello为任意字符串

两种创建对象方式的区别

方式一:先去常量池查看是否有“hello”字符序列,如果没有,则创建,如果有直接引用该地址(s指向的是常量池的对象)

方式二:需要在堆中创建对象,该对象维护了一个value属性,value指向常量池的“hello”,如果常量池中没有“hello”,则创建,再指向;如果已经有了,则直接用value指向(s指向的是堆中的对象)

特性

String类保存的是字符串常量,里面一旦赋值,则值不能更改,只能更改地址

常见方法

length 获取字符串字符个数

charAt 获取指定索引处的字符(0 - length-1)

toUpperCase 转大写

toLowerCase 转小写

indexOf 获取字符或字符串第一次出现的索引(0 - length-1),如果找不到返回-1

lastIndexOf 获取字符或字符串最后一次出现的索引,如果找不到返回-1

startsWith 判断是否以xx开头

endsWith 判断是否以XX结尾

regionMatches 判断是否某范围内的子串一致
    regionMatches(toffset, other, ooffset, len)
    toffset:源字符串起始位置
    other:另一个字符串
    ooffset:目标字符串起始位置
    len:目标字符串中要比较字符串长度

contains 判断子串是否存在,返回true|false

compareTo 比较两个字符串大小("a".compareTo("b")  //-1)

equals/equalsIgnoreCase 判断字符串内容是否相等(是否忽略大小写)

substring 截取指定索引之后(包含指定索引)的子串
    "abcdefg".substring(4) //efg
    "abcdefg".substring(0,3) //abc

replace/replaceAll 替换
    s.replace(oldChar,newChar)

trim 去前后空格

split 根据指定字符拆分

concat 拼接字符串

toCharArray 转换成字符数组

StringBuffer类(StringBuilder与此类似,只不过加了个同步(synchronized关键字))

理解

StringBuffer类相当于String类增强版,也是用于保存字符串的。也可以实现对字符串的更新、处理操作

String类和StringBuffer的对比

相同点:都用于保存字符串,都可以对字符串进行一些增删或其他处理的操作

不同点:
String类用于保存字符串常量
StringBuffer类用于保存字符串变量

StringBuffer类创建对象

只能通过调用构造器创建对象!

new StringBuffer(); 构造一个初始容量为16的char数组
new StringBuffer(string);构造一个初始容量为string.length+16的数组,并初始化值为string
new StringBuffer(capacity);构造一个初始容量为capacity的char数组

常见方法

append 在后面增加字符(可以为任意类型)

delete 删除某区间字符
    replace(start,end)
    start:开始索引
    end:结束索引+1

replace 修改确定区间字符
    replace(start,end,str)
    start:开始索引
    end:结束索引+1
    str:替换字符串

indexOf 查找某字符在字符串中位置

insert 插入字符
    insert(index,str)
    index:插入位置索引
    str:插入字符串

reverse 反转字符

length 字符串中实际字符个数

StringBuffer类和String类之间的转换

StringBuffer——>String

    StringBuffer buffer = new StringBuffer("john");

    //方式一:
    String s1 = buffer.toString();

    //方式二:
    String s2 = new String(buffer);

String——>StringBuffer

    String s = "鸠摩智";

    //方式一:
    StringBuffer b1 = new StringBuffer(s);

    //方式二:
    StringBuffer b2 = new StringBuffer();
    b2.append(s);

StringBuffer和StringBuilder的对比

共同点 版本 线程安全(同步) 效率
StringBuffer 保存可变字符串 安全 较低
StringBuilder 保存可变字符串 不安全 较高

效率:StringBuilder>StringBuffer>String

Math类

sqrt 求开方

pow 求幂
    pow(a,b) a的b次方

ceil 向上取整

floor 向下取整

round 四舍五入,返回整型(接用floor实现)

abs 绝对值

random 随机数(0-1之间小数)

max 最大值

min 最小值

Arrays

操作数组的各种方法

常见方法:

sort(T[]) 对数组的元素进行自然排序,要求元素必须实现了Comparable

sort(T[],Comparator) 对数组的元素进行定制排序,元素本身可以不实现Comparable(自己重写)
    sort(a,new comparator(){
        //重写方法
        public int compare(Object o1,Object o2){
            //用于比较的重写的方法
        }
    })

binarySearch(T[],key) 对数组通过二分搜索法进行查找,如果key找到了,返回索引(排好序之后的),否则返回负数。(**要求:要查找的数组必须提前排好序!**)

copyOf(T[],length) 复制数组的元素(底层实现为arrayCopy)
    T[]:要复制的数组
    length:新数组长度(若长,则用null补齐,若短则截取)

equals(T1[],T3[]) 判断两个数组的内容是否相等(考虑顺序)

fill(T[],key) 填充数组的各元素值为key

toString() 将数组各元素进行拼接,返回String

System类

常见方法

arrayCopy 复制数组元素,一般使用Arrays.copyOf代替
    System.arraycopy(src, index1, dest, index2, length)
        src:要复制数组
        index1:要复制数组开始索引
        dest:目标数组
        index:目标数组开始索引
        length:复制长度

exit 退出程序

currentTimeMillens 获取当前时间距离1970-1-1的毫秒数。

gc 运行垃圾回收器

BigDecimal和BigInteger类

BigInteger 用于保存数值范围更大的整数

BigDecimal 用于保存精度更高的浮点型

常见方法

add 加法
substract减法
multiply乘法
divide除法,注意:可以添加参数2设置四舍五入模式

日期类

第一代日期

java.util.Date类 (获取日期)

//创建Date对象

//方式一:调用无参构造器(获取系统当前时间)
Date d1 = new Date();
System.out.println(d1);

//方式二:调用有参构造器(获取距离基准时间(1970.01.01.00.00)指定毫秒数的日期对象)  不建议使用!
Date d2 = new Date(92345678);
System.out.println(d2);

java.text.SimpleDateFormat类 (格式化日期)

例1

public void testDateFormat1() throws ParseException{
    //创建日期对象
    Date d = new Date();
    //根据默认格式创建SimpleDateFormat对象
    SimpleDateFormat sdf = new SimpleDateFormat();

    //---------------------方法----------------

    //格式日期:Date————>String 

    String format = sdf.format(d);
    System.out.println(format);  // 20-3-31 下午12:30

    //解析日期:String————>Date

    String  s = "2020-03-31 下午3:22";  //因为这里面格式可能不对,所以会加一个异常
    Date parse = sdf.parse(s);
    System.out.println(parse);  // Tue Mar 31 15:22:00 CST 2020
}

例2

public void testDateFormat2() throws ParseException{
    //创建日期对象:Fri Mar 30 15:16:41 CST 2018
    Date d = new Date();
    //根据指定格式创建SimpleDateFormat对象
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日hh小时mm分钟ss秒");  //格式可进行更改(星期、上午下午都可以加)

    //---------------------方法----------------

    //格式日期:Date————>String 
    String format = sdf.format(d);
    System.out.println(format);  //2020年03月31日12小时42分钟20秒

    //解析日期:String————>Date
    String  s = "2008年12月30日 01小时26分钟36秒";
    Date parse = sdf.parse(s);
    System.out.println(parse);  //Tue Dec 30 01:26:36 CST 2008
}

第二代日期

java.util.Calendar类 为特定瞬间与指定年 月 日等日历字段之间的转换提供了一些方法

//1.获取Calendar对象
Calendar c = Calendar.getInstance();
System.out.println(c);

//2.通过调用方法获取各个日历字段
System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+c.get(Calendar.MONTH)+1);
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:"+c.get(Calendar.HOUR));
System.out.println("分钟:"+c.get(Calendar.MINUTE));
System.out.println("秒:"+c.get(Calendar.SECOND));
System.out.println("星期:"+c.get(Calendar.DAY_OF_WEEK)+1);

注意结果,月会少1,星期是多1

第三代日期(jdk8新特性)

LocalDate|LocalTime|LocalDateTime类:类似于Calendar

Instant:类似于Date

DateTimeFormatter:类似于SimpleDateFormat

例1

public void test1() {
        //1.获取LocalDateTime对象
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        //2.获取各个日历字段
        System.out.println(now.getYear());
        System.out.println(now.getMonthValue());  //数字
        System.out.println(now.getMonth());  //英语
        System.out.println(now.getDayOfMonth());
        System.out.println(now.getHour());
        System.out.println(now.getMinute());
        System.out.println(now.getSecond());
        System.out.println(now.getDayOfWeek());
    }

例2

public void test2() {
    LocalDateTime now  = LocalDateTime.now();

    //1.根据指定的格式创建DateTimeFormatter对象
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");  //H24小时制

    //2.--------------调用方法-----------------------

    //格式日期:Date——>String
    String format = dtf.format(now);
    System.out.println(format);

    //解析日期:String——>Date
    LocalDateTime parse = LocalDateTime.parse("2020年03月31日 16小时02分钟06秒",dtf);
    System.out.println(parse);
}

例3

public void testInstant() {
    //1.获取Instant对象
    Instant instant = Instant.now();

    //2.Instant和Date之间的转换

    //①Instant——>Date
    Date date = Date.from(instant);

    //②Date——>Instant
    Instant instant2 = date.toInstant();
    System.out.println(instant2);
}

   转载规则


《常用类》 文超 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录