导图社区 7.常用API
这是一篇关于7.常用API的思维导图,包括object、String、String Buffer和String Builder的介绍、包装类型的转换、日期类。
编辑于2022-04-01 14:09:09
Object
方法
public String toString ()——返回对象的字符串表示形式,建议所有子类重写该方法
当我们调用一个对象的引用时,实际上就是调用当前对象超类的toString()方法---打印的是地址值(JVM)
像String,File,Date都重写了Object的toString()方法,一般可自动重写toString()方法。
public bollean equal(Object obj)—
=与equal比较
=是一个运算符:在基本数据类型中比较的是两个值是否相等(基本数据类型可以不相同),在引用类型中比较的是地址是否相等
equal是一个方法:只能使用与比较引用类型,Object 的equal方法与=的作用是相等的比较的是两个引类型的地址是否相等。像String, Date,File,包装类型,重写了超类Object的equal方法,比较的是两个内容的值是否相等。如果自定义类要比值需要手动重写equal。
protect object clone()——克隆一个类
getclass()——返回此时运行的父类
int hashcode()——返回对象的哈希值
void notify()——唤醒正在等待对象监视器的单个线程
void notifyAll()唤醒正在等待对象二监视器的所有线程
void wait ()——导致当前的线程等待,直到另一个线程调用该对象notfy()方法
String
概述
1.String声明为final的,不可被继承
2.String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可以比较大小。
3.String内部定义了final char[] value用于存储字符串数据,内部char数组为常量不可变
4.String:代表不可变的字符序列。简称:不可变性
特点
1.当对字符串重新赋值时,连接操作时,replace()方法修改需要重写指定内存区域赋值,不能使用原有的value进行赋值。
2.String的实例化方式:通过字面量定义的方式,通过new + 构造器的方式
2.1通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。 String s1 = "javaEE";
2.2通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。 String s3 = new String("javaEE"); 创建了两个对象
3.字符串常量池中是不会存储相同内容的字符串的。
4.通过字面量拼接的字符串是直接指向常量池 String s4 = "javaEE" + "hadoop";
5.只要拼接中有常量参与,最终相当于在堆内存空间new出一个引用地址,指向常量池 String s6 = "javaEE" + s2;
6.如果拼接的结果调用intern()方法,返回值就在常量池中 String s8 = s5.intern();
方法
String 与 byte[]之间的转换
* 编码:String --> byte[]:调用String的getBytes() * 解码:byte[] --> String:调用String的构造器 * * 编码:字符串 -->字节 (看得懂 --->看不懂的二进制数据) * 解码:编码的逆过程,字节 --> 字符串 (看不懂的二进制数据 ---> 看得懂) * * 说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。
String 与 char[]之间的转换
String --> char[]:调用String的toCharArray() char[] --> String:调用String的构造器
String与基本数据类型、包装类之间的转换
String --> 基本数据类型、包装类:调用包装类的静态方法:parseXxx(str) 基本数据类型、包装类 --> String:调用String重载的valueOf(xxx)
常用方法一
int length():返回字符串的长度:return value.length
char charAt(int index):返回某索引处的字符return value[index]
boolean isEmpty():判断是否是空字符串:return value.length==0
String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写
String toUpperCase():使用默认语言环境,将String中的所有字符转换为大写
String trim():返回字符串的副本,忽略前导空白和尾部空白
boolean equals(Object obj):比较字符串的内容是否相同
boolean equals IgnoreCase(String anotherString):与equals方法类似,忽略大小写
String concat(String str):将指定字符串连接到此字符串的结尾。等价于用“+”
int compareTo(String anotherString):比较两个字符串的大小
String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
String substring(int beginIndex,int endIndex):返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
常用方法二
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
indexOf和lastIndexOf方法如果未找到都是返回-1
int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
常用方法三
替换
String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用newChar 替换此字符串中出现的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement):使用指定 的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
匹配
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
切片
String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
StringBuffer和StringBuilder的介绍
区别
String:jdk1.0不可变的字符序列;底层使用char[]存储
StringBuffer:jdk1.0可变的字符序列;线程安全的,效率低;底层使用char[]存储
StringBuilder:jdk1.5可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用 char[]存储
StringBuffer和Stringbuilder都继承与AbstraStringBuildelei类,初始容量为16,若容量不够时增加为(原来的两倍+2),若还不够则容量设置为(需要的容量)
* 对比String、StringBuffer、StringBuilder三者的效率: * 从高到低排列:StringBuilder > StringBuffer > String
开发中建议大家使用:StringBuffer(int capacity)StringBuilder(intcapacity)
方法
StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容
StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把当前字符序列逆转
public int indexOf(String str)
public String substring(int start,int end):返回一个从start开始到end索引结束的左闭右开区间的子字符串
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)
* 总结: * 增:append(xxx) * 删:delete(int start,int end) * 改:setCharAt(int n ,char ch) / replace(int start, int end, Stringstr) * 查:charAt(int n ) * 插:insert(int offset, xxx) * 长度:length(); * 遍历:for() + charAt() / toString()
包装类型的转换
包装类——>基本数据类型:
调用包装类的XXXXValue()方法
Interger in1 = new Interger(12); int i1 = in1.intValue();
Float f1= new Float(13f); float f2 = f1.floatValue();
自动拆箱
Interger in1 = new Interger(12); int in2=in1;
基本数据类型——>包装类:
调用包装类的构造器,传入参数为基本数据类型,字符串
int num1 = 2; Interger in1 = new Interger(num);
String num2=“12”; Interger in2 = new Interger(num2);
自动装箱
int in1 = 10; Interger in2 = in1;
String类——>基本数据类型,包装类:
调用包装类的paserXXX( String s )方法
String s1 = "12"; int num1 = Interger.parseInt( S1 );
子主题
基本数据类型,包装类型——>String类
调用String重载的valueOf( Xxx xxx)
int num1 = 12; String s1= String.valueOf(num1);
调用包装类重载的toString()方法
int nm1 = 12; String s1= Interger.toString(num1);
日期类
JDK8之前
System
用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 public static long currentTimeMillis()
long time = System.currentTimeMillis();
java.util.Date类
两个构造Date()
Date():空参构造器创建一个对应当前时间的Date对象 Date date1 = new Date();
创建指定毫秒数的Date对象 Date date2 = new Date(1589026216998L);
两个方法
toString():显示当前的年、月、日、时、分、秒
getTime():获取当前Date对象对应的毫秒数。(时间戳
Java.sql.Date
创建:java.sql.Date date3 = new java.sql.Date(35235325345L);
将java.util.Date对象转换为java.sql.Date对象
多态:Date date4 = new java.sql.Date(2343243242323L); java.sql.Date date5 = (java.sql.Date) date4;
Date date6 = new Date(); java.sql.Date date7 = new java.sql.Date(date6.getTime());
SimpleDateFormat
实例化
SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyy-MM-dd hh:mm:ss")
格式化:日期—>字符串
Date date = new Date(); System.out.println(date); //Sun May 10 16:34:30 CST 2020 String format = sdf.format(date);//2022-04-01 09:39:56
解析:字符串—>日期
String str = "19-12-18 上午11:43"; Date date1 = sdf.parse(str);
Calendar 是一个抽象基类
实例的方法
方式一:创建其子类(GregorianCalendar)的对象
方式二:调用其静态方法getInstance()
Calendar calendar = Calendar.getInstance();
使用
一个Calendar的实例是系统时间的抽象表示,通过get(intfield) 方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
获取这一年的第多少天,这个月的第多少天 public void get(intfield,intvalue)
int days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days); //10,这个月的第10天 System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); 131,今天是这一年的131天
设置这一年的第多少天,这个月的第多少天 public void set(intfield,intvalue)
//calendar可变性 calendar.set(Calendar.DAY_OF_MONTH,22); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days); //22
在这个月的第多少天基础上增加n天 public void add(intfield,intamount)
//add() calendar.add(Calendar.DAY_OF_MONTH,-3); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days); //22-3 --》19
getTime():日历类---> Date public final Date getTime()
Date date = calendar.getTime(); System.out.println(date); //Tue May 19 17:12:06 CST 2020
//setTime():Date ---> 日历类 public final void setTime(Date date)
Date date1 = new Date(); calendar.setTime(date1); days = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(days); //10
注意:
获取月份时:一月是0,二月是1,以此类推,12月是11
获取星期时:周日是1,周二是2,。。。。周六是7
JDK8
Instant类的使用
now():获取本初子午线对应的标准时间
Instant instant = Instant.now(); System.out.println(instant); //2020-05-10T09:55:55.561Z
添加时间的偏移量
OffsetDateTime offsetDateTime =instant.atOffset(ZoneOffset.ofHours(8));//东八区 System.out.println(offsetDateTime); //2020-05-10T18:00:00.641+08:00
//toEpochMilli():获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数 ---> Date类的getTime()
long milli = instant.toEpochMilli(); System.out.println(milli); //1589104867591
//ofEpochMilli():通过给定的毫秒数,获取Instant实例 -->Date(long millis)
Instant instant1 = Instant.ofEpochMilli(1550475314878L); System.out.println(instant1); //2019-02-18T07:35:14.878Z
LocalDate、LocalTime、LocalDateTime的使用
now():获取当前的日期、时间、日期+时间
LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.now(); LocalDateTime localDateTime = LocalDateTime.now();
of():设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23,43);
//getXxx():获取相关的属性
System.out.println(localDateTime.getDayOfMonth()); System.out.println(localDateTime.getDayOfWeek()); System.out.println(localDateTime.getMonth()); System.out.println(localDateTime.getMonthValue()); System.out.println(localDateTime.getMinute());
/withXxx():设置相关的属性:体现不可变性
LocalDate localDate1 = localDate.withDayOfMonth(22); System.out.println(localDate); System.out.println(localDate1);
LocalDateTime localDateTime2 = localDateTime.withHour(4); System.out.println(localDateTime); System.out.println(localDateTime2);
DateTimeFormatter
重点: 方式三:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MMddhh:mm:ss");
格式化
String str4 = formatter3.format(LocalDateTime.now()); System.out.println(str4);//2020-05-10 06:26:40
解析
TemporalAccessor accessor = formatter3.parse("2020-05-10 06:26:40"); System.out.println(accessor);
、参考:与传统日期处理的转换
Java比较器
Comparable自然排序
1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。
2.像String、包装类重写compareTo()方法以后,进行了从小到大的排列
3. 重写compareTo(obj)的规则:
* 如果当前对象this大于形参对象obj,则返回正整数,
* 如果当前对象this小于形参对象obj,则返回负整数,
* 如果当前对象this等于形参对象obj,则返回零。
4.对于自定义类来说,如果需要排序,我们可以让自定义类实现Comparable接口,重写compareTo(obj)方法。在compareTo(obj)方法中指明如何排序
Comparator定制排序:
主题
Date

