StringBuffer & StringBuilde

2020-01-13  本文已影响0人  陌丶西

title: StringBuffer & StringBuilde


参考

图析:String,StringBuffer与StringBuilder的区别

String

pic

当每次修改String的值时,堆内存会重新指向一个新的地址对象。这里有以下关系

String a="world";<---->String a=new String("world");
对a进行修改后其实是
a="hello world";<---->a=new String("hello world");

String a="hello"---在堆中创建了一个String对象

a+"world"----在堆中创建了一个World的对象(new String("world"))

a="hello world"---在堆中创建了最终的生成对象(new String("hello world"))

StringBuilder & StringBuffer

线程安全和线程不安全

前者线程不安全 后者线程安全

StringBuilder StringBuffer

ArrayList Vector

HashMap HashTable

假设A和B同时去不同ATM上取同一张卡的1000块钱,如果是线程不安全,那么A和B可以同时取到1000块钱(两人赚大发啦),而如果线程安全呢,就只有一个人能取出来1000块钱。

非线程安全并不是多线程环境下就不能使用。注意我上面有说到:多线程操作同一个对象。注意是同一个对象。

onSavedInstanceState()&& onRestoreInstanceState()

在onSaveInstanceState()中默认情况下具体干些什么?

默认情况下默认会自动保存Activity中的某些状态,比如activity中各种UI的状态,因此在activity被“系统”销毁和重建的时候,这些Ui的状态会默认保存,但是前提条件是Ui控件必须制定id,如果没有指定id的话,UI的状态是无法保存的(比如:EditText)

所以有时候为了某种场合记录数据,可以手动调用onSaveInstanceState()方法

configChanges 解析

关于Android Activity的configChanges属性的用法,设置屏幕旋转时activity不重新创建
android:configChanges 横竖屏切换的生命周期

        “mcc“ 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。
        “mnc“ 移动网号,在一个国家或者地区中,用于区分手机用户的服务商。
        “locale“ 所在地区发生变化。
        “touchscreen“ 触摸屏已经改变。(这不应该常发生。)
        “keyboard“ 键盘模式发生变化,例如:用户接入外部键盘输入。
        “keyboardHidden“ 用户打开手机硬件键盘
        “navigation“ 导航型发生了变化。(这不应该常发生。)
        “orientation“ 设备旋转,横向显示和竖向显示模式切换。
        “fontScale“ 全局字体大小缩放发生改变
        screenSize:设备的屏幕的尺寸信息发生了改变,旋转屏幕时也会触发这个,但是这个值是API13之后才有的,因此13之前的设备没有这个。
上一篇 下一篇

猜你喜欢

热点阅读