实用类
只要掌握API文档的应用
包
类似于操作系统重的文件夹,主要用来存放Java类的。如果没有包,把所有的类放到一个文件夹中。
如果不使用包,缺陷有两处:
-
类多了不易管理
-
不能有两个名字相同的类
包的关键字
package
包的作用
-
简化了Java类
-
不同的包中,Java类名可以相同
包的命名规范
单个单词全小写,多个单词,用点(.)隔开,域名的反写(例如:com.baidu.service)
com.yb.dao:持久层代码
com.yb.impl:持久层dao的实现类
com.yb.view:表示层代码
com.yb.biz.student:student模块的业务层代码
com.yb.biz.teacher:teacher模块的业务层代码
com.yb.vo(pojo/entity):代码重的实现类(封装类)
com.yb.tools:本项目所需要的工具类
Java常用包
java.lang:Java核心包(默认)
java.util:系统工具包
java.io:Java输入/输出包
java.lang.reflect:Java反射引用包
java.net:Java网络应用包
java.sql:JDBC操作应用包
导包操作:4种,会其中一种即可(eclipse为例)
-
写出包的部分首字母,快捷键alt+/
-
完整的包名.类名 形式
-
写全类名的形式,用鼠标进行导包
-
批量导包(ctrl+shift+o)
实用类的应用
枚举类:一一例举
一般来说,枚举需要大写,中间用逗号隔开,最后一个没有逗号
public enum WEEK {
Mon,Tus,Wed,Thu,Fri,Sat,Sun
}
实现
public static void choose(WEEK week){
switch (week){
case Mon:
case Tus:
case Wed:
case Thu:
case Fri:
System.out.println("工作日,敲代码");
break;
case Sat:
case Sun:
System.out.println("休息");
break;
}
}
public static void main(String[] args) {
choose(WEEK.Mon);
}
包装类
概念
基本数据类型对应的引用类型
基本类型 | 包装类 | |
---|---|---|
整型 | byte,short,int,long | Byte,Short,Integer,Long |
浮点型 | float,double | Float,Double |
字符型 | char | Character |
布尔型 | boolean | Boolean |
拆箱装箱
装箱:基本数据类型转换为对应的包装类
拆线:包装类转换为对应的基本数据类型
注意:不存在强转,装箱拆箱都是自动的
Character类的应用
方法 | 描述 |
---|---|
charValue() | 返回此 Character对象的值。 |
equals(Object obj) | 将此对象与指定对象比较。 |
isDigit(char ch) | 确定指定字符是否为数字。 |
isLetter(char ch) | 确定指定字符(Unicode 代码点)是否为字母。 |
isLowerCase(char ch | 确定指定字符是否为小写字母。 |
isUpperCase(char ch) | 确定指定字符是否为大写字母。 |
toChars(int codePoint) | 将指定的字符(Unicode 代码点)转换成其存储在 char 数组中的 UTF-16 表示形式。 |
toLowerCase(char ch) | 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。 |
toUpperCase(char ch) | 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。 |
valueOf(char c) | 返回一个表示指定 char 值的 Character 实例。 |
String类:线程安全,长度不可变
代表字符串
基本类型与String的转换
String str = "123aaa";
System.out.println(str.valueOf(5).getClass());
System.out.println();
System.out.println(Integer.parseInt(str)+1);
Byte bnum = Byte.valueOf(str);
Short snum = Short.valueOf(str);
System.out.println(Integer.parseInt(str)+1);
String s = "a324";
字符串分割
String str = "长亭外 古道边 芳草碧连天 晚风拂 柳笛残声 夕阳山外山";
String [] s1 = str.split(" ");
for (int i = 0; i < s1.length; i++) {
System.out.println(s1[i]);
}
替换指定字符串
public static void main(String[] args) {
String [] s = "公安,示威,分裂,独立,民主".split(",");
String str = "中国是一个民主发达的国家,在这里生活的人不会像美国一样遭遇示威活动,页不存在独立游行,我为生在中国而自豪";
for (int i = 0; i < s.length; i++) {
str = str.replace(s[i], "**");
}
System.out.println(str);
}
StringBuffer类:线程安全,长度可变
例题:在一段数字种,从最后一位开始,每隔三位,插入一个“,”
StringBuffer sb = new StringBuffer("1351312897");
for (int i = sb.length()-3; i > 0; i-=3) {
sb.insert(i,",");
}
System.out.println(sb);
StringBuilder:线程不安全,长度可变
System类
1 字段
err:“标准”错误输出流
out:“标准”输出流
in:“标准”输入流
2 方法
方法名 | 作用 |
---|---|
exit(int status) | 终止当前正在运行的 Java 虚拟机。 |
gc() | 运行垃圾回收器。 |
currentTimeMillis() | 返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。 |
日期操作类
Date类
Date date = new Date();
int year = date.getYear()+1900;
int month = date.getMonth()+1;
int day = date.getDate();
int hour = date.getHours();
int minutes = date.getMinutes();
int seconds = date.getSeconds();
long hm = date.getTime();
System.out.println("下:"+year+"年"+month+"月"+day+"日 "+hour+":"+minutes+":"+seconds);
System.out.println(hm);
Calandar类
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DATE);
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int mm = c.get(Calendar.MILLISECOND); // 每秒的当前毫秒值
long hm = c.getTimeInMillis(); // 返回1970年到目前的毫秒数
int d = c.get(Calendar.DAY_OF_WEEK);
System.out.println(d);
dateFormat类
SimpleDateFormat类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd k:mm:ss"); // 格式化标准
Date date = new Date();
String d = sdf.format(date);
System.out.println(d);
DecimalFormat类
实例化时格式化
DecimalFormat df1 = new DecimalFormat("#,###.###");
String s1 = df1.format(21314.21356); System.out.println(s1);//21,314.214
DecimalFormat df2 = new DecimalFormat("0,000.000");
String s2 = df2.format(32456.32);
System.out.println(s2); //32,456.320
DecimalFormat df3 = new DecimalFormat("#,###.000"); String s3 = df3.format(213456.34);
System.out.println(s3); //213,456.340
自定义类格式化
public void format(String pattern,double value) {
DecimalFormat df = null;
df = new DecimalFormat(pattern);
String str = df.format(value);
System.out.println(str);
}
Demo dd = new Demo();
dd.format("0,000.000", 34498574397.43524);
Math类
1 字段
E
PI
2 方法
方法名 | 作用 |
---|---|
abs(int a) | 返回 int 值的绝对值。 |
ceil(double a) | 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 |
floor(double a) | 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 |
max(int a, int b | 返回两个 int 值中较大的一个。 |
min(int a, int b) | 返回两个 int 值中较小的一个。 |
pow(double a, double b) | 返回第一个参数的第二个参数次幂的值。 |
random() | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 |
rint(double a) | 返回最接近参数并等于某一整数的 double 值。 |
round(double a) | 返回最接近参数的 long 。 |
sqrt(double a) | 返回正确舍入的 double 值的正平方根。 |
System.out.println(Math.pow(5, 3)); //5的3次方 125.0
System.out.println(Math.sqrt(36)); //36的平方根 6.0
System.out.println((int)(Math.random()*(10000-1000)+1000)); //求1000-10000的随机数
System.out.println(Math.round(6.49)); // 四舍五入(小数点后一位)
System.out.println(Math.rint(6.5)); // 接近参数并等于某一整数的 double 值(当小数点后一位为5时,符合奇变偶不变) //输出7.0
System.out.println(Math.rint(5.5)); //输出6.0
正则表达式
概念
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
常用匹配模式
-
只允许英文字母、数字、下划线、英文句号以及中划线组成:^[a-zA-Z0-9-]+@[a-zA-Z0-9-]+(.[a-zA-Z0-9_-]+)+$
String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
String email = "ybybyb6-1206@gmail.com";
System.out.println(email.matches(regex)); //true -
名称允许汉字、字母、数字,域名只允许英文域名:^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)+$
String regex = "^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
String email = "好人1206ybybyb6@lenovo.com.cn";
System.out.println(email.matches(regex)); //true