自動型別轉換
Byte → short → int long → float → double
比較運算子
==為比較,===恆等
邏輯運算子
&&針對布林值進行判斷,第一個表示式為false時,不判斷第二個,這種判斷方式通常被稱為“短路”,判斷整個表示式的方式被稱為“非短路”
按位運算子
按位與 &
若兩個整型數a.b對應位都是1,結果位才是1,如果兩個運算元精度不同,則結果的精度與精度高的運算元相同
按位或 |
如果兩個運算元對應位都是0,結果才為0,否則為1,精度不同時,結果的精度與精度高的運算元相同
按位取反 ~
也稱按位非,就是將運算元中0 1對調
按位異或 ^
當兩個運算元二進位制表示相同時結果為0,否則為1,精度不同時,結果的精度與精度高的運算元相同
移位操作
對資料按二進位制位進行移位操作,分以下三種
運算子 | 作用 |
---|---|
<< | 左移 |
>> | 右移 |
>>> | 無符號右移 |
適用於byte、short、char、int、long
作用
可以實現整數乘除2^n 的效果,例如:y<< 2與y*4的結果相同,y>>1的結果與y/2的結果相同,總之,一個數左移n位,就是這個數乘以2^n ,右移n位就是這個數除以2^n
三元運算子
格式
條件式?值a:值b
運算規則為條件式值為true時,整個表示式取值a,否則取值b
等價於三元運算子的if...else實現程式碼如下
boolean a;
if (20<45)
a = true;
else
a = false;
運算子優先順序
通常為
- 增量和減量運算
- 算術運算
- 比較運算
- 邏輯運算
- 賦值運算
運算子的優先順序
優先順序 | 描述 | 運算子 |
---|---|---|
1 | 括號 | () |
2 | 正負號 | + - |
3 | 一元運算子 | ++ -- ! |
4 | 乘除 | * / % |
5 | 加減 | + - |
6 | 移位運算 | << >> >>> |
7 | 比較大小 | < > >= <= |
8 | 比較是否相等 | == != |
9 | 按位與運算 | & |
10 | 按位異或運算 | ^ |
11 | 按位或運算 | | |
12 | 邏輯與運算 | && |
13 | 邏輯或運算 | || |
14 | 三元運算子 | ? : |
15 | 賦值運算子 | = |
資料型別轉換
隱式型別轉換
從低階型別向高階型別的轉換,按精度從低到高排列的順序為byte< short< int< long< float< double
顯式型別轉換
把高精度的變數的值賦給低精度的變數時,必須使用顯式型別轉換(強制型別轉換)
語法如下
(型別名)要轉換的值
實現程式碼
int a = (int)45.23; //45
long y = (long)456.6F; //456
int b = (int)'d'; //100
foreach語句
語法如下
for(元素變數x :遍歷物件 obj){
引用了x的java語句;
}
示例
public static void main(String[] args) {
int a[] = {7,10,20};
for (int x:a){
System.out.println(x);
}
}
輸出結果
7
10
20
String類
宣告字串
String str = [hello java]
常用構造方法
String(char a[]) 方法
用一個字元陣列a建立String物件
char a[] = {'g','o','o','d'};
String s = new String(a);
等價於
String s = new String("good")
String (char a[],int offset,int length)
提取字元陣列a中的一部分建立一個字串物件,引數offset表示開始擷取字串的位置,length表示擷取字串的長度
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a,2,4); //從第3個元素開始取4個元素
等價於
String s = new String ("uden");
String (char[] value)
分配一個新的String物件,使其表示字元陣列引數中所有元素連線的結果
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a);
等價於
String s = new String("student");
引用賦值
String str1;
str1 = "We are students"
連線字串
連線多個字串
public static void main(String[] args) {
String s1 = new String ("hello");
String s2 = new String ("world");
String s = s1 + " " + s2;
System.out.println(s);
}
輸出結果
hello world
連線其它資料型別
public static void main(String[] args) {
int time = 4;
float practice = 2.5f;
System.out.println("我每天花費"+time+"小時看書,"+practice+"小時練習,共"+(practice+time)+"小時。");
}
輸出結果
我每天花費4小時看書,2.5小時練習,共6.5小時。
獲取字串資訊
獲取字串長度
語句如下
str.length();
實現程式碼
public static void main(String[] args) {
String str = "We are students";
int size = str.length();
System.out.println(size);
}
輸出結果
15
字串查詢
indexOf()
返回的是搜尋的字元或字串首次出現的位置
語法
str.indexOf(substr)
沒有檢索到字串substr時返回-1
public static void main(String[] args) {
String str = "We are students";
int size = str.indexOf("s");
System.out.println(size);
}
返回結果
7
lastIndexOf()
返回的是搜尋的字元或字元最後一次出現的位置
沒有檢索到字串substr時返回-1
public static void main(String[] args) {
String str = "We are students";
int size = str.lastIndexOf("s");
System.out.println(size);
}
返回結果
14
獲取指定索引位置的字元
語法
str.cahrAt(int index)
public static void main(String[] args) {
String str = "hello world";
char mychar = str.charAt(6);
System.out.println(mychar);
}
輸出結果
w
字串操作
獲取子字串
substring (int beginIndex)
該方法返回的是從指定的索引位置開始擷取直到字串結尾的子串
語法
str.substring(int beginIndex)
public static void main(String[] args) {
String str = "Hello World";
String substr = str.substring(3);
System.out.println(substr);
}
輸出結果
lo World
substring (int beginIndex,endIndex)
該方法返回的是從字串某一索引位置開始擷取至某一索引位置結束的子串
語法
substring (int beginIndex,endIndex)
public static void main(String[] args) {
String str = "Hello World";
String substr = str.substring(3,9);
System.out.println(substr);
}
輸出結果
lo Wor
去除空格 trim()
返回字串的副本,忽略前導空格和尾部空格
語法
str.trim()
public static void main(String[] args) {
String str = " Java class ";
System.out.println("原字串"+str+"原長度"+str.length());
System.out.println("去空格後"+str.trim()+"去空格長度"+str.trim().length());
}
輸出結果
原字串 Java class 原長度18
去空格後Java class去空格長度12
字串替換 replace()
語法
str.replace(char oldChar,char newChar)
public static void main(String[] args) {
String str = "address";
String newstr = str.replace("a","A");
System.out.println(newstr);
}
輸出結果
Address
判斷字串的開始與結尾
startsWith()
用於判斷當前字串物件的字首是否是引數指定的字串
語法
str.startsWith(String prefix)
startsWith()
用於判斷當前字串物件的字首是否是以給定的字串結束
語法
str.endWith(String suffix)
public static void main(String[] args) {
String num1 = "22045612";
String num2 = "21304578";
boolean b1 = num1.startsWith("22");
boolean b2 = num1.endsWith("78");
boolean b3 = num2.startsWith("22");
boolean b4 = num2.endsWith("78");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
輸出結果
true
false
false
true
判斷字串是否相等
equals()
如果兩個字串具有相同的字元和長度,返回true,區分大小寫
語法
str.equals(String otherstr)
equalsIgnoreCase()
忽略大小寫
語法
str.equalsIgnoreCase(String otherstr)
public static void main(String[] args) {
String s1 = new String ("abc");
String s2 = new String ("ABC");
boolean b1 = s1.equals(s2);
boolean b2 = s1.equalsIgnoreCase(s2);
System.out.println(b1);
System.out.println(b2);
}
輸出結果
false
true
按字典順序比較字串compareTo()
該比較基於字串中各個字元的Unicode值,按字典順序將此String物件表示的字元序列與引數字串所表示的字元序列進行比較,如果按字典順序此Srting物件位於引數字串之前,則比較結果為一個負整數;如果按字典順序此String物件位於引數字串之後,則比較結果為一個正整數,如果兩個字串相等,結果為0
語法
str.compareTo(String otherstr)
public static void main(String[] args) {
String str1 = new String ("b");
String str2 = new String ("a");
String str3 = new String ("c");
String str4 = new String ("z");
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));
System.out.println(str1.compareTo(str4));
}
輸出結果
1
-1
-24
字母大小寫轉換
toLowerCase()
該方法將String轉換為小寫
語法
str.toLowerCase()
toUpperCase()
該方法將String轉換為大寫
語法
str.toUpperCase()
public static void main(String[] args) {
String str = new String ("abc DEF");
String newstr1 = str.toLowerCase();
String newstr2 = str.toUpperCase();
System.out.println(newstr1);
System.out.println(newstr2);
}
輸出結果
abc def
ABC DEF
字串分割 split()
split (String sign)
該方法可根據給定的分隔符對字串進行拆分
語法
str.split(String sign)
split (String sign,int limit)
該方法可根據給定的分隔符對字串進行拆分,並限制拆分次數
語法
str.split (String sign,int limit)
public static void main(String[] args) {
String str = new String ("abc,def,ghi,jkl");
String[] newstr = str.split(",");
System.out.println("第一次拆分");
for (int i = 0;i < newstr.length;i++){
System.out.println(newstr[i]);
}
String[] newstr2 = str.split(",",2);
System.out.println("第二次拆分");
for (int j = 0;j< newstr2.length;j++){
System.out.println(newstr2[j]);
}
}
輸出結果
第一次拆分
abc
def
ghi
jkl
第二次拆分
abc
def,ghi,jkl
格式化字串 format()
format (String fomat,Object...args)
語法
str.format(String format,Object...args)
format:格式字串
args:格式字串中由格式說明符引用的引數。如果還有格式說明符以外的引數,則忽略這些額外的引數。此引數數目可變,可以為0.
日期和時間字串格式化
日期格式化
例項
public static void main(String[] args) {
Date date = new Date();
String s = String.format("%te", date);
System.out.println(date);
System.out.println(s);
}
輸出結果
Tue Jul 11 14:33:38 CST 2017
11
常用的日期格式化轉換符
轉換符 | 說明 | 示例 |
---|---|---|
%te | 一個月中的某一天 | 11 |
%tb | 指定語言環境的月份簡稱 | Feb(英文)、二月(中文) |
%tB | 指定語言環境的月份全稱 | February(英文)、二月(中文) |
%ta | 指定語言環境的周幾簡稱 | Mon(英文)、星期一(中文) |
%tA | 指定語言環境的周幾全稱 | Monday(英文)、星期一(中文) |
%tc | 包括全部日期和時間資訊 | 星期二 七月 11 14:42:19 CST 2017 |
%tY | 四位年份 | 2017 |
%tj | 一年中的第幾天 | 192 |
%tm | 月份 | 07 |
%td | 一個月中的第幾天 | 11 |
%ty | 2位年份 | 17 |
時間格式化
時間格式化轉換符
轉換符 | 說明 | 示例 |
---|---|---|
%tH | 2位數字的24小時制的小時 | 15 |
%tI | 2位數字的12小時制的小時 | 03 |
%tk | 2位數字的24小時制的小時 | 15 |
%tl | 2位數字的12小時制的小時 | 3 |
%tM | 2位數字的分鐘 | 05 |
%tS | 2位數字的秒數 | 41 |
%tL | 3位數字的毫秒數 | 673 |
%tN | 9位數字的微秒數 | 520000000 |
%tp | 指定語言環境的上下午標記 | 下午(中文)、pm(英文) |
%tz | 相對於GMT RFC 82格式的數字時區偏移量 | +0800 |
%tZ | 時區縮寫形式的字串 | CST |
%ts | 1970-01-01 00:00:00到現在經過的秒數 | 1499756819 |
%tQ | 1970-01-01 00:00:00到現在經過的毫秒數 | 1499756833677 |
格式化常見的日期時間組合
常見的日期和時間