Java基础小记
一、數據類型轉換
?
1、引用數據類型
包裝類型:Byte、Short、Long、Integer、Character、Float、Double、Boolean
2、基本類型與包裝類轉換
Java里有8種包裝類,分別對應8種基本數據類型
基本數據類型是值類型,包裝類是引用數據類型
① 基本數據類型轉成包裝類型,即值類型轉成引用數據類型成為裝箱
int m=20;
Integer num2=new Integer(m);
?
boolean b1=false;
Boolean bool3=new Boolean(b1);
② 包裝類型轉成基本數據類型,即引用數據類型轉成值類型成為拆箱
Integer num=new Integer(10);
//可以通過.語法來調用對象的方法
//intValue是要獲取對象的int型的值
int n=num.intValue();
?
Boolean bool=new Boolean(true);
boolean bool2=bool.booleanValue();
?
Double d=new Double(2.244);
double d1=d.doubleValue();
3、字符串與基本類型轉換
① 字符串轉成基本數據類型
String s="36";
//***包裝類對象.parse***(參數)方法
//是將字符串轉成基本數據類型***
int n2=Integer.parseInt(s); //轉換成int型
?
double d2=Double.parseDouble(s); //轉換成double型
?
String f="1.2f";
float f2=Float.parseFloat(f); //轉換成float型
② 基本數據類型轉換成字符串
String s=String.valueOf(123);
String s=Integer.toString(123);
String s=123+"";
?
二、分支與循環
1、順序結構
2、選擇結構
① 順序選擇(單個條件和多個條件)
if(條件){
}else if(條件2){
}else{
}
② 嵌套if選擇結構
③ switch選擇結構:
switch(表達式){
case(常量1):
語句1;
break; //跳出
case(常量2):
語句2;
break;
default:
語句3;
break;
}
if與switch的聯系與區別:
* switch和if-else相比,由于使用了優化算法(Binary Tree),絕大部分情況下switch會快一點,除非是if-else的而第一個條件就為 true
* 等值分支使用switch
3、循環結構(while,for,do while,foreach語句)
(1) while循環
特點:先判斷,再執行
while(循環條件){
循環操作
}
(2) do while (選擇是否要先執行一次:while/do while)
特點:先執行(最少執行一次),再判斷
do{
循環操作
}while(循環條件);
(3) for循環:先判斷,再執行(已知循環次數)
for(表達式1;表達式2;表達式3){
循環操作;
}
?for(參數初始化;條件判斷;更新循環變量){
循環操作;(循環體被執行)
}
執行順序:參數初始化--->條件判斷--->循環操作--->更新循環變量
?
三、 數組
1、定義
(1) 數組是一組變量集合,存儲相同數據類型的一組數據
數組:在內存中開辟的一串用于存儲相同數據類型的連續空間!!
(2)?數組名:表示連續空間的首地址,通過地址可以依次訪問數組所有元素。
(3)下標:元素在數組中的排序叫做下標,從0開始。
(4)?數組長度一旦聲明,將不可改變,不可追加。
2、數組名:即標識符,連續空間的首地址
匈牙利命名法(所有字母都小寫)
3、數組的聲明
1)明數組:int[] arr; 或? int arr[];? //聲明一個int類型的數組
2)給數組分配空間:arr=new int[5];
Exception---數組下標越界(運行錯誤)
3)給數組賦值:
① arr[0]=1;
② 使用循給數組賦值
4)訪問數組數據:使用數組下標訪問
? [數組聲明縮寫]
*? int[] arr={1,2,3,4,5}; ? //自動分配五個空間
*? int[] arr=new int[]{1,2,3,4,5};? //new int[]的[]一定不能放內存大小?
5、基本數據類型和引用數據類型
1)基本數據類型:聲明時直接在棧內中開辟空間,并直接在當前空間中存放數據;
賦值時傳遞的是變量中的值。
基本數據類型是傳值的
2)引用數據類型:聲明引用數據類型(數組或對象),會將實際的數據存放在堆內存中。
同時,在棧內存中聲明一個數組名或對象名,存放著在堆內存中的首地址;
所以,當使用數組名賦值時,傳遞的是地址。
引用數據類型是傳地址(引用)的。
?
四、Arrays工具類
Array工具類是Java中提供的用于操作數組的工具類,位于java.util包中。
1、Arrays.equals(arr1, arr2):接受兩個數組,返回兩個數組是否向相等
比較的原理是,逐一比對兩個數組中的每一個值,是否相等。
int[] arr1={1,2,3,4,5};
int[] arr2={1,2,0,4,5};
System.out.println(Arrays.equals(arr1, arr2)); 輸出:false
而如果使用==判斷,是比較兩個數組名中存儲的地址,是否相等。
int[] arr1={1,2,3,4,5};
int[] arr2={1,2,3,4,5};
System.out.println(Arrays.equals(arr1, arr2)); 輸出:false
int[] arr1={1,2,3,4,5};
int[] arr2=arr1;
System.out.println(Arrays.equals(arr1, arr2)); 輸出:true
2、Arrays.sort(arr):對數組進行升序排列,會直接改變原數組的排序。
Arrays.sort(arr,3,6):對數組的指定區域進行排序,左閉右開區間,包含其實下標,不含結束下標;
int[] arr={1,5,2,9,4,3,6,0,2,6,7};
Arrays.sort(arr);
Arrays.sort(arr,3,6); //左閉右開
System.out.println(Arrays.toString(arr));
3、Arrays.toString(arr): 將數組轉成字符串,轉換之后的格式:[1,2,3,4]
4、Arrays.fill(arr, 12): 將數組的每一項,都賦值為指定的數值
int[] arr=new int[10];
Arrays.fill(arr, 12);
System.out.println(Arrays.toString(arr));
5、Arrays.copyOf(arr, 50):將arr數組的指定個數,copy到一個新的數組;
如果個數>arr.length 則新數組中多余的位置用默認值補齊;
如果個數<arr.length 則只copy原數組的前半部分。
int[] arr={1,2,3,4,5,6,7,8,9};
int[] newArr=Arrays.copyOf(arr, arr.length); //copy整個數組
int[] newArr=Arrays.copyOf(arr, 50); //copy前50個元素
System.out.println(Arrays.toString(newArr));
6、Arrays.binarySearch(arr, 4) : 查找數組中的指定元素,如果找到返回下標,沒有找到返回負數;
使用這個方法,原數組必須是有序的,可以先使用Arrays.sort(arr);進行排序
int[] arr={1,2,3,4,5,6};
Arrays.sort(arr);
System.out.println(Arrays.binarySearch(arr, 4));
?
五、字符串
(一) String類
1、String類位于java.lang包中,java.lang包是Java的語言包,使用時無需導包,自動導入。
2、拿到一個字符串對象:
① 字面量聲明:String s="好好學習";
② new關鍵字聲明:String s1=new String("好好學習");
3、s.length(): 返回字符串的長度,length()是一個方法,使用時注意不能掉() (arr.length是屬性)
System.out.println("請輸入用戶名:");
String s=in.next();
if(s.length()<6){// s.length()是方法
System.out.println("用戶名最小為6位!");
}
4、s1.equals(s2): 判斷字符串是否相等
? .equals()的比對原理,是判斷兩個字符串的每一個字符是否相等;
?== 的比對原理,是判斷兩個字符串中存儲的地址是否相等。
5、s1.equalsIgnoreCase(s2): 忽略大小寫對比;
.toLowerCase(): 將所有字符都轉化為小寫;
.toUpperCase(): 將所有字符都轉化為大寫;
String s1="JH";
String s2="jh";
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.toLowerCase());
System.out.println(s2.toUpperCase());
6、連接字符串:
① 使用+號連接;
② 使用s.concat(s2)連接,將s2連接到s1的后面,并返回一個新的字符串
String s="好好學習";
String s1=s.concat("天天向上");
System.out.println(s1);
7、① .indexOf(): 在字符串中查找指定的字符或子串 第一次出現的位置,并返回其下標,如果沒有找到返 回-1;
可以接受字符串、字符、整數類型的參數,如果傳入整數,將根據ASCII碼自動轉化為字符(A-65,a-?? 97)。
② .lastIndexOf(): 在字符串中查找指定的字符或子串 最后一次出現的位置,并返回其下標,如果沒有找到返回-1;
String s="abcdedfg";
System.out.println(s.indexOf("cde"));
System.out.println(s.indexOf(100));//查找d
System.out.println(s.lastIndexOf(100));
8、.substring(): 截取字符串的指定位置,返回一個新的子串;
① 傳入一個參數,表示起始下標,將從此下標開始,一直截到字符串最后;
② 傳入兩個參數,表示起始下標和結束下標,為左閉右開區間,包含起始,不含結束
String s="abcdefg";
System.out.println(s.substring(3));
System.out.println(s.substring(3,5));
9、 .trim(): 去掉字符串兩端的空格
String s="?? abc def gh? ";
System.out.println(s);
System.out.println(s.trim());
10、s.replace("a","*"): 將字符串中的指定區域,用 新的字符串替換掉
System.out.println(s.replace("a","*"));
11、 .split();
① .split(""): 傳入指定字符,將字符串分割為多個子串,返回一個字符串類型的數組;
? 如果傳入一個空字符串,則將原來字符串的每一個字符串都進行分割。
String s="haha haha haha";
String[] arr=s.split("");
? ② .split(" ",30): 第二個參數,可以傳入一個整數,表示將當前字符串分為幾部分;
? ?如果傳入的整數,小于原來分割的總部分,則剩余的區域將不再分割。
String[] arr=s.split(" ",2);
System.out.println(Arrays.toString(arr));
?
(二) StringBuffer 類
1、StringBuffer是String的增強版,位于java.lang包中;
2、StringBuffer與String的最大區別在于:StringBuffer是可變可追加的;
而String一旦聲明不可改變,不能插入;
StringBuffer sb=new StringBuffer("好好學習");
3、.toString(): 將StringBuffer類型,轉換成String類型;
但在輸出時,可以不用轉換,將自動進行轉換。
String s=sb.toString();
System.out.println(sb); //相當于調用了.toString()方法
4、.append(): 在原字符串的最后追加新的字符。
① 原字符串會被直接改變;同時還會將追加的字符串返回;
② append可以接受各種類型的參數,會自動轉換成字符串后追加到原字符串最后。
char[] c={'a','b','c','d'};
StringBuffer sb1=sb.append(c);
System.out.println(sb);
System.out.println(sb1);
?
StringBuffer sb2=sb.append("天天向上");
System.out.println(sb2);
5、 .delete():傳入兩個下標,表示刪除這兩個下標之間的字符,左閉右開區間
StringBuffer s=sb.delete(0, 2);
? .deleteCharAt(2): 傳入一個下標,刪除指定位置的一個字符。
StringBuffer s=sb.deleteCharAt(2);
6、 .insert():在原字符串的指定下標位置插入
StringBuffer s=sb.insert(3,"好");
?
?
轉載于:https://www.cnblogs.com/zyp777/p/8687697.html
總結
- 上一篇: maven的Windows环境下安装配置
- 下一篇: Hibernate day01