2.java常用类
2020-09-04 10:22:22 1 举报
AI智能生成
Java常用类
作者其他创作
大纲/内容
Object
API:应用程序编程接口,包含是类的说明,类中方法(构造方法,成员方法,静态方法),属性(成员属性和静态属性).API就是对上述内容进行解释说明,通过看API就能知道一个类是干嘛的,它的方法怎么用.
类库
就是把写好的类的.class打成jar包,这些jar包组成就是类库
如何打jar包
工程-->右键-->export-->java-->jar File--> 选择jar包生成的位置,填写jar的名称
jar的分类
第一方: jdk的开发者
每次创建工程默认就会导入类库 JRE System Library jdk的常用类库
第二方: 我们程序员
我们写的代码本来工程中
第三方:开源的组织和社区
如何导入第三方jar包
选中工程创建lib文件夹,存储第三方法jar包
选中jar,右键--> build path--> add to build path
直到看到jar包变成小奶瓶导入成功,就可以在工程中使用了
奶瓶门存储在Referencs Libraries
使用第三方有时需要查看源码,就需要你把源码下载下来,记住你存储的位置
Attach Source
extral Location
file
floder
Object
是所有类的顶层类,根类,超类,任何一个类都直接或者间接继承自它.所以Object的方法比较少,因为抽取的是公共的方法,所以比较少
构造方法
Object()空参构造方法
成员方法
getClass():获取一个类的运行时类
返回Class对象,通过getName()查看运行时类
hashCode()
返回一个对象的hashCode值.如果两个对象的equals结果是true ,则hashCode值需要相同
equals()
比较两个对象是否相等.默认只比较地址.所以子类继承过去之后要重写.重写之后都是用来比较对象属性.如果属性一致也认为两个对象相等,返回true
重写快捷键: alt+shift+s h
toString()
将一个对象以字符串的形式返回: 全类名+@+ Integer.toHexString(hashCode())
子类继承过去要重写toString.打印对象类名[属性=属性值,...]
重写的快捷键: alt+shift+s s
作用:当直接打印某个对象的引用,则自动调用该对象的toString方法
==和equals区别
比较的范围
==:既能比较基本数据类型,也能比较引用类型
equals只能比较引用类型
比较的内容
equals重写前只比较地址,重写后一般都比较属性值
==基本数据类型时比较的是数据值,引用类型比较的是地址
Scanner
以正则表达完成数据扫描的扫描器.只能扫面基本数据类型和字符串
构造方法
Scanner(File file)
文件录入
Scanner(Inputstream in)
键盘录入
Scanner(String path)
文件录入
基本数据类型录入方法
nextByte()
nextShort()
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
没有nextChar().因为录入内容都被看做String类
录入float类型不要加f
一次录入多个数据,以空格分割
字符串录入
next()
录入空格之前的内容.看到一个空格就把空格前的内容取走
nextLine()
一次录入一行数据,只要不输入换行符都能获取到,输入回车就结束录入
Scanner使用小问题
空格分割的录入方式,后面跟了以换行符分割录入方式.此时换行符分割录入方式不可能等待到用户的录入.
nextInt(), nextLine();
怎么解决:
nextInt();
nextLine(); 先把换行符吃掉
nextLine()
写两个Scanner()
一个让用户输入nextInt();
另一个让输入nextLine();
把录入的数据都是用nextLine()接口;把读去的到数字字符串解析. Integer.parseInt(String str);
close() 关闭扫面器,关闭之后不能再用了
String
String就是字符串类型,但是一种不能变的字符串
所有字面常量字符串都是String类型的对象,他们存储在方法区中常量池中.
常量池的特点:
没有重复元素
元素不可以更改,只能新建
String的本质就是一个char[]数组.数组不可变.所以String类型也不可以变.
String的构造方法
String()
""
String(String str)将传入的字面常量字符串初始值相同的内容字符串对象
new String("abc") != "abc" true
"a"+"b" == "ab"; true
new String("a")+"b" == "ab"; false
String(byte[] byte) 将比特数组的数字转为字符串.称之为解码
String(byte[] byte,int offset, int length)
String(char[] char) 将char数组转为字符串
String(char[] char, int offset, int count)
String判断功能方法
equals(Object o)
比较两个字符内容是否相同
equalsIgnoreCase(String o);
忽略大小写的基础上比较两个字符串是否相同
contains(String o)
是否包含子字符串
startsWith(String 前缀)
是否以参数字符串开头
endsWith(Stirng 后缀)
是否以参数字符串结尾
isEmpty()
字符串的长度是否为零 , 但不能是 null
String的获取功能
length()
字符串的长度
charAt(int index)
根据参数的索引值来获取对应的字符
subString(int beginIndex)
根据参数的索引值对字符串进行截取,一直到字符串结束为止
subString(int beginIndex, int endIndex)
从索引为beginIndex开始,到endIndex结束(不包括)截取字符串
indexOf(int ch)
获取指定字符第一次出现的索引
indexOf(int ch, int fromIndex)
获取从fromIndex开始,ch第一次出现的索引
indexOf(String str)
获取指定字符串在本字符串中第一次出现的索引
indexOf(String str, int fromIndex)
获取从fromIndex开始,参数字符串str第一次出现的索引
lastIndexOf(String str)
获取str在字符串中最后一次出现的索引
String转换功能
getBytes()
将字符串转换 byte类型的数组
toCharArray()
将字符串转换为 char 类型的数组
toUpperCase()
将字符串全部转换为大写
toLowerCase()
将字符串全部转换为小写
static valueOf()
静态方法使用String类名调用
将各种类型的值转化为String 类型
待转数据+""
String其他方法
replace(String oldChar, String newChar)
使用newChar 替换所有的 oldChar
trim()
去除字符串两边的空白
正则表达式
正则就是一个普通字符串,既可以表一个字符串规则,也可一类字符串的规则,如果正则表达式,不和方法一起使用,则它就是一个字符串,如果将正则表达式放入到某个方法中使用,才能发挥出,正则表达式的作用
好处:可以使用极其简单的方式完成字符串校验
难处: 不好写出正确的正则
原子
1.所有打印(所有可以在屏幕上输出的字符)和非打印字符(看不到的 例如 回车,空格)
2. . * + ? _ ( <> ) 如果所有有意义的字符,想作为原子使用,统统使用“\”转义字符转义
3.在正则表达式中可以直接使用一些代表范围的原子
\\d
[0-9]
\\D
0-9之外任何一个字符
\\s
空白
\\S
除了空白
\\w
[0-9A-Za-z]
\\W
除了\w,其他都可以
5.自定义原子表
使用[原子表],可以匹配方括号中的任何一个原子
[13579]
[1-5p-z]
使用[^原子表],可以匹配除方括号中的之外任何一个原子
[^0-9]
任意一个非数字
6. .符号
可以匹配一个任意字符
元字符
元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现;
包括
* : 表示其前面的原子可以出现 0次 1次 或多次
+ :表示其前面的原子可以出现 1次 或多次,不能没有最少要有一个
? :表示其前面的原子可以出现 0次 或 1次 ,有只能出现一次,要么没有出现
{}:用于自己定义前面原子出现的次数
{m} m 表示一个整数,表示其前面的原子出现的次数
{m,n} m和n表示一个整数,m要小于n,表示前面的原子最少出现m次,最多n次,包括m和n次;
{m,} 表示前面的原子,最少出现m次,最多无限;
| :表示或的关系,它的优先级别是最低的,最后考虑它的功能;
(com|cn|org)
^ :直接在一个正则表达式的第一个字符出现,则表示必须以这个正则表达式开始
$ : 直接在一个正则表达式的最后一个字符出现,则表示必须以这个正则表达式结束
():提高优先级;
String和正则相关的方法
boolean matches(String regex)
当前字符串和正则表达式的匹配
String[] split(String regex)
匹配到的正则当作分隔符,将字符串分隔为字符串类型的数组
String repleaceAll(String regex, String repleacment)
将regex匹配的所有字符串 使用 replacement参数类进行替代
StringBuilder(字符串缓冲区)
是一个可变字符序列
使用一个value属性维护一个有序的char数组,还有一个属性count记录存储字符个数.添加元素检测:count+字符个数 是否大于容量(默认16); 小于容量直接添加,大于容量是:申请新的数组,数组的长度: count+=字符串个数; 申请count+16;
构造方法
StringBuilder() 初始容量16个
StringBuilder(int capcity) 指定容量个数,提前知道要放多少个数据
StringBuilder(Charsequesce c) 以指定字符序列初始化StringBuilder, 初始容量=16+字符个数
StringBuilder(String str) 以指定的String字符串出事胡StringBuilder, 初始容量: 16+str.length()
添加方法
append(任意类型); 拼接字符串
insert(int offset, 任意类型) 在指定位置插入字符串
删除方法
delete(int start, int end);指定范围删除.含头不含尾
deleteCharAt(int index); 删除指定位置的字符
替换方法
replace(int start, int end, String replacement) 将指定区间的字符串替换掉
reverse() 反转字符串
String和StringBuilder拼接的区别
StringBuilder效率高,节省空间
String效率低,浪费空间
System.currentTimeMills(); 获取指定到这一行代码的时间
StringBuffer和StringBuilder的区别
相同点:都是可变字符串
不同点:
StringBuffer:jdk1.0,StringBuilderjdk1.5
StringBuffer线程安全, StringBuilder线程不安全
StringBuffer效率低,StringBuilder效率高
String和StringBuilder或者StringBuffer作为方法参数
String作为方法参数
形参改变字符串内容,实参不会变化
StringBuffer或者StringBuilder字符串作为方法参数
形参不重新赋值新的可变字符串对象,形参改变字符串内容,实参中字符串内容也变
形参重新赋值一个新的可变字符串对象,形参变,实参不变
String和StringBuilder的互转
StringBuilder转String
StringBuilder的成员方法: toString()方法
常用
String的构造方法: String(StringBuilder sb)
sb+""
String转StringBuilder
StringBuilder 的构造方法: StringBuilder(String str)
常用
StringBuilder 的成员方法: 创建一个空参StringBuilder对象,调用append(String str)
基本数据类型包装类
基本数据类型只存简单的数值,也不能存储在集合中使用,java针对这种情况,为每种基本数据类型设计包装类,在包装添加一些属性和方法.
包装类有哪些
Byte, Short, Integer,Long,Float,Double,Boolean,Character
Boolean 有三个值 null ,true,false
boolean 有两个值 true,false
每个包装类中属性和方法都差不多.
Integer的构造方法
Integer()
Integer(int i)
Integer(String numStr)
Integer的常用属性
MAX_VAULE
MIN_VALUE
SIZE
TYPE
int-->int.class
Integer方法
***Value()
Integer转为其他类型
Integer 静态方法
toHexString(整型) 转为16进制字符串
toOctalString(整型)转为8进制字符串
toBinaryString(整型)转为二进制字符串
parseInt(String num) 把数字字符串,转为十进制表示方式
Integer,int,String类型转换
Integer转为int: 自动拆箱
int转Integer: 自动装箱
int转String:
静态方法: String 中 public static String valueOf(int i)
int 类型 + “”
String转int
静态方法: Integer 中的 public static int parseInt(String s)
throws NumberFormatException
Integer转String:
成员方法:Integer中public String toString()
Integer类型的对象 + “”
String转Integer
构造方法: Integer(String s)
工厂方法: Integer中 public static Integer valueOf(String s)
throws NumberFormatException
自动装箱和拆箱
装箱:将基本数据类型转为对应包装类型
拆箱:把包装类型转为基本数据类型
jdk1.5之后
自动装箱: 基本数据类型可以直接给包装类型赋值
自动拆箱: 包装类型可以直接给基本数据类型赋值
Math
Math构造方法被封装,类用final修饰 杜绝被子类继承,里面所有的方法和属性都是静态的
浮点取整:floor(向下取整,适用于等概率随机数),ceil(向上取整),round(四舍五入)
随机数:random()
随机值 [0,1)
绝对值:abs()
最大,最小值:max(),min();
静态导入: import static 包名.类名.* 表示将该类中所有静态方法导入到当前类中
System
系统类
属性
public static final InputStream in
标准输入流
public static final PrintStream out
标准输出流
静态方法
public static long currentTimeMillis()
返回以毫秒为单位的当前时间。
public static long nanoTime()
返回最准确的可用系统计时器的当前值,以毫微秒为单位。用作计时器
public static void gc()
运行垃圾回收器。
在回收垃圾的时候自动调用Object中的finalize()方法
public static void exit(int status)
终止当前正在运行的 Java 虚拟机。
java.util
Random
设定随机数
可生成不同类型的随机值(int,float,double,boolean)
种子
种子相同,执行相同的方法,则随机数的结果相同
日期和时间相关类(重点)
Date
Date就是一个日期对象,表示一个时间的瞬间
Date的构造方法,构造方法不同得到时间不一样
Date(): 当前的时间对象
Date(long milliSecond): 代表指定毫秒值相对于时间原点1970.1.1 00:00:00的时间对象
Date的对象方法
boolean before(Date e) 比较一个时间对象是否在指定的时间对象之前,是就返回true,否则就返回false
boolean after(Date e) 比较一个时间对象是否在指定的时间对象之后,是就返回true,否则返回false
long getTime(): 返回当前时间对象代表的毫秒值
setTime(long m): 设置时间对象的毫秒值
DateFormat 抽象类
因为直接打印Date对象,显示的是英文的时间显示方法,我们想按照自己指定时间格式显示.
DateFormat是抽象类,不能实例化,但也提供一个构造,供子类实例化时调用.使用它的时候要导包.java.text包下,已知子类SimpleDateFormat
SimpleDateFormat类
构造方法
SimpleDateFormat(), 以默认的时间格式显示: yy-MM--dd 上午 hh:mm
SimpleDateFormat(String pattern)
以指定的时间格式创建SimpleDateFormat
时间格式符号:
y:年 M:月 d:日 am 上午下午 H:24小时格式 h十二进制小时格式 m:分钟 s:秒
对象方法
String format(Date e); 将时间对象格式化为字符串
Date parse(String str): 以指定的时间格式把字符串解析为时间对象. str的格式一定要和SimpleDateFormat设置时间格式一样
Calendar
Calendar日历类,表示一个精确的瞬间.是一个包含很多字段的对象
Calendar在java.util包,使用时要导包
Calendar也是一个抽象类,不能实例化.但是不使用它的子类
通过静态方法getInstance()获取到一个日历对象,获取日历对象同时,就已经把各个字段下的值初始化完成
常用的方法
get(int field)
get(1):使用数字获取字段下的值不好记忆
使用Calendar提供代表字段的常量获取字段下的值
YEAR,MONTH,DAY_OF_MONTH,DAY_OF_YEAR, DAY_OF_WEEK
get(Calendar.YEAR)
需要注意的字段:
MONTH 是从0开始表示1月,最大是11表示12月
DAY_OF_WEEK从周日开始对应值为1,依次类推。周六对应的值为7
set方法
set(int field, int value): 设置某个字段下的值
public final void set(int year, int month, int date):设置年,月,日字段的值
public final void set(int year, int month, int date,int hourOfDay, int minute):设置年,月,日,小时,分钟字段的值
public final void set(int year, int month, int date,int hourOfDay, int minute,int second):设置年,月,日,小时,分钟, 秒字段的值
add(int field, int offset): 设置某个字段的偏移
getTimeMillis():获取当前Calendar代表毫秒数
Calendar和Date互转
Date转Calendar
调用 Calendar 的 setTime(Date date)
Calendar转Date
调用 Calendar 的 getTime()
Calendar和 毫秒数 的转换
Calendar 转 毫秒数
调用 Calendar 的 getTimeMillis() 获取Calendar的毫秒数,
毫秒数 转 Calendar
调用Calendar的setTimeMillis(毫秒数)
Date 和 毫秒数 的转换
Date 转 毫秒数
通过 Date 中的 getTime() 获取Date的毫秒数
毫秒数 转 Date
调用Date构造方法: Date(long millis)
大数字和大浮点数
大数字整数
BigInteger
常用构造方法 BigInteger(String str)
加,减,乘,除,取余 运算
大数字浮点数
BigDecimal
同上
Arrays?
Collectioins?
0 条评论
下一页