学习及开发中的Java语法及理论学习


理论

理解java回调机制

android开发中的同步和异步区别的理解

  • 同步执行的话,就是程序会呆板地从头执行到尾,耗时间的东西不执行完,程序不会继续往下走,等待时间长的话,有时候就会造成失去响应了。

    异步的好处,就是把一些东西,特别是耗时间的东西扔到后台去运行了(doInBackground),程序可以继续做自己的事情,防止程序卡在那里失去响应。

  • 同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。
    异步的意思是两个线程毫无相关,自己运行自己的。

  • 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
    异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

  • 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

  • 同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。

    异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

  • 个人理解

    • 同步就是两个人一起工作,必须前一个人把手上的活干完,第二个人才能开始干
    • 异步则是两个人分开各自闷声发大财,相互没影响

indexOf 和 lastIndexOf

从名字上来看,二者都是索引,区别是:

  • indexOf 是查询某个字符子串在字符串中首次出现的位置(索引值)
  • lastIndexOf 有四种重载:
    • public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • public int lastIndexOf(int ch, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

实例:

public class Test {
    public static void main(String args[]) {
        String Str = new String("mahoo12138");
        String SubStr1 = new String("oo");
        String SubStr2 = new String("12138");

        System.out.print("查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o' ));

        System.out.print("从第4个位置查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o', 4 ));

        System.out.print("子字符串 SubStr1 最后出现的位置:" );
        System.out.println( Str.lastIndexOf( SubStr1 ));

        System.out.print("从第2个位置开始搜索子字符串 SubStr1 最后出现的位置 :" );
        System.out.println( Str.lastIndexOf( SubStr1, 8 ));

        System.out.print("子字符串 SubStr2 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( SubStr2 ));
    }
}

System.out.println()方法和toString()方法

Object有个toString实例方法。Object类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() '@' Integer.toHexString(hashCode())

而在Java中,所有的对象都是继承自Object,因此所有的Java对象都具有toString方法。

但很多类都重写了Object类的toString方法,用于返回可以表述该对象信息的字符串。

当程序使用System.out.println()方法输出一个对象,或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString方法返回该对象的字符串表示。

当然,空引用变量调用toString方法,会引起空指针异常。


文章作者: Mahoo Huang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mahoo Huang !
评论
  目录