SQLiteOpenHelper android中变量的可见性

时间:2014-03-21 09:23:28

标签: android database sqlite

为什么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这类变量。不会影响应用程序性能吗?因为这些是静态变量。

任何帮助都将受到高度赞赏....

2 个答案:

答案 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的访问将使用相对便宜的"字符串常量"指令而不是字段查找。