java中抽象方法不能为private,final或者static,为什么?细细说明,或给个例子?
两种角度看。从语法的角度看,就是禁止抽象的 static 方法。从设计的角度看,允许抽象类有抽象的 static 方法没有意义。
1. static 方法不是属于任何一个具体对象的,它不表示对象的行为,而抽象类是用于抽象属于此类对象的行为,而不是用来抽象类本身。
2. java中需要静态方法,主要原因是函数只能挂在类下面,像kotlin这种语言,因为函数可以和类平级,所以干脆禁止了static 成员。
jni开发中c程序申请的内存是否在java的对堆内存或栈内存?
不在,Java的内存是由JVM虚拟机管理的,它相当于从操作系统内存中预先拿出来一大块,独占管理这一块,属于已经被使用的一块,Java的内存都是从这块内存中再次分的一块一块的。而jni则是Java程序与c语言交互技术,相当于JVM进程与外部进程的交互,所以此时的C语言中分配的内存是直接从操作系统内存中申请的,与JVM申请的一大块内存无关。