------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.Math类
1.针对数学运算进行操作的类
属于lang包,全静态,无构造方法.
2.常见方法
A:绝对值 public static int abs(int a)
B:向上取整 public static double ceil(double a)
C:向下取整 public static double floor(double a)
D:两个数据中的大值 public static int max(int a,int b)
E:a的b次幂 public static double pow(double a,double b)
F:随机数 public static double random()
G:四舍五入 public static int round(double a)
H:正平方根 public static double sqrt(double a)
二.Random类
1.用于产生伪随机数的类
2.构造方法:
A:Random() 随机种子,每次产生的随机数不同
B:Random(long seed) 指定种子,每次种子相同,随机数就相同
3.成员方法:
A:public int nextInt() 返回int范围内的随机数
B:public int nextInt(int n) 返回[0,n)范围内的随机数
练习题:求50-100之间的随机数
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
Random r= new Random();
for (int i = 0; i < 50; i++) {
int nextInt=r.nextInt(50);
if(nextInt==0){
nextInt += 50;
}else{
nextInt += 51;
}
System.out.println(nextInt);
}
}
}</span></strong></span>
三.System类
1.系统类
属于lang包,全静态,无构造方法,提供了一些有用的字段和方法
2.成员方法
A:运行垃圾回收器
public static void gc()
B:退出jvm
public static void exit(int status)
int值为0表示正常退出,为其他值表示异常退出
C:获取当前时间的毫秒值
public static long currentTimeMillis()
D:数组复制
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
练习:
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
public class Demo1 {
public static void main(String[] args) {
//获取当前时刻的毫秒值
long currentTimeMillis = System.currentTimeMillis();
System.out.println(currentTimeMillis);
//数组复制
int[] arr1={1,1,1,1,1};
int[] arr2={2,2,2,2,2};
System.arraycopy(arr1, 0, arr2, 2, 3);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]+" ");
}
//运行垃圾回收器
System.gc();
}
}
</span></strong></span>
四.BigInteger类
1.针对大型整数的运算
2.构造方法
A:BigInteger(String s)
3.成员方法
A:加 public BigInteger add(BigInteger val)
B:减 public BigInteger subtract(BigInteger val)
C:乘 public BigInteger multiply(BigInteger val)
D:除 public BigInteger divide(BigInteger val)
E:商和余数 public BigInteger[] divideAndRemainder(BigInteger val)
练习:
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
import java.math.BigInteger;
public class Demo2 {
/**
* public BigInteger[] divideAndRemainder(BigInteger val)
*/
public static void main(String[] args) {
//商和余数的运算
BigInteger bi= new BigInteger("25");
BigInteger bi2= new BigInteger("4");
BigInteger[] bi3= bi.divideAndRemainder(bi2);
for (int i = 0; i < bi3.length; i++) {
System.out.println(bi3[i]);
}
}
}
</span></strong></span>
五.BigDecimal类
1.浮点数据做运算,会丢失精度。java为我们提供了BigDecimal.
2.构造方法
A:BigDecimal(String s)
3.成员方法:
A:加 public BigDecimal add(BigDecimal augend)
B:减 public BigDecimal subtract(BigDecimal subtrahend)
C:乘 public BigDecimal multiply(BigDecimal multiplicand)
D:除 public BigDecimal divide(BigDecimal divisor)
练习:
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.day14;
import java.math.BigDecimal;
public class Big {
public static void main(String[] args) {
//定义BigDecimal值两个
BigDecimal bi = new BigDecimal("222222");
BigDecimal bigDecimal = new BigDecimal("111111");
//对BigDecimal进行加法操作
BigDecimal bigDecimal2 = bi.add(bigDecimal);
//对BigDecimal进行除法操作
BigDecimal bigDecimal3 = bi.divide(bigDecimal);
//对BigDecimal进行减法操作
BigDecimal bigDecimal4 = bi.subtract(bigDecimal);
//对BigDecimal进行乘法操作
BigDecimal bigDecimal5 = bi.multiply(bigDecimal);
//输出结果
System.out.println(bigDecimal2);
System.out.println(bigDecimal3);
System.out.println(bigDecimal4);
System.out.println(bigDecimal5);
}
}
</span></strong></span>
六.Date类与DateFormat类
1.Date是日期类,精确到毫秒.
毫秒代表的是距1970年1月1日00时00分00秒的时间.
A:构造方法
Date()
Date(long time)long time 为毫秒数
B:成员方法
public long getTime()
获取定义时间的毫秒数
public void setTime(long time)
设置毫秒值
C:日期和毫秒值的相互转换
a:Date>>long time
Date now =new Date();
long time1=now.getTime();
b:long time>>Date
直接通过构造方法
Date now =new Date(long time);
2.DateFormat是针对日期进行格式化和针对字符串进行解析的类,并且是抽象类
所以使用其子类SimpleDateFormat.
A:SimpleDateFormat(String pattern) 给定模式
yyyy-MM-dd HH:mm:ss
B:日期和字符串的转换
a:String -- Date
解析:parse(转换的意思)
//将一个字符串日期,转成一个Date日期
String date = "2014年09月25日 12时24分15";
DateFormat dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss");
Date parse = dateFormat2.parse(date);
System.out.println(parse);
b:Date -- String:
格式化:format("符合的日期格式")
//将一个Date日期,转成一个字符串日期
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String format = dateFormat.format(new Date());
System.out.println(format);
3.练习:
新中国成立多少天了?
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo4 {
/**
* 新中国成立多少天了?
*/
public static void main(String[] args) throws Throwable {
// 获取当下时刻的毫秒值
Date now = new Date();
long time = now.getTime();
// 获取1949年10月1日12:00:00的毫秒值,定义字符串
String str = "1949年10月01日12:00:00";
// 设置DateFormat格式,用他的子类SimpleDateFormat完成
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
// 通过dateFormat对字符串进行解析成为Date格式
Date date = dateFormat.parse(str);
// 获取新中国成立那天的毫秒值
long time2 = date.getTime();
// 将两者的毫秒值做差并转换为天数
long day = (time - time2) / 1000 / 60 / 60 / 24;
System.out.println("新中国已经成立" + day + "天了!");
}
}
</span></strong></span>
七.Calendar类
1.封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。
2.创建日历对象
因为Calendar类是抽象类,很多方法以及字段被定义为Protect,因此提供了一个
类方法getInstance,从而获取到Calendar的通用对象
Calendar rightNow = Calendar.getInstance();
本质返回的是子类对象
3.成员方法
A:根据日历字段得到对应的值
public int get(iCalendar.相应字段)
B:根据日历字段和一个正负数确定是添加还是减去对应日历字段的值
public abstract void add(int field,int amount)
C:设置日历对象的年月日
public final void set(int year, int month,int date)
4.练习
计算任意一年的2月份有多少天?
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
import java.util.Calendar;
public class Demo5 {
/**
* 任意一年的2月份有多少天
*/
public static void main(String[] args) {
// 首先创建Calender对象
Calendar now = Calendar.getInstance();
int year = 2016;
// 设置日历对象因为月份系统的取值只能到0-11,我们设置月份需要-1,我们设置3月为2
now.set(year, 2, 1);
// 通过3月1日后退一天得到二月最后一天
now.add(Calendar.DAY_OF_MONTH, -1);
// 通过get方法获取2月的天数
int i = now.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年的2月份有" + i + "天");
}
}
</span></strong></span>
八.正则表达式
1.含义:符合一定规则的字符串。
2.规则:
A:字符
x 字符 x
\\ 反斜线字符
\r 回车符
\n 换行符
B:字符类
[abc] a、b 或 c
[^abc] 任何字符,除了 a、b 或 c
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内
[0-9] 包括0-9之间的字符
C:预定义字符类
. 任何字符
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是指这里出现的不能使单词字符。
he;wor xixi
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
F:组的概念(按照小括号从左开始编号,每一个对应着一个组)
(a(b(c)d(e)))
第一组:a(b(c)d(e))
第二组:b(c)d(e)
第三组:c
第四组:e
可以通过编号来获取组中内容,组0表示整个表达式。
3.通过String类的功能使用正则表达式
A:判断功能
public boolean matches(String regex)
B:分割功能
public String[] split(String regex)
C:替换功能
public String replaceAll(String regex,String newString)
叠词:
在同一个字符串中,右边引用左边:"(.)\\1+"
在后一个字符串中引用前面的字符串的组内容:"(.)\\1+","$1"
4.正则常规方法使用步骤:
A:Pattern和Matcher
Pattern p = Pattern.compile("规则");
Matcher m = p.matcher("被匹配的字符串");
B:Matcher常用方法
public boolean matches() 匹配整个字符串
public boolean find() 判断是有有匹配到的字符串内容
public String group() 获取当前匹配到的字符串
public int start() 获取当前匹配到的字符串的最开始的索引
public int end() 获取当前匹配到的字符串的最后的索引
5.练习
叠词切割
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
public class Test2 {
/**
* 切割字符串"aa,bb,cc"
* 切割字符串"aa.bb.cc"
* 切割字符串"-1 99 4 23"
* 叠词切割:"sdqqfgkkkhjppppkl"
*/
public static void main(String[] args) {
// 定义字符串
String s="aa,bb,cc";
//定义切割规则
String regex = ",";
String[] string = s.split(regex);
for (int i = 0; i < string.length; i++) {
System.out.println(string[i]);
}
String s2="aa.bb.cc";
String regex2="\\.";
String[] string2=s2.split(regex2);
for (int i = 0; i < string2.length; i++) {
System.out.println(string2[i]);
}
String s3="-1 99 4 23";
String regex3= " +";
String[] string3=s3.split(regex3);
for (int i = 0; i < string3.length; i++) {
System.out.println(string3[i]);
}
String s4="sdqqfgkkkhjppppkl";
String regex4="(.)\\1+";
String[] string4=s4.split(regex4);
for (int i = 0; i < string4.length; i++) {
System.out.println(string4[i]);
}
}
}
</span></strong></span>
叠词替换
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
public class Test3 {
/**
* 用"#"替换叠:"sdaaafghccccjkqqqqql";
* 论坛中,凡是数字就使用"*"代替
* 用单个字符替换叠:"sdaaafghccccjkqqqqql";
*
*/
public static void main(String[] args) {
String s="sdaaafghccccjkqqqqql";
String regex="(.)\\1+";
String replaceAll = s.replaceAll(regex, "#");
System.out.println(replaceAll);
String s2="kffnkl204lfhk里的福利等哈可耗费i1929睡觉觉222kdkd";
String regex2="[0-9]";
String replaceAll2 = s2.replaceAll(regex2, "*");
System.out.println(replaceAll2);
String s3="sdaaafghccccjkqqqqql";
String regex3= "(.)\\1+";
String replaceAll3 = s3.replaceAll(regex, "$1");
System.out.println(replaceAll3);
}
}
</span></strong></span>
获取特定内容
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*String str = "da jia zhu yi le, ming tian bu fang jia, xie xie!";
想要获取3个字母组成的单词*/
public class Test4 {
public static void main(String[] args) {
//首先创建正则编译对象,并绑定规则
String regex="\\b[a-z]{3}\\b";
Pattern p= Pattern.compile(regex);
//组成匹配引擎
String s= "da jia zhu yi le, ming tian bu fang jia, xie xie!";
Matcher m=p.matcher(s);
//从匹配引擎中查找目标类型并输出
while(m.find()){
System.out.println(m.group());
}
}
}
</span></strong></span>