当前位置:首页 » 安卓系统 » android调用static

android调用static

发布时间: 2022-08-05 11:19:47

㈠ android中的static

1. static变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:
对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

2. static代码块
static代码块是类加载时,初始化自动执行的。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

3. static方法
static方法可以直接通过类名调用,任何的实例也都可以调用,因此static方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
static方法只能访问static的变量和方法,因为非static的变量和方法是需要创建一个对象才能访问的,而static的变量/方法不需要创建任何对象。

********
static的数据或方法,属于整个类的而不是属于某个对象的,是不会和类的任何对象实例联系到一起。所以子类和父类之间可以存在同名的static方法名,这里不涉及重载。所以不能把任何方法体内的变量声明为static,例如:
fun() {
static int i=0; //非法。
}
其实理解static是只有一个存储地方,而使用时直接使用,不需要创建对象,就能明白以上的注意事项。

另外,一般的类是没有static的,只有内部类可以加上static来表示嵌套类。

㈡ android中static修饰的变量在Activity销毁后,还存在吗

1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 2. static代码块 static代码块是类加载时,初始化自动执行的。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。 3. static方法 static方法可以直接通过类名调用,任何的实例也都可以调用,因此static方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。 static方法只能访问static的变量和方法,因为非static的变量和方法是需要创建一个对象才能访问的,而static的变量/方法不需要创建任何对象。 ******** static的数据或方法,属于整个类的而不是属于某个对象的,是不会和类的任何对象实例联系到一起。所以子类和父类之间可以存在同名的static方法名,这里不涉及重载。所以不能把任何方法体内的变量声明为static,例如: fun() { static int i=0; //非法。 } 其实理解static是只有一个存储地方,而使用时直接使用,不需要创建对象,就能明白以上的注意事项。 另外,一般的类是没有static的,只有内部类可以加上static来表示嵌套类。

㈢ 如何在android studio中用JNI调用静态库

Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := static_add
LOCAL_SRC_FILES := libstatic_add.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := share_add
LOCAL_SRC_FILES := hello-jni.c
LOCAL_STATIC_LIBRARIES := static_add
LOCAL_C_INCLUDES := $(LOCAL_PATH)/jni/app/src/main/jni
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
LOCAL_STATIC_LIBRARIES := static_add
这一行换成:
LOCAL_LDLIBS += -lstatic_add
或者
LOCAL_LDFLAGS += $(LOCAL_PATH)/libstatic_add.a(可以任意指定路径)

热点内容
winform反编译 发布:2025-09-19 01:43:48 浏览:915
c语言中怎么赋值 发布:2025-09-19 01:17:43 浏览:956
公网服务器如何共享ip 发布:2025-09-19 01:03:43 浏览:237
存储器已几乎满 发布:2025-09-19 00:36:28 浏览:884
安卓系统在哪里输入网址 发布:2025-09-19 00:35:46 浏览:173
armlinuxgccgcc 发布:2025-09-19 00:35:37 浏览:425
wincachephp 发布:2025-09-19 00:30:28 浏览:864
如何给文件夹设置图标 发布:2025-09-19 00:06:09 浏览:752
火车头密码指纹锁多少钱 发布:2025-09-18 23:16:55 浏览:139
雪佛兰最高配置长什么样 发布:2025-09-18 23:16:54 浏览:173