美文网首页
【Java学习】接口回调|String的各种方法

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

作者: 榆野铃爱 | 来源:发表于2019-08-13 23:04 被阅读0次

    心得感悟

    虽然弄明白了接口,但对于接口回调也还是理解了很久才弄清楚,要理解一个内容最好的方法还是多看举例代码,自己再用自己的理解重新写一遍,应用于不同的场景。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)接口回调程序——设置网页字体颜色和大小

    相关文章

      网友评论

          本文标题:【Java学习】接口回调|String的各种方法

          本文链接:https://www.haomeiwen.com/subject/awmbjctx.html