【Android】性能实践—编码优化与布局优化学习笔记

编码优化

使用场景

  1. 如果需要拼接字符串,优先使用StringBuffer和StringBuilder进行凭借,他们的性能优于直接用加号进行拼接,因为使用加号连接符会创建多余的对象
  2. 一般情况下使用基本数据类来代替封装数据类型(比如int优于Integer)
  3. 当返回一个String类型的数据时,如果明确知道返回后的字符串用于进行拼接操作,那么可以考虑返回StringBuffer,因为StringBuffer是一个对象的引用而String的话就是创建了一个短生命周期的临时对象
  4. 类似于第二条,基本数据类型数组也优于对象数据类型数组(a[]和b[]使用起来效率比c(a, b)[]高得多)

静态优于抽象

当我们只想调用某个对象的某个方法去实现一个功能的时候,可以将该方法设置为静态方法,因为调用静态方法可以不用创建对象,也可以使得调用速度提升。

class Utils {
   
    public static int add(int a, int b) {
   
        return a + b;
    }
}

// 调用静态方法,不需要创建 Utils 的对象
int result = Utils.add(3, 5);

使用static和final修饰符

内存效率

  • static 关键字使变量成为类变量,而不是实例变量。这样,不管创建多少个类的实例,常量在内存中只存在一份,节省内存空间。
public class MyClass {
   
    public static final int MAX_VALUE = 100;
}

不可变性

  • final 关键字使变量成为常量,一旦赋值后不能改变。这确保了常量的值不会被意外修改,从而提高了代码的安全性和可靠性。
public class MyClass {
   
    public static final int MAX_VALUE = 100;
}

全局访问

  • static 使得常量可以通过类名直接访问,无需创建类的实例,方便全局使用。
int maxValue = MyClass.MAX_VALUE;

编译期常量

  • static final 常量在编译时就被确定,因此在编译期可以进行优化,比如内联(在使用常量的地方直接替换为常量值)。
public class MyClass {
   
    public static final int MAX_VALUE = 100;
}
// 在其他地方使用时
int value = MyClass.MAX_VALUE;  // 编译时会直接替换为 100

使用增强型for循环

有三个循环方式:

static class Counter {
   
    int mCount;
}
 
Counter[] mArray = ...
 
public void zero() {
   
    int sum = 0;
    for (int i = 0; i < mA
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值