JAVA 常用类

包装类
分类 Integer01.java
  1. 针对八种基本数据类型相应的引用类型一包装类

  1. 有了类的特点,就可以调用类中的方法。

包装类与基本数据类型的转换 WapperType.java
  1. jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型,反之,拆箱

  1. jdk5以后(含jdk5)的自动装箱和拆箱方式,

  1. 自动装箱底层调用的是valueOf方法,比如Integer.valueOf()

包装类与String相互转换

WrapperVSString.java

Integer和Character常用方法

练习

如果 i 在-128,127之中,从缓存数组去取,不会创建新对象,因此m == n 为true

答案:FFTFFTT总结:只要有基本数据类型,则判断值是否相等

String类
  1. String 对象用于保存字符串,也就是一组字符序列

  1. 字符串常量对象是用双引号括起的字符序列。例如:、"你好"、"12.97"、"boy"等

  1. 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节

  1. String类较常用构造器(其它看手册):

String s1 = new String();
String s2 = new String(String original);
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count);
创建方式 String01.java

方式一:直接赋值String S = "hspedu";

方式二:调用构造器String s = new String("hspedu");

  1. 方式一:先从常量池查看是否有"hsp"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址

  1. 方式二:先在堆中创建空间,里面维护了value属性,指向常量池的hsp空间。如果常量池没有"hsp",重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址。

  1. 画出两种方式的内存分布图

练习

小结:底层是StringBuilder sb = new StringBuilder();sb.append(a);sb.append(b); sb是在堆中,并且append是在原来字符串的基础上追加的.重要规则,Stringc1 = "ab" + "cd";常量相加,看的是池。String c1 = a + b;变量相加,是在堆中。

String常见方法
介绍

String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者还提供了StringBuilder和StringBuffer来增强String的功能并提高效率。[后面我们还会详细介绍StringBuilder和StringBuffer]

常用方法一览

StringMethod01.java

StringMethod02.java

StringBuffer类
基本介绍
  1. java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。 StringBuffer01.java

  1. 很多方法与String相同,但StringBuffer是可变长度的。

  1. StringBuffer是一个容器。 StringBuffer02.java

String VS StringBuffer StringAndStringBuffer.java
  1. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private final char value[];

  1. StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高//char[] value; //这个放在堆.

StringBuffer构造器

常见方法 StringBufferMethod.java
  1. 增append

  1. 删delete(start,end)

  1. 改replace(start,end,string)//将 start---end间的内容替换掉不含end

  1. 查indexOf //查找子串在字符串第1次出现的索引,如果找不到返回-1

  1. 插insert

  1. 获取长度length

StringBuilder类
介绍 StringBuilder01.java
  1. 一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快[后面测]。

  1. 在StringBuilder上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。

常用方法

StringBuilder和StringBuffer均代表可变的字符序列,方法是一样的, 所以使用和StringBuffer一样

三种对比 StringAndStringBuffer.java
  1. StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样

  1. String: 不可变字符序列,效率低,但是复用率高。

  1. StringBuffer: 可变字符序列、效率较高(增删)、线程安全

  1. StringBuilder: 可变字符序列、效率最高、线程不安全

  1. String使用注意说明:string s=" a"; //创建了一个字符串s += "b"; //实际上原来的" a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b" (也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能=>结论:如果我们对String做大量修改,不要使用String

Math类
基本介绍

Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

常用方法 MathMethod.java
  1. abs绝对值

  1. pow求幂

  1. ceil向上取整

  1. floor向下取整

  1. round四舍五入

  1. sqrt求开方

  1. random求随机数 //思考: 请写出获取a-b之间的一个随机整数,a,b均为整数? 2-7

  1. max求两个数的最大值

  1. min求两个数的最小值

Arrays类
常用方法 ArraysMethod01.java
  1. toString 返回数组的字符串形式Arrays.toString(arr)

  1. sort 排序(自然排序和定制排序) ArraysSortCustom.java Integer arr[] = {1, -1, 7, 0, 89};

  1. binarySearch 通过二分搜索法进行查找,要求必须排好序 int index = Arrays.binarySearch(arr, 3);

  1. copyOf 数组元素的复制Integer[] newArr = Arrays.copyOf(arr, arr.length);

  1. fill 数组元素的填充Integer[] num = new Integer[]{9,3,2};Arrays.fill(num, 99);

  1. equals 比较两个数组元素内容是否完全一致boolean equals = Arrays.equals(arr, arr2);

  1. asList 将一组值, 转换成listList< Integer> asList = Arrays.asList(2,3,4,5,6,1);System.out.println( asList=" + asList);

System类
常见方法 System_.java
  1. exit退出当前程序

  1. arraycopy :复制数组元素,比较适合底层调用,-般使用Arrays.copyOf完成复制数组.int[] src={1,2,3}; int[] dest = new int[3]; System,arraycopy(src, 0, dest, 0, 3);

  1. currentTimeMillens:返回当前时间距离1970-1-1的毫秒数

  1. gc:运行垃圾回收机制System.gc();

BigInteger和BigDecimal类
介绍
  1. BigInteger适合保存比较大的整型

  1. BigDecimal适合保存精度更高的浮点型(小数)

常见方法 BigInteger_.java BigDecimal_.java
  1. add加

  1. subtract减

  1. multiply乘

  1. divide除

一二代日期类
第一代日期类 Date01.java
  1. Date:精确到毫秒,代表特定的瞬间

  1. SimpleDateFormat:格式和解析日期的类SimpleDateFormat格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化.

第二代日期类 Calender_.java
  1. 第二代日期类,主要就是Calendar类(日历)。public abstract class Calendar extends Object implements Serializable,Cloneable, Comparable<Calendar>

  1. Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_ MONTH、HOUR等日历字段之间的转换提供了一些方法, 并为操作日历字段(例如获得下星期的日期)提供了一些方法。

第三代日期类
前面两代日期类的不足分析

JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。而Calendar也存在问题是:

  1. 可变性:像日期和时间这样的类应该是不可变的。

  1. 偏移性: Date中的年份是从1900开始的,而月份都从0开始。

  1. 格式化:格式化只对Date有用,Calendar则不行。

  1. 此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)

第三代日期类常用方法 LocalDate_.java
  1. LocalDate(日期)、LocalTime(时间)、 LocalDateTime(日期时间) JDK8加入LocalDate只包含日期,可以获取日期字段LocalTime只包含时间,可以获取时间字段LocalDateTime包含日期+时间,可以获取日期和时间字段

  1. DateTimeFormatter格式日期类类似于SimpleDateFormatDateTimeFormat dtf = Date TimeFormatter.ofPattern(格式);String str = dtf.format(日期对象);

  1. Instant时间戳 Instant_.java 类似于Date提供了一系列和Date类转换的方式Instant —> Date:Date date = Date.from(instant);Date —> Instant:Instant instant = date.tolnstant();

  1. 第三代日期类更多方法LocalDate Time类MonthDay类:检查重复事件是否是闰年增加日期的某个部分使用plus方法测试增加时间的某个部分使用minus方法测试查看一年前和一年后的日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值