在课程顶部考虑以下声明:
static int intVal = 42;
static String strVal = "Hello, world!";
我们可以使用final
关键字提高Android的效果吗?:
static final int intVal = 42;
static final String strVal = "Hello, world!";
答案 0 :(得分:3)
使用static final
字段可以提高Android系统的效果。
请参阅Performance Tips - Use Static Final For Constants
上的文档我们可以通过" final"来改善问题。关键字:
static final int intVal = 42;
static final String strVal ="你好, 世界!&#34 ;;
该类不再需要方法,因为常量 进入dex文件中的静态字段初始值设定项。引用的代码 intVal将直接使用整数值42,并访问strVal 将使用相对便宜的"字符串常量"指令 而不是字段查找。
该页面上还有其他有用的提示,用于性能优化。例如,有一个15%-20% increase in performance when accessing static
methods vs object methods.
然而,不要过早优化是很重要的。有时候它不值得,而且往往会导致糟糕的编码习惯。正如他们在该页面底部突出显示的那样:
在开始优化之前,请确保您遇到问题 需要解决。确保您可以准确地测量现有的 表现,或者你不能衡量的好处 你尝试的替代方案。
答案 1 :(得分:1)
final keyword
stop method overriding
it cant be initialized
can't be extended
的班级,意味着它不能成为超级班级 static keyword
static
变量可用于引用所有公共属性
对象(对于每个对象而言不是唯一的),例如公司名称
员工,学院学生姓名等。static keyword
表示成员变量,或
方法,可以访问而无需实例化
它所属的类。static variable gets memory only once
。 static and final together
static final will help you to create a CONSTANT
。
只存在一个可以在任何地方访问的副本答案 2 :(得分:-1)
根据解释here及以下的性能提示,尽可能声明常量静态final是很好的做法。下面是静态和最终静态字段之间的清晰度。
static 意味着它属于类而不是实例,这意味着在特定Class的所有实例之间只共享该变量/方法的一个副本。例如,请考虑这个
public class MyClass {
public static int myVariable = 0;
}
//Now in some other code creating two instances of MyClass
//and altering the variable will affect all instances
MyClass instance1 = new MyClass();
MyClass instance2 = new MyClass();
MyClass.myVariable = 5; //This change is reflected in both instances
最终静态字段是全局常量例如。
class MyConstants {
public static final double PI = 3.1415926535897932384626433;
}