接口實現(xiàn)回調(diào) 代理設計模式 數(shù)組
目的
1.掌握使用接口實現(xiàn)回調(diào)的方法
2.了解數(shù)組的各種方法命咐,以便在編寫程序過程中可以靈活使用
技術
1.創(chuàng)建一個簡易的閱讀界面甚纲,跳轉(zhuǎn)到設置界面設置字體顏色及大小后返回給界面
2.用接口實現(xiàn)回調(diào)方式
3.不可變數(shù)組String中常用方法
4.可變數(shù)組StringBuilder中常用方法
技術實現(xiàn)
1.普通回調(diào)方式
- 閱讀界面
/**
* 閱讀界面 展示顯示的文本
*/
public class Read {
private String text;
private String color; //默認的顏色
private int size; //默認的字體大小
public Read(String text){
this.text = text;
}
//模擬進入設置頁面
public void goToSetting(){
//1.創(chuàng)建設置頁面的對象
Setting setting = new Setting(this);
//2.推送到這是頁面
setting.startSetting();
}
//提供給外部一個方法 可以通過這個方法給我傳值
public void change(String color,int size){
System.out.println("改變前的顏色:"+this.color+" 大兴住:"+this.size);
this.color = color;
this.size = size;
System.out.println("改變后的顏色:"+this.color+" 大小:"+this.size);
}
}
- 設置界面
**
* 設置頁面 設置字體大小和顏色
*/
public class Setting {
//記錄為誰設置顏色和大小 記錄下做完事情之后 將數(shù)據(jù)返回給誰
Read r1;
//創(chuàng)建對象的時候 就需要告訴我 你是誰
public Setting(Read r1){
this.r1 = r1;
}
//開始設置
public void startSetting(){
System.out.println("開始設置");
System.out.println(".........");
System.out.println("設置完畢 即將返回結(jié)果");
//如果有可以訪問的屬性 直接通過屬性給值
//比較少用 對象沒辦法第一時間知道自己需要的值有了
// r1.color = "紅色";
// r1.size = 18;
//通過方法來回調(diào)
r1.change("黑色",29);
}
}
- 主函數(shù)
public static void main(String [] args){
Read read = new Read("text");
read.goToSetting();
}
-
運行結(jié)果QQ圖片20190813184831.png
2.接口實現(xiàn)回調(diào)
- 設置界面
public class Setting {
// Read r1;
// Chat c1;
// public Setting(Read r1){
// this.r1 = r1;
// }
// public Setting(Chat c1){
// this.c1 = c1;
// }
// Object obj;
FontSettinginterface obj;
public Setting(FontSettinginterface obj){
this.obj = obj;
}
interface FontSettinginterface{
void change(String color,int size);
}
public void startSetting(){
System.out.println("開始設置");
System.out.println("........");
System.out.println("設置完畢");
// if(r1 != null){
// r1.change("黑色",23);
// }
// if(c1 != null){
// c1.change1("白色",25);
// }
// if(obj instanceof Read){
// Read r1 = (Read)obj;
// r1.change("黑色",23);
// }
// if(obj instanceof Chat){
// Chat c1 = (Chat)obj;
// c1.change1("白色",25);
// }
obj.change("黑色",29);
}
}
- 閱讀界面
public class Read implements Setting.FontSettinginterface {
private String text;
private String color;
private int size;
public Read(String text) {
this.text = text;
}
public void goToSetting() {
Setting setting = new Setting(this);
setting.startSetting();
}
public void change(String color, int size) {
this.color = color;
this.size = size;
System.out.println("顏色:" + color + " 大杏:" + size);
}
}
- 聊天界面
public class Chat implements Setting.FontSettinginterface {
private String color;
private int size;
public void goToSetting(){
Setting setting = new Setting(this);
setting.startSetting();
}
public void change1(String color,int size){
this.color = color;
this.size = size;
System.out.println("顏色:"+color+" 大星骛:"+size);
}
@Override
public void change(String color, int size) {
this.color = color;
this.size = size;
System.out.println("顏色:" + color + " 大小:" + size);
}
}
- 主函數(shù)
public static void main(String[] args){
Read read = new Read("df");
read.goToSetting();
Chat chat = new Chat();
chat.goToSetting();
}
-
運行結(jié)果QQ圖片20190813185340.png
- 不可變數(shù)組String中常用方法
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
//使用構(gòu)造方法
//null 和 "" 的區(qū)別
String str3 = new String(); //無意義
byte[] name = {'a','b','c'};
String str4 = new String(name);
System.out.println(str4);
byte[] name2 = {97,98,99};
String str5 = new String(name2);
System.out.println(str5);
//使用字節(jié)數(shù)組的一部分 創(chuàng)建一個字符串
String str6 = new String(name,0,2);
System.out.println(str6);
char[] hello = {'你','好','啊'};
String h = new String(hello);
System.out.println(h);
//字符串有哪些方法
//獲取字符串中的一個字符
//charAt
char c = h.charAt(2);
System.out.println(c);
// 兩個字符串的比較 compareTo
// 可以知道大小關系 0:相同 >0:大于 <0:小于
int result = str4.compareTo(str5);
System.out.println(result);
// 兩個字符串的連接
// concat
String nStr = str5.concat(h);
System.out.println(nStr);
// 判斷一個字符串是否包含另外一個字符串
// contains
boolean r = "hello".contains("ll");
System.out.println(r);
String url = "http://www.baidu.com";
if (url.endsWith(".com")){
System.out.println("網(wǎng)址");
}
if (url.startsWith("http")){
System.out.println("http協(xié)議");
}
if (url.startsWith("www",7)){
System.out.println("萬維網(wǎng)");
}
// 兩個字符串進行比較
// equals
if ("abc".equals("ABC")){
System.out.println("相同");
}else {
System.out.println("不相同");
}
System.out.println(str4.hashCode());
// 判斷一個子字符串在另外一個字符串里面的位置
// indexOf 不存在返回值為-1
String i1 = "hello Java";
int index = i1.indexOf("Java");
System.out.println(index);
//獲取字符串的長度
//length
// 獲取子字符串
// substring 從index到結(jié)尾
String sStr = i1.substring(6);
System.out.println(sStr);
// 從0 到 5
String sStr1 = i1.substring(0,5);
System.out.println(sStr1);
// 將字符串轉(zhuǎn)化為字符數(shù)組
// toCharArray
// 將所有字符轉(zhuǎn)化為小寫/ 大寫
// toLowerCase/ toUpperCase
// 將字符串前面和后面的空格字符刪除
// trim();
- 可變數(shù)組StringBuilder中的常用方法
// 可變字符串
// StringBuffer 線程安全 效率不高
// StringBuilder 線程不安全的 效率更高
// insert append delete replace
// 創(chuàng)建的同時先準備好6個字符的空間
StringBuilder sb = new StringBuilder(6);
// append 在末尾追加一個字符串炕贵;
sb.append("I");
sb.append(" Love");
sb.append(" Android");
System.out.println(sb);
sb.insert(2,"also ");
System.out.println(sb);
// replace 替換
int start = sb.indexOf("Android");
int end = start + "Android".length();
sb.replace(start,end,"You!!!");
System.out.println(sb);
// reverse 反轉(zhuǎn)
// sb.reverse();
// System.out.println(sb);
int s1 = sb.indexOf("also");
int s2 = s1+"alse".length();
sb.delete(s1,s2);
System.out.println(sb);
}
}
心得
通過今天的學習梆奈,我對接口和數(shù)組有了更深的理解,昨天我對于接口還是懵的狀態(tài)称开,今天總算是弄明白了一些亩钟,雖說還不是特別清晰,但已經(jīng)能夠簡單運用鳖轰。每天進步一點點清酥,也是很開心的事。