【Java学习】接口回调|String的各种方法

心得感悟

虽然弄明白了接口,但对于接口回调也还是理解了很久才弄清楚,要理解一个内容最好的方法还是多看举例代码,自己再用自己的理解重新写一遍,应用于不同的场景。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. 俗话说实践出真知,纸上谈兵不如亲自刀枪上阵,可以在下面的在线代码运行界面自己运行一下,还可以改改代码,便于加深理解。

(1)接口回调程序——设置网页字体颜色和大小

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容