目录:
1、常用类
--1.1. Object类
--1.2.System类
--1.3.Runtime类
--1.4.Calendar日历
--1.5.Date类
--1.6.Math
--1.7.String
--1.8.StringBuffer
--1.9.基础类型对象包装类
2、正则表达式
1.常用类
1.1、Object类
Object是所有对象的直接或者间接父类,也就是上帝啦!该类中定义的肯定是所有对象都具备的功能。
Object类中提供了两个对象是否相同的比较方法
如果自定义类中也有比较相同的功能,没必要重新定义啦,只要沿袭父类中的功能,建立自己持有的比较功能即可,这就是覆盖
equals 比较的是内存地址
== 比什么是什么
1.2、System类
该类存放了很多系统级的属性和方法。
他的构造方法被private修饰,无法创建System的对象,内部提供的方法被静态修饰,可通过类名调用。
- 成员变量
包括in、out、err三个变量
in :标准输入流(键盘)
out :标准输出流(显示器)
err :标准错误输出流(显示器)
System.out.println("Lisa niu hong hong");
- 成员方法
1、long currentTimeMillis();
返回当前计算机时间
2、void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
数组拷贝,原生方法,性能上比循环高效
3、void exit (int status) ;
退出程序 ,status = 0 表示正常退出,非0表示异常退出
4、void gc () ;
请求系统进行垃圾回收
5、String getProperty (String key) ;
获得系统中属性名为key的属性对应的值。
—— key的取值:
属性名 :java.version :Java运行时环境版本
属性名 :java.home :Java安装目录
属性名 :os.name :操作系统的名称
属性名 :os.version :操作系统的版本
属性名 :user.name :用户的账户名称
属性名 :user.home :用户的主目录
属性名 :user.dir :用户的当前工作目录
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
b = { 0 , 0 , 0 , 2 , 3 }
String osName = System.getProperty(“os.name”);
String user = System.getProperty(“user.name”);
System.out.println(“当前操作系统是:” + osName);
System.out.println(“当前用户是:” + user);
1.3、Runtime类
Runtime代表java程序的运行时环境
对象的获取方法:Runtime runtime = Runtime.getRuntime();
- 获取当前JVM的内存信息
- 获取JVM可用的处理器核心的数量
- 执行系统命令
/*
* 获取当前jvm的内存信息,返回的值是 字节为单位
* */
public static void getFreeMemory() {
//获取可用内存
long value = Runtime.getRuntime().freeMemory();
System.out.println("可用内存为:"+value/1024/1024+"mb");
//获取jvm的总数量,该值会不断的变化
long totalMemory = Runtime.getRuntime().totalMemory();
System.out.println("全部内存为:"+totalMemory/1024/1024+"mb");
//获取jvm 可以最大使用的内存数量,如果没有被限制 返回 Long.MAX_VALUE;
long maxMemory = Runtime.getRuntime().maxMemory();
System.out.println("可用最大内存为:"+maxMemory/1024/1024+"mb");
}
/*
* 获取jvm可用的处理器核心的数量
* */
public static void getAvailableProcessors() {
int value = Runtime.getRuntime().availableProcessors();
System.out.println(value);
}
public static void commend() {
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("calc");
} catch (Exception e) {
e.printStackTrace();
}
}
参考资料:Java-Runtime 类
1.4、Calendar日历
专门操作日期的类。
对象的获取方法: Calendar calendar = Calendar.getInstance() ;
上面获取到的对象其实是Calendar的子类,是根据不同的国家地区返回的日期子类。
public void getCalendar() {
// 获取年
int year = calendar.get(Calendar.YEAR);
// 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
int month = calendar.get(Calendar.MONTH) + 1;
// 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 获取时
int hour = calendar.get(Calendar.HOUR);
// int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示
// 获取分
int minute = calendar.get(Calendar.MINUTE);
// 获取秒
int second = calendar.get(Calendar.SECOND);
// 星期,英语国家星期从星期日开始计算
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour
+ "时" + minute + "分" + second + "秒" + "星期" + weekday);
}
1.5、Date
表示特定的瞬间,精确到毫秒
对象的获取方法:
Date date = new Date () ;
-
Date date = new Date ( long date )
:毫秒值转日期
获取毫秒值(日期转毫秒值):
long date = date.getTime ()
设置毫秒值:
date.setTime( long time);
对比时间:
-
date.before (Date when);
当且仅当date表示的瞬间早于when表示的瞬间时返回true.
比较时间:
-
date.compareTo( Date when);
当date的瞬间早于when,返回负数;相等返回0;晚于when,返回正数。
1.6、Math
该类实现了基本的数学运算,如初等指数、对数、平方根、三角函数 。
ceil()
:返回大于指定数据的最小整数
floor()
:返回小于指定数据的最大整数
round()
:四舍五入
random()
:获取伪随机数(大于0.0且小于1.0的double值)
1.7、String
String类被final修饰,不能被继承。
- 获取
length()
获取长度
charAt(index)
获取该处字符
indexOf(char)
获取字符所在位置
indexOf(char,fromIndex )
从某位置开始获取字符位置
indexOf(str)
indexOf(str,fromIndex)
- 判断
contain(str)
isEmpty()
startsWith(str)
endsWith(str)
equals(str)
equalsIngoreCase(str)
- 转换
toString(char[])
;toString(char[] , offset , count)
:字符数组 转 字符串
toCharArray()
:字符串转数组
toString(byte[])
;toString(byte[],offset,count)
:字节数组 转 字符串
getBytes()
:字符串 转 字节数组
valueOf(int / double)
: 字符串 转 基本数据类型 - 替换
replace(oldChar , newChar)
:替换 - 切割
split(regex)
- 子串
subString(begin)
subString(begin,end)
- 转换、取出空格、比较
toUpperCase()
toLowerCase()
trim()
compareTo(str)
1.8、StringBuffer
对象获取方法:StringBuffer sb = new StringBuffer( "abc" );
String获取对象 :String str = "abc" ;
- 存储
append()
insert(index , 数据)
- 删除
delete(start ,end )
deleteCharAt(index)
- 获取
charAt(index)
在此位置上的字符
indexOf(str)
lastIndexOf(str)
length
subString(start , end)
- 修改
replace(start ,end , str)
setCharAt(index , char)
- 反转
reverse()
- 存储指定数据到指定字符数组
getChars(srcBegin , srcEnd ,Dst[] , dstBegin )
StringBuffer与StringBuilder对比来说,StringBuilder是线程不同步,不安全但效率高
1.9、基础类型对象包装类
byte -> Byte类
功能:与字符串之间的相互转换
- 基本数据类型转换成字符串
Integer.toString(34);
- 字符串转基本数据类型
int a = Integer.parseInt("123");
- 进制转换
toBinaryString();
:转二进制
toHexString();
:转十六进制
toOctalString();
:转十进制
2.正则表达式
正则表达式在线测试
正则表达式定义了字符串的模式,可以用来搜索、编辑和处理文本。描述在查找文字主体时待匹配的一个或多个字符串。将某个字符模式与所搜索的字符串进行匹配。
- 组成:
正则表达式由普通的字符(如字符a到z)以及特殊字符(如!、$等)组成的文字模式。
2.1、正则表达式的语法
字符的取值范围
[]
[abc]
:表示字符是a或b或c
[^abc]
:表示字符不能有a、b、c
[a-zA-Z]
:表示字符是字母
[0-9]
:表示字符是数字数量表达式
.
:匹配任意的字符
\d
:匹配数字
\D
:匹配非数字
\s
:匹配由空字符组成
\S
:匹配由非空字符组成
\w
:匹配由数字、字母、下划线组成
\W
:匹配由非数字、非字母、非下划线组成逻辑表达式
?
:表示出现0次或1次
+
:表示出现1次或多次
*
:表示出现0次、1次或多次
{n}
:表示出现n次
{n,m}
:表示出现n-m次
{n,}
:表示出现n次或n次以上逻辑表达式
XY
:表示X后面跟着Y,X和Y都是正则表达式的一部分
X|Y
:表示X或Y
(X)
:子表达式,X是一个整体
// 注意:
cup|t 表示cut或cup
(cup)|t 表示cup或t
2.2、匹配类:Pattern
类 和Matcher
类
Pattern类和Matcher类是java提供来支持正则表达式的操作类。
- Pattern类:切割字符串、给Matcher类创建实例对象。
创建对象:Pattern p = Pattern.compile("a*b");
切割:String[] split(CharSequence input)
- Matcher类:验证和替换字符串
创建对象:Pattern p = Pattern.compile("a|b");
Matcher m = p.matcher("aabbc")
匹配:boolean matches();
替换:String replaceAll( newStr);
2.3、String类的匹配方法
在2.2节中说到的两个匹配类在实际开发中用的比较少,多数是直接用String类来实现的。
- 验证 :
boolean matches(String regex);
- 拆分 :
String[] split(String regex);
- 替换 :
String replace(String regex,String replacement);
参考资料:Java正则表达式的语法与示例