1.進程和線程的區(qū)別
進程是資源分配的最小單位, 程序執(zhí)行時的一個實例.
線程是應用的最小的單位. 是程序執(zhí)行的最小單位.
一個應用可以有一個或兩進程,
同一進程下的線程共享全局變量、靜態(tài)變量等數(shù)據(jù)
2.序列化Serializable 和Parcelable 的區(qū)別
(1).Serializable
Java自帶 將一個對象轉換成可存儲可傳輸?shù)臓顟B(tài),
public class Person implements Serializable{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)Parcelable
android 自帶 和Serializable有相同效果,將一個完整的對象進行分解.
分解后的每一部分都是Intent所支持的數(shù)據(jù)類型,這樣也就實現(xiàn)傳遞對象的功能了
public class Data implements Parcelable{
private String color;
private int size;
protected Data(Parcel in) {
color = in.readString();
size = in.readInt();
}
public static final Creator<Data> CREATOR = new Creator<Data>() {
@Override
public Data createFromParcel(Parcel in) {
return new Data(in);
}
@Override
public Data[] newArray(int size) {
return new Data[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(color);
dest.writeInt(size);
}
}
系統(tǒng)已經(jīng)幫我們做了很多事情,我們只需要做的很簡單,寫自己需要的構造方法,變量的get和set
如
blic class Data implements Parcelable{
private String color;
private int size;
//get和set
//個人自己添加
public Data() {
}
//個人自己添加
public Data(String color, int size) {
this.color = color;
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
// 系統(tǒng)自動添加,給createFromParcel里面用
protected Data(Parcel in) {
color = in.readString();
size = in.readInt();
}
public static final Creator<Data> CREATOR = new Creator<Data>() {
/**
*
* @param in
* @return
* createFromParcel()方法中我們要去讀取剛才寫出的name和age字段,
* 并創(chuàng)建一個Person對象進行返回,其中color和size都是調用Parcel的readXxx()方法讀取到的,
* 注意這里讀取的順序一定要和剛才寫出的順序完全相同。
* 讀取的工作我們利用一個構造函數(shù)幫我們完成了
*/
@Override
public Data createFromParcel(Parcel in) {
return new Data(in); // 在構造函數(shù)里面完成了 讀取 的工作
}
//供反序列化本類數(shù)組時調用的
@Override
public Data[] newArray(int size) {
return new Data[size];
}
};
@Override
public int describeContents() {
return 0; // 內容接口描述,默認返回0即可。
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(color); // 寫出 color
dest.writeInt(size); // 寫出 size
}
}
使用時機
1.在使用內存的時候,Parcelable比Serializable性能高,所以推薦使用Parcelable。
2.Serializable在序列化的時候會產(chǎn)生大量的臨時變量,從而引起頻繁的GC。
3.如果要存儲到磁盤.需要使用Serializable,原因,Parcelable不能很好的保證數(shù)據(jù)的持續(xù)性.
3.談談對kotlin的理解
-1.可以無縫對接java,互相可以調用
-2.不用聲明類型
-3.空安全
-4.數(shù)據(jù)對象實體類的創(chuàng)建,不再需要手動創(chuàng)建set或get方法
-5. 控件無需聲明,直接通過控件id調用.
4.閉包和局部內部類的區(qū)別
-1. 閉包:方法中的局部變量會在執(zhí)行結束后就會被釋放,但是內部類訪問此變量就形成了閉包
public class method(){
int i=30;
//局部內部類將輸出這個局部變量
class innerClass{
public void getInt(){
System.out.println(i);
}
}
}
-1.成員內部類:
(1)訪問 外部類所以靜態(tài),非靜態(tài)成員
public class Person {
private static int hairLength = 5;
private int manAge = 18;
public class Man {
public int setHair() {
return hairLength;
}
public int setAge() {
return manAge;
}
}
}
(2)被訪問
Person person = new Person();
Person.Man man = person.new Man();
Log.i("log", "" + man.setAge());
Log.i("log", "" + man.setHair());
-2. 靜態(tài)內部類:
(1)訪問:可訪問外部類的靜態(tài) 成員, 不可非靜態(tài)成員
public class Person {
private static int hairLength = 5;
private int manAge = 18;
public static class Woman{
public int setHair() {
return hairLength;
}
}}
}
(2)被訪問 訪問非靜態(tài)類,需要創(chuàng)建一個外部類實例. 訪問靜態(tài)n類,使用內部類類名訪問內部類的靜態(tài)成員。
Person.Woman woman = new Person.Woman();
woman.setHair();
-3. 局部內部類:
(1)訪問 外部類所以靜態(tài),非靜態(tài)成員
public class Person {
private static int hairLength = 5;
private int manAge = 18;
public void getChild(){
class child{
public void name(){
Log.i("log",""+manAge);
Log.i("log",""+hairLength);
}
}
new child().name();
}
}
(2)調用
Person person = new Person();
person.getChild();
-4. 匿名內部類:
public interface Person {
// private static int hairLength = 5;
// private int manAge = 18;
public void run();
}
Person person = new Person(){
@Override
public void run() {
}
};
下一節(jié)[集合]