------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>