心得感悟
虽然弄明白了接口,但对于接口回调也还是理解了很久才弄清楚,要理解一个内容最好的方法还是多看举例代码,自己再用自己的理解重新写一遍,应用于不同的场景。String的方法有很多种,比较简单但是也还是要记住和弄熟,毕竟难的东西往往用的最少,简单的东西用的较多。
1. 目的
- 一、掌握接口回调方法
- 二、了解String的各种方法
2. 内容简概
- 一、接口回调的概念及用法
- 二、 String的各种方法
3. 具体内容
-
一、接口回调的概念及用法
1. 什么是接口回调(概念):
接口回调流程图
接口回调就是在两个对象间,互相调用的设计模式。如A要调用B中的方法,而B在完成自己的任务后,又要调用A。举个实际的例子,当我们要调整一个页面的字体颜色和大小时,页面和程序内部就需要接口回调,用户在页面设置参数后,页面需要将设置情况传给程序,最后程序还需要告诉用户页面参数设置完毕。
2. 如何实现接口回调:
程序流程分析
(1)分析程序流程
我就上面的调整页面字体颜色和大小的例子来实现接口回调。首先我们先分析一下要实现这个事件,需要哪些部件。因为是在Android studio运行,并不是一个真正的软件,我们需要写一个类来模拟用户操作。一个事件最好对应一个类,根据分析图可知,我们需要写4个类。
(2) 内部程序Setting类的编写
首先,我们先来编写内部程序,其实,图中的双向箭头就相当于接口,这个接口要做的是就是传输字体的颜色和大小参数,所以在接口中规定一个change方法。在接口中,我们还可以模拟一下加载的过程,即定义一个startSetting方法。接口定义好了,我们还需要告诉接口是谁要调用它。
public class Setting {
//记录为谁设置颜色和大小 记录下我做完事情后将数据返回给谁
FontSettingInterface obj;
//创建对象的时候 就需要告诉我 你是谁
public Setting(FontSettingInterface obj){
this.obj = obj;
}
//使用接口定义一套方法 强制使用者来实现这个方法
//能保证调用时能找到这个方法
public interface FontSettingInterface{
//自己规定的方法
void change(String color,int size);
}
//开始设置
public void startSetting(){
System.out.println("开始设置");
System.out.println("......");
System.out.println("设置完毕 即将返回结果");
}
}
(3)网站页面Chat、Read的编写
然后我们来编写各个页面,页面需要通过接口告诉内部程序用户的参数,这一步相当于实现接口,调用implement
。还需要通过回调,将内部程序的设置情况返回给用户,这一步相当于实现接口的方法,即调用接口中的change
方法。
public class Chat implements Setting.FontSettingInterface {
//模拟进入设置页面
public void gotoSetting(){
//1.创建设置页面的对象 以此通过接口给内部程序传值
Setting setting = new Setting(this);
//2.推送到设置页码
setting.startSetting();
}
//通过接口回调参数
@Override
public void change(String color, int size) {
System.out.println("改变后颜色:"+ color +" 大小:"+ size);
System.out.println("*******************************************");
}
}
public class Read implements Setting.FontSettingInterface {
//模拟进入设置页面
public void gotoSetting(){
//1.创建设置页面的对象 以此通过接口给内部程序传值
Setting setting = new Setting(this);
//2.推送到设置页码
setting.startSetting();
}
//通过接口回调参数
@Override
public void change(String color,int size){
System.out.println("改变后颜色:"+color+" 大小:"+size);
System.out.println("*******************************************");
}
}
(4)模拟用户操作页面的编写
最后我们需要模拟用户操作,就是调用接口,实现传值并回调。
public class Test {
public static void main(String[] args){
Read read = new Read(); //打开阅读页面
read.gotoSetting(); //打开阅读页面的设置
read.change("湖水蓝",18); //输入参数
Chat chat = new Chat(); //打开聊天页面
chat.gotoSetting(); //打开聊天页面的设置
chat.change("柠檬黄",21); //输入参数
}
}
3. 运行结果
运行结果
实际上例子还有很多,比如志明用手机发短信向春娇告白,春娇回短信说她不愿意,这也是一个回调,手机就相当于接口,接口的规定即为发短信。如果还不理解,可以在我的文章最下方自己在线运行一下,加深感悟。
-
二、 String的各种方法
1. 各种方法的功能简略
方法名 | 功能 |
---|---|
== | 比较两个对象的地址是否相同 |
equals | 比较两个对象的内容是否相同,区分大小写的判断 |
equalsIgnoreCase | 比较两个对象的内容是否相同,忽略大小写的判断 |
compareToIgnoreCase | 比较两个字符串ASCII码大小 |
byte | 使用字节数组创建字符串(存1个字节) |
char | 使用字节数组创建字符串(存2个字节) |
substring | 从指定位置到结尾截取字符串 |
new String | 截取字节数组的一部分新建一个字符串 |
charAt | 获取字符串中的一个字符 |
length | 获取字符串的长度 |
concat | 拼接两个字符串 |
contains | 判断一个字符串是否包含另外一个字符串 |
indexOf | 判断一个字符串在另外一个字符串里面的位置 |
startsWith | 判断是否以某个字符串开始,从开头或某一位置开始比较 |
endsWith | 判断是否以某个字符串结尾 |
toCharArray | 将字符串转化为字符数组 |
toUpperCase | 将所有字符转化为大写 |
toLowerCase | 将所有字符转化为小写 |
trim | 将字符串前面和后面的空格字符删除 |
StringBuilder | 可变字符串 |
append | 在字符串末尾添加新的字符串 |
insert | 在指定位置添加新的字符串 |
replace | 替换指定位置的字符串 |
reverse | 左右反转整个字符串字母顺序(仅对英文有效) |
delete | 删除指定位置的字符串 |
2. 部分方法详解
(1)char与byte
若使用byte来定义一个中文字符串会报错,因为中文占两个字节。
byte[] name = {'a','b','c'};
String str = new String(name);
char[] hello = {'你','好','啊'};
String h = new String(hello);
(2)String 名字 = new String(字符串,起始位置,结束位置)
作用为截取一段字符串成为新的字符串,下面代码的输出结果为:ab
String name = "abc";
String str = new String(name,0,2);
(3)compareToIgnoreCase
通过比较字符串的ASCII码得到二者的大小关系,输出结果和含义为:
0:相同 >0 :大于 <0:小于
下面代码的输出结果为:1
String name1 = "abc";
String name2 = "abd";
int result = name.compareToIgnoreCase(name2);
(4)concat
括号中的字符串是加在后面的,下面代码的输出结果为:Good morning少年
String name1 = "Good morning";
String name2 = "少年";
String nStr = name1.concat(name2);
(5)startsWith(要比较的字符串)
从某一个位置开始比较字符串,下面代码的输出结果为:这是一个网站
String url = "http://www.baidu.com";
if (url.startsWith("www",7)){
System.out.println("这是一个网站");
}
(6)indexOf
返回一个字符串在另外一个字符串里面的起始位置,若不存在则返回值为-1
下面代码的输出结果为:-1 6
String i1 = "hello Java";
int index = i1.indexOf("Jfs");
String i2 = "hello Java";
int index = i2.indexOf("Java");
(7)StringBuilder和append
可变字符串方法和添加字符串方法,下面代码的输出结果为:I Love Android
// 创建的同时先准备好6个字符的空间
StringBuilder words = new StringBuilder(6);
// 在末尾添加字符串
words.append("I");
words.append(" Love");
words.append(" Android");
(8)replace(替换起始,替换末尾,替换的字符串)
替换指定位置的字符串,下面代码的输出结果为:I Love You
StringBuilder words = new StringBuilder(6);
//append后 words = I Love Android
int start = words.indexOf("Android");
int end = start+"Android".length();
words.replace(start,end," You");
System.out.println(words);
(9)reverse
反转字符串顺序,下面代码的输出结果为:uoy evoL I
StringBuilder words = new StringBuilder(6);
//append后 words = I Love You
words.reverse();
System.out.println(words);
4. 亲手练一练
1. 俗话说实践出真知,纸上谈兵不如亲自刀枪上阵,可以在下面的在线代码运行界面自己运行一下,还可以改改代码,便于加深理解。
网友评论