java – 如何在scala中进行内存分配
发布时间:2020-12-15 03:02:43 所属栏目:Java 来源:网络整理
导读:我们知道,与 java不同,scala将所有东西都作为对象. 例如我们有 – object A{ val arg1=1 def myFun(arg2:Int)=arg1}class A{ val arg1=1 def myFun(arg2:Int)=arg1}trait A{ val arg1=1 def myFun(arg2:Int)=arg1} 现在因为scala中的所有内容都是对象所以内
|
我们知道,与
java不同,scala将所有东西都作为对象.
例如我们有 – object A{
val arg1=1
def myFun(arg2:Int)=arg1
}
class A{
val arg1=1
def myFun(arg2:Int)=arg1
}
trait A{
val arg1=1
def myFun(arg2:Int)=arg1
}
>现在因为scala中的所有内容都是对象所以内存分配将如何发生? 解决方法
Scala在JVM上运行,它基于Java库.
scala文件(* .scala)将被编译为java类字节码并在JVM上运行它们.为你的例子: object A{
val arg1=1
def myFun(arg2:Int)=arg1
}
将被翻译为(由javap反编译字节码): public class A$extends java.lang.Object{
public static final A$MODULE$;
private final int arg1;
public static {};
public int arg1();
public int myFun(int);
public A$();
}
class A{
val arg1=1
def myFun(arg2:Int)=arg1
}
将被翻译为(由javap反编译字节码): public class A extends java.lang.Object{
private final int arg1;
public int arg1();
public int myFun(int);
public A();
}
trait A{
val arg1=1
def myFun(arg2:Int)=arg1
}
将被翻译为(由javap反编译字节码): public interface A{
public abstract void $line5$$read$A$_setter_$arg1_$eq(int);
public abstract int arg1();
public abstract int myFun(int);
}
所以对于你的其他内存问题,我认为它与Java相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