子主题
SimpleDateFormate
子主题
子主题
Calendar
子主题
子主题
子主题
基本类型包装类
Integer

int 与string转换
子主题
自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类型
拆箱:把包装类类型型转换为对应的基本数据类型
实列
Integer i=100;//自动装箱 i+=200; //加号是先制动拆箱,相加的和赋值给i是制动装箱
System

Random随机数
方法一: for (int i=0;i<30;i++) {System.out.println((int)(1+Math.random()*10));} (int)(1+Math.random()*10) 通过java.Math包的random方法得到1-10的int随机数
方法二:Random ra =new Random(); for (int i=0;i<30;i++) {System.out.println(ra.nextInt(10)+1);} 通过java.util包中的Random类的nextInt方法来得到1-10的int随机数
ArrayList
特点
提供一种储存空间可便的储存模型(数组不可变),储存的数据内容可以发生改变
方法
Public boolean add(element)将指定的元素添加的集合末尾
public void add(int,element)。将集合中的指定位置添加指定元素
public boolean remove(object o):删除指定的元素,返回元素是否删除成功
public E remove (int index):删除指定索引处的元素,返回被删除的元素
public E set(int index, E element):修改指定索引处的元素,返回被修改的元素
public E get(int index):返回指定索引处的元素,
public int size ():返回集合中的元素个数
构造方法
ArraryList<> arr
Array
子主题

StringBuilder
作用
是一个对象中的内容可变的字符串,看作是一个容器类,不会创建一个新的对象
String和StringBuilder区别
String:内容是可变的 StringBuilder:内容是可变的
构造方法
StringBuilder() 构造一个没有字符的字符串构建器,初始容量为16个字符。 StringBuilder(int capacity) 构造一个没有字符的字符串构建器,以及由 capacity参数指定的初始容量。
常用方法
添加方法:
public StringBuilder append(任意类型)。添加数据并返回对象本身
反转方法:
public StringBuilder revers()。返回相反的字符序列
String与StringBuilder的转换
public String toString():通过toString()就可以把StringBuilder转换位String
public StringBuilder(String s):通过构造方法就可以实现把String转StringBuilder
Math

浮动主题