为什么SQLiteOpenHelper类变量中的所有演示和教程始终是: public static final
看看:
public static final String ORDER_ID = "order_id";
public static final String ORDER_LOGIN_NAME = "login_name";
public static final String ORDER_RESTO_U_NAME = "resto_uniqe_name";
我的问题是:我正在制作一个应用程序,它的数据库太大了。所以,我必须制作至少60-70这类变量。不会影响应用程序性能吗?因为这些是静态变量。
任何帮助都将受到高度赞赏....
答案 0 :(得分:3)
最终表示变量的值无法进一步更改意味着无法更改或修改
如果我们想要创建属于该类的String(不需要使用它的实例),请使用public final static
String。
1)如果未将字段定义为final,则任何实现都可以更改字段的值。然后它们将成为实现的一部分。接口是纯粹的规范,没有任何实现。
2)因此它为客户提供了与对象交互的方式。如果变量不公开,则客户端将无法访问它们。
就应用程序及其数据库而言,如果它太大而不是你的实现,则决定它是否是开销。通过使用静态变量与最终的对比不会影响性能!由于public static final String ORDER_ID = "order_id";
只是一个列名称所以不应该是一个问题!!
答案 1 :(得分:3)
嗯,他们是public
还是private
还是package
- 受保护取决于您的需求,但final static
是根据Android指南声明常量的好方法,在这里查看解释:http://developer.android.com/training/articles/perf-tips.html#UseFinal
在课程顶部考虑以下声明:
static int intVal = 42;
static String strVal = "Hello, world!";
编译器生成一个类初始化方法,该方法在第一次使用该类时执行。该方法将值42存储到intVal中,并从strVal的类文件字符串常量表中提取引用。稍后引用这些值时,可以使用字段查找来访问它们。
我们可以通过" final"来改善问题。关键字:
static final int intVal = 42;
static final String strVal = "Hello, world!";
该类不再需要方法,因为常量会进入dex文件中的静态字段初始值设定项。引用intVal的代码将直接使用整数值42,并且对strVal的访问将使用相对便宜的"字符串常量"指令而不是字段查找。