1.知识点
1.1java api中的类型
java开头的包—java标准库中的提供好的内容
Javax开头的包—java标准库中提供好的支持拓展的api内容—x表示拓展的意思
org开头的包—-是java标准库支持的第三方的api内容
1.2补充:
网站的结尾有很多的方式:
.com——————-国际顶级域名
.cn———————-中国的国家顶级域名
.com.cn—————国际顶级域名中的中国顶级域名
.org———————第三方非盈利组织的域名—如阿帕奇—apach
.net———————互联网机构的网站
.gov——————-政府类型的网站
2.API常用类
2.1Date类:
- 日期时间类:主要用于处理时间和日期的
- 计算机中的时间:
- 计算机的元年:1970年1月1号零时零分零秒—科学家定义的时间,用于定义计算机的时间,一个标记
- 所以说,在计算机中计算时间的时候都是从这个时间开始的
- 毫秒:1秒=1000毫秒
- 毫秒的作用:可以对时间和日期进行计算
- 世界时间:
- 获取的地方—英国的格林威治小镇,中国的时间获取—陕西
- 中国的时区在冬区:+8区,时间要比世界时间快8个小时
- 日期类:
- Date类是简单的一个操作日期的类,代表的是一个瞬间—-是一个动态值
- 以毫秒为单位,距离1970年1月1号零时零分零秒到现在的时间的毫秒值
- 处理这个值来实现年月日时分秒,星期,月份等等的获取
- Date类方法
A:构造方法:
public Date() //返回当前时间
public Date(long date) //返回指定毫秒值的日期对象
B:普通方法:
- public long getTime() //获取当前时间对象的毫秒值
public void setTime(long time) //设置时间毫秒值
2.1.1Date对象转换为String案例
DateFormat类是一个时间/日期格式类—抽象类,它语言无关的方式进行解析事件和日期
格式化的类—SimpleDateFormat—-是DateFormat的子类—-普通类,用于解析日期格式
- public final String format(Date date):将一个Date格式化为时间/日期的字符串
- 在创建SimpleDateFormat的时候,可以指定生成的的字符串的模板,规则可以查看api文档
- 模板是一个字符串,代表转换的规则,特殊的字母代表组成部分 ```java package com.igeek_02;
/**
- @author Lynn
- @create 2020-12-04-10:00 */
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date;
public class DateFormat2StringDemo { public static void main(String[] args) { //声明一个规则—字符串的模板—表示年月日时分秒 /**
* hh--表示12小时制的时间
* HH--表示24小时制的时间
*/
String rule="yyyy年MM月dd日 HH:mm:ss";
//使用格式化的类来操作
DateFormat format=new SimpleDateFormat(rule);
//准备转换的数据
Date d=new Date();
//转换
String dNow=format.format(d);
//打印
System.out.println(d);
System.out.println(dNow);
}
}
<a name="iCwKC"></a>
#### 2.1.2 String转换为Date对象
**public Date parse(String source)throws ParseException--需要抛出一个异常**
```java
package com.igeek_02;
/**
* @author Lynn
* @create 2020-12-04-10:15
*/
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* String转换为Date对象
* public Date parse(String source)throws ParseException--需要抛出一个异常
*/
public class String2DateFormatDemo {
public static void main(String[] args) throws ParseException {
//声明一个规则--字符串的模板--表示年月日时分秒
/**
* hh--表示12小时制的时间
* HH--表示24小时制的时间
*/
String rule="yyyy年MM月dd日 HH:mm:ss";
//使用格式化的类来操作--直接声明子类
SimpleDateFormat format=new SimpleDateFormat(rule);
//准备转换的数据
String sTime="2020年12月4日 10:19:50";
//转换
Date dTime=format.parse(sTime);
//打印
System.out.println(sTime);//2020年12月4日 10:19:50
System.out.println(dTime);//Fri Dec 04 10:19:50 CST 2020
}
}
2.2Calendar
Calendar:日历api
因为Date这个api有大批量的方法被java弃用了(过时),因为Date中的很多的方法
- 不能够完美的兼容世界的时间差
- Calendar类就替代了Date类
- Calendar类将各种时间的属性信息以字段的形式计算下来—可以将世界本地的时间信息做一个记录
- 语法:
- 创建Calendar类的时候,不使用构造函数,使用另一个实例化的方法,支持语言的敏感问题
- 静态方法:getInstance();
- 获取当前时间:Calendar now=Calendar.getInstance(); ```java package com.igeek_01;
/**
- @author Lynn
- @create 2020-12-04-10:26 */
import java.util.Calendar;
public class CalendarDemo { public static void main(String[] args) { //创建Calendar类 Calendar c=Calendar.getInstance(); System.out.println(c);//获取到的是具体的本地的时间信息
//获取值
int year=c.get(Calendar.YEAR);
System.out.println(year);
//月份需要+1
int month=c.get(Calendar.MONTH)+1;
System.out.println(month);
int day=c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//设置年月日
//月份-1--返回到系统的时间
c.set(2008,8-1,8);
System.out.println(c);
}
}
<a name="Ewrrr"></a>
### 2.3 Math
```java
package com.igeek_01;
/**
* @author Lynn
* @create 2020-12-04-11:08
*/
/**
* Math是一个数学工具类--静态的
* 直接通过类名来调用
*
* Math中的所有方法都是静态方法
*/
public class MathDemo {
public static void main(String[] args) {
//访问静态常量
System.out.println(Math.PI);
System.out.println(Math.E);
//访问静态方法
//求绝对值
System.out.println(Math.abs(-102));
System.out.println(Math.abs(0));
//向下和向上取整,四舍五入
//浮点数类型
System.out.println(Math.ceil(1.2));
System.out.println(Math.floor(1.9));
//四舍五入--整型
System.out.println(Math.round(1.8));
//求平方
//第一个参数是数字,第二个参数是幂
System.out.println(Math.pow(4,3));
//求平方根
//浮点型
System.out.println(Math.sqrt(100));
}
}
2.4 System
public static void exit(int status):让操作系统终止该java程序 0代表正常终止
public static void gc():暗示java虚拟机回收不使用的对象(垃圾)
public static String getProperty(String key) :查找制定的系统属性 , 系统属性参照API
/**
* @author Lynn
* @create 2020-12-04-11:19
*/
/**
* 系统类的api
* 包含了很多的系统信息--我们平时看不到,但是在系统中是不停运行的
*
* 字符:
* out:用于控制系统的输出
* in:用于控制系统的输入
*
* public static void exit(int status):让系统终止该java程序,0代表终止
* public static void gc():告知java虚拟机回收不使用的对象(垃圾)--没有被指向的对象
* public static void getProperty(String key):查找指定的系统属性,系统属性参考api
*/
public class SystemDemo {
public static void main(String[] args) {
//系统输出信息和错误输出
System.out.println("I Love java");
System.err.println("我就是个Bug");
//获取指定的系统
System.out.println(System.getProperty("os.name"));
System.gc();//没有直接回收对象,只是告知系统有回收的垃圾,然后系统会调用
//一个方法finalize(),这个方法执行之后才会正式回收垃圾
//终止java程序
System.exit(0);
//测试终止
System.out.println("能看到我吗");
}
}
3.包装类
基本包装类型:
- 基本包装类型是对象类型—-其实就是在基本类型的外层套上一个壳子,把基本类型封装成了
- 对象类型—目的是为了调用包装类型中的属性和方法
- java是一门oop的语言,八大基本类型是基本类型,在java中时bug的存在,以为八大基本类型使用
- 的非常频繁,所以java就保留了这个类型。
- 由于java是纯面向对象的编程语言,所以需要把基本类型包装成对象类型后才可以调用方法和属性-
- 符合面向对象的语法。
自动拆包装箱这个特性是jdk5.0推出的,包装类型是一直存在的
汇总包装类的转换:
- byte——-Byte
- short——Short
- int———Integer
- long——-Long
- float——Float
- double—-Double
- char——-Character
- boolean—Boolean
- 每一个基本类型包装成为对象类型后就有了自己的方法和属性的调用 ```java package com.igeek_baozhuanglei01;
/**
- @author Lynn
- @create 2020-12-07-9:23 */
import java.util.ArrayList;
public class PrimaryDemo { public static void main(String[] args) { //定义一个基本类型 int i=10; //将基本类型封装成包装类型—这个操作从jdk5.0开始就自动操作了 Integer ii=new Integer(i); //将包装类型拆箱为基本类型 int iii=ii.intValue(); System.out.println(iii);
//演示自动拆包装箱
Integer i1=200;
System.out.println(i1);
String s1="hello";
System.out.println(s1);
//集合可以直接保存基本类型--这个基本类型已经自动转换为包装类型
ArrayList<Integer> list=new ArrayList<>();
list.add(1);
/*list.add('a');
list.add(1.01);*/
/*//定义一个包装类型
Integer ii=new Integer(10);
//尝试调用方法和属性
System.out.println(ii.MAX_VALUE);
System.out.println(ii.MIN_VALUE);*/
}
}
<a name="f9O6f"></a>
# 4.正则表达式
正则表达式:
- 是一个第三方的规则,主要是用来匹配字符串的格式,**不是java中的内容**--
- 几乎所有的编程语言都会为正则表达式预留接口,用于支持正则表达式的使用
- <br />
- 具体的语法可以参阅文档,在平时使用中通常会去网上查找,正则表达式没有完美的,
- 其实就是一个匹配的规则
- <br />
- 网站:[http://tool.chinaz.com/regex/](http://tool.chinaz.com/regex/)
- 我们学习的要求是能够看懂并且做修改
- <br />
- 模拟写一个正则表达式:
- 步骤:
- 1.明确正确的匹配结果
- 2.利用正则表达式的语法去写
举例:
- QQ号:
- 要求:
- 1.QQ号长度
- 2.不能以0开头
- 3.只能是数字
- 结果分析:
- [1-9]([0-9]{5,11})
- [1-9]---以1-9数字开头
- ()用于分组
- [0-9]{5,11}---任何一个数字可以出现5-11次
- <br />
- 手机号码:
- 0?(13|14|15|17|18|19)[0-9]{9}
- 0?---出现一次或者0次
- (13|14|15|17|18|19)--分组--手机号的开头两个数字
- [0-9]{9}--从第三个数字开始就可以随便写,有9个数字
- <br />
- java中对正则表达式是支持的,regex--匹配字符串的规则
- <br />
- 这里使用方法是字符串中的:
- Boolean match(String regex):
- 被匹配的字符串调用的方法,接收正则表达式字符串,如果匹配则返回true,否则返回false
- <br />
- String[] split(String regex):
- 根据正则表达式的匹配来返回字符串类型的数组,如果符合就匹配为分隔符,讲一个完整地字符串
- 通过这些分隔符切割为不同的字符串
```java
package com.igeek_zhengze01;
/**
* @author Lynn
* @create 2020-12-07-10:21
*/
public class PegexDemo {
public static void main(String[] args) {
//验证手机号
String phone="15527590889";
//准备一个正则表达式
String regex="0?(13|14|15|17|18|19)[0-9]{9}";
//进行匹配
boolean flag=phone.matches(regex);
System.out.println(flag);
System.out.println("----------------------------------------");
String s="Lilei love Hanmeimei";
//准备一些规则
// String sRegex=",";//切割失败
// String sRegex="[ ,]";//匹配的是空格或者,--空格保留
String sRegex=" ";//根据空格切割--空格保留
// String sRegex=" +";//匹配一个或者多个空格--空格全部替换掉了
//尝试切割
String[] arr=s.split(sRegex);
//遍历数组
for (int i = 0; i < arr.length ; i++) {
System.out.println(arr[i]);
}
}
}