一、包(package)
- 對類文件進(jìn)行分類管理
- 給類提供多層命名(名稱)空間
- 寫在程序文件的第一行
- 類名的全稱是
包名.類名
1.定義包
package 包名;
2.包之間的訪問
包名.類名 d = new 包名.類名;
包與包之間的類進(jìn)行訪問锄码,被訪問的包中的類必須是public的,被訪問的包中的方法也必須是public的
3.權(quán)限
————————————————>
高……………………………………低
分類 | public | protected | default | private |
---|---|---|---|---|
同一類中 | 可以 | 可以 | 可以 | 可以 |
同一包中 | 可以 | 可以 | 可以 | |
子類中 | 可以 | 可以 | ||
不同包中 | 可以 |
default不是權(quán)限名稱晌涕,當(dāng)前面沒有寫的時(shí)候滋捶,才是默認(rèn)權(quán)限。
protected只能給不同包中的子類使用的渐排。
4.導(dǎo)入指定包中的類
import 包名.類名;
導(dǎo)入包之后不需要再進(jìn)行包與包之間的訪問炬太,直接用即可。
使用一個(gè)包中的多個(gè)類——>導(dǎo)入包中所有類
import 包名.*;
5.Jar
Jar:Java的壓縮包
二驯耻、包裝類
基本數(shù)據(jù)類型對象包裝類
1.基本數(shù)據(jù)類型:8種——byte亲族,short,int可缚,long霎迫,float, double帘靡,char知给,boolean
2.基本數(shù)據(jù)類型對象包裝類:就是把基本數(shù)據(jù)類型值包裝成對象,用于描述基本類型對象的類
3.特點(diǎn):
a)為了方便操作基本數(shù)據(jù)類型值
b)在對象中定義了屬性和行為豐富了該數(shù)據(jù)的操作。
ps:因?yàn)橛?個(gè)基本類型涩赢,所以有8個(gè)包裝類戈次。
數(shù)據(jù)類型及其所對應(yīng)的包裝類
基本數(shù)據(jù)類型 | 包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer 類
1.Integer 類:在對象中包裝了一個(gè)基本類型int的值
也就說
int num=4;
Integer i = new Integer(num);
可以直接將一個(gè)基本數(shù)值變成對象。
2.Integer類的方法
-
能在int類型和String類型之間相互轉(zhuǎn)換筒扒。
-
將字符串參數(shù)作為有符號的十進(jìn)制整數(shù)進(jìn)行解析
int parseInt(String s)
-
-
Integer小知識(shí)點(diǎn)
- Integer會(huì)自動(dòng)將字符串轉(zhuǎn)換成整數(shù)
- 在數(shù)字上比較兩個(gè)Integer的值
int compareTo(Integer anotherInteger);
3.包裝的作用
該包裝對象主要用基本類型和字符串之間的轉(zhuǎn)換
基本類型----->字符串
1.基本數(shù)據(jù)類型+""
2.用String類中的靜態(tài)方法valueOf(基本類型數(shù)值)
3.用Integer的靜態(tài)方法valueOf(基本類型數(shù)值)-
字符串----->基本類型
1.使用包裝類中的靜態(tài)方法
xxx parseXxx("xxx類型的字符串")
只有character沒有怯邪,因?yàn)閏haracter封裝的就是一個(gè)字符
eg:int parseInt("intstring");
long parselnt("longstring");
boolean parseboolean("booleanstring");-
2.如果字符串被Integer進(jìn)行對象的封裝。
可使用另一個(gè)非靜態(tài)的方法花墩,intValue();
將一個(gè)Integer對象轉(zhuǎn)成基本數(shù)據(jù)類型值悬秉。
4.進(jìn)制轉(zhuǎn)換
Integer類具備不同的進(jìn)制體現(xiàn)
- 十進(jìn)制--->其他進(jìn)制
String toBinaryString(int i);//將十進(jìn)制轉(zhuǎn)二進(jìn)制
String toOctalString(int i);//將十進(jìn)制轉(zhuǎn)八進(jìn)制
String toHexString(int i);//將十進(jìn)制轉(zhuǎn)十六進(jìn)制
String toString(int i,int radix);//將十進(jìn)制轉(zhuǎn)成任意進(jìn)制
- 其他進(jìn)制--->十進(jìn)制
int parseInt("string", radix);
`5.自動(dòng)裝箱拆箱
自動(dòng)裝箱拆箱就是簡化書寫
舉個(gè)栗子說明
int num = 4;
num = num + 5;
Integer i = 4;//自動(dòng)裝箱,等價(jià)于:i = new Integer(4);
i = i + 6;//自動(dòng)拆箱冰蘑,等價(jià)于: i = new Integer(i.intValue()+6);
//也等價(jià)于:i.intValue();
但是有一個(gè)弊端和泌,就是當(dāng)數(shù)值為null時(shí),會(huì)有異常
自動(dòng)裝箱和拆箱和之前寫法的區(qū)別
自動(dòng)裝箱如果是一個(gè)字節(jié)祠肥,那么該數(shù)據(jù)會(huì)被共享武氓,不會(huì)新開辟空間
來個(gè)大栗子消化一下
題目:
對一個(gè)字符串中的數(shù)值進(jìn)行從小到大的排序
"20 78 9 -7 88 36 29"
代碼:
import java.util.Arrays;
/*
* 對一個(gè)字符串中的數(shù)值進(jìn)行從小到大的排序
* "20 78 9 -7 88 36 29"
*
* 思路:
* 1.排序
* 2.獲取字符串中需要排序的數(shù)值
* 3.用字符串的切割方法將數(shù)值取出來放進(jìn)數(shù)組
* 4.字符串--->基本類型
* */
public class WrapperPractise {
public static void main(String[] args) {
String num = "20 78 9 -7 88 36 29";
System.out.println(num);//排之前
num = sortStringNumber(num);
System.out.println(num);//排之后
}
public static String sortStringNumber(String num) {
//1.將字符串變成字符串?dāng)?shù)組
String[] str_arr = num.split(" ");
//2.將字符串?dāng)?shù)組變成int數(shù)組
int[] num_arr = toIntArry(str_arr);
//3.對int數(shù)組排序
mySortArry(num_arr);
//4.將排序后的int數(shù)組變成字符串
String temp = arrayToString(num_arr);
return temp;
}
public static String arrayToString(int[] num_arr) {
StringBuilder sb = new StringBuilder();
for (int x = 0; x < num_arr.length; x++) {
if(x!=num_arr.length-1)
sb.append(num_arr[x]+" ");
else
sb.append(num_arr[x]);
}
return sb.toString();
}
public static void mySortArry(int[] num_arr) {
Arrays.sort(num_arr);
}
public static int[] toIntArry(String[] str_arr) {
int[] arr = new int[str_arr.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(str_arr[i]);
}
return arr;
}
}