一、目的
1.学习代理设计模式
2.了解String及其相关方法的使用
二、知识点
代理设计模式:
简单的来说,代理设计模式就是使用接口实现数据回调,那么为什么要使用接口来实现呢,又有什么其他方法呢?
String的相关方法
定义了一个String对象,则该对象可以用的(Android studio内Java自带的)一些常用的方法。
三、具体内容
1.代理设计模式:
1.为什么要用接口来实现
定义一个接口,统一管理理传递数据的方式
2.实例:编写程序实现对文本颜色和字号大小的设置 用代理设计模式
2.String
*1.String的使用
public class MyClass {
public static void main(String[] args){
//系统提供的类 String List Map
//了解主要的一些方法的使用
/**
* String
* 1. 不可变的字符串 一旦创建 内容不能改变
* 2. == 比较两个对象是否相同:地址
* equals 比较内容是否相同
*
* 3. 字符串的创建
* String str1 = "abc";
*
* StringBuffer 可变字符串
* StringBuilder 可变字符串
*/
String str1 = "abc";
String str2 = "abcd";
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
//使用构造方法
//null 和 "" 的区别
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);
//使用字节数组的一部分 创建一个字符串
String str6 = new String(name,0,2);
System.out.println(str6);
char[] hello = {'你','好','啊'};
String h = new String(hello);
System.out.println(h);
*2.字符串有哪些方法:
- // 获取字符串中的一个字符
// charAt
char c = h.charAt(0);
System.out.println(c);
- // 两个字符串的比较 compareTo
// 可以知道大小关系 0:相同 >0:大于 <0:小于
int result = str4.compareToIgnoreCase(str5);
System.out.println(result);
- // 两个字符串的连接
// concat
String nStr = str5.concat(h);
System.out.println(nStr);
- // 判断一个字符串是否包含另外一个字符串
// contains
boolean r = "hello".contains("lle");
System.out.println(r);
- // 判断是否以某个字符串结尾
//endsWith
String url = "http://www.baidu.com ";
if (url.endsWith(".com")){
System.out.println("网址");
}
- // 判断是否以某个字符串开头
//startsWith
if (url.startsWith("http")){
System.out.println("http协议");
}
if (url.startsWith("www",7)){
System.out.println("万维网");
}
// 两个字符串进行比较
// equals
if ("abc".equals("ABC")){
System.out.println("相同");
}else{
System.out.println("不相同");
}
- // 判断一个子字符串在另外一个字符串里面的位置
// indexOf 不存在返回值为-1
String i1 = "hello Java";
int index = i1.indexOf("Javeee");
System.out.println(index);
// 获取字符串的长度
// length// 获取子字符串
// substring 从index到结尾
String sStr = i1.substring(6);
System.out.println(sStr);
// 从0开始 到5
String sStr2 = i1.substring(4,7);
System.out.println(sStr2);
// 将字符串转化为字符数组
// toCharArray// 将所有字符转化为小写
// toLowerCase / toUpperCase// 将字符串前面和后面的空格字符删除
// trim()
// 可变字符串
// StringBuffer 线程安全 效率不高
// StringBuilder 线程不安全的 效率更高
// insert append delete replace
3.例(上接1.string的使用)
(public class MyClass {
public static void main(String[] args){)
// 创建的同时先准备好6个字符的空间
StringBuilder sb = new StringBuilder(6);
// append 在末尾追加
sb.append("I");
sb.append(" Love");
sb.append(" Android");
System.out.println(sb);
// insert 插入数据
sb.insert(2, "also ");
System.out.println(sb);
// replace 替换
// start end string
int start = sb.indexOf("Android");
int end = start + "Android".length();
sb.replace(start,end,"you!!!");
System.out.println(sb);
// reverse 反转
sb.reverse();
System.out.println(sb);
}
}
输出结果:
四、实际应用:文本颜色和字号大小的设置
1个主类,3个功能类
1.MyClass
public class MyClass {
public static void main(String[] args){
Read read = new Read("nnnn");
Chat chat = new Chat("kkkk");
read.goToSetting();
chat.goToSetting();
}
}
2.Setting 类——设置页面 设置字体颜色和大小
public class Setting {
//定义一个接口对象
U u;
public Setting(U u){
this.u = u;
}
//使用接口定义一套方法 强制使用者来使用这个方法
interface U{
void startChange(String color,int size);
}
//方法 开始设置
public void startSetting(){
System.out.println("开始设置");
System.out.println("……");
System.out.println("设置完毕,即将返回结果");
u.startChange("紫色",18);
//开始设置对象
//1.属性是private的 用set方法 如果有可以访问的属性 直接通过属性给值
//比较少用 因为对象没办法第一时间知道自己需要的值有了
//2.通过方法
}
}
3.Chat 类——聊天页面 聊天文本
public class Chat implements Setting.U {
//属性
String text;
String color;
int size;
//构造方法
public Chat(String text){
this.text = text;
}
public void goToSetting(){
//1.创建设置界面的对象
Setting setting = new Setting(this);//谁调用这个方法 谁就是this
//2.推送到设置界面
setting.startSetting();
}
@Override
public void startChange(String color,int size) {
System.out.println("设置前的颜色:"+this.color+" 设置后的颜色:"+color);
System.out.println("设置前的大小:"+this.size+" 设置后的大小:"+size);
}
}
4.Read 类——阅读页面 显示文本
public class Read implements Setting.U {
//属性
private String text;
private String color;//默认的颜色
private int size;//默认的字体大小
//构造方法
public Read(String text){
this.text = text;
}
@Override
public void startChange(String color,int size) {
System.out.println("改变前的颜色"+this.color+" 大小:"+this.size);
//u.startChange("紫色",18);
System.out.println("改变后的颜色:"+color+" 大小:"+size);
}
//方法 模拟进入设置界面
public void goToSetting(){
//1.创建设置界面的对象
Setting setting = new Setting(this);//谁调用这个方法 谁就是this
//2.推送到设置界面
setting.startSetting ();
}
}
运行结果
五、心得
今天是基本上是纯知识的学习了,可能会比较空,感觉不知道学了什么,没有具体的运用就感觉不真实,明天应该会有一个实际的运用,把这几天的知识都运用进去,到时候又要掉头发咯QAQ