js传递的参数是引用类型 改变的是占内存还是堆内存

如题所述

你编译了,但没运行就像是你的机器上安装了一个游戏但没有运行这个游戏,你觉得这个游戏会占用你的内存吗?你编译后只生成了一个类文件,这个类文件最多就占你一点点硬盘空间并没有占用你的内存。
至于int i=1;和static int i=1;这两个,前者是在用到郸讥策客匕九察循畅末时才会加载内存,其作用范围在这个变量定义位置到这个变量所在匹配的右括号结束,而static int i=1;这个变量是在当这个静态变量所在的类被JVM加载时就一直存在不受这个类所定义的对象的影响,如果是int i=1;那么当这个对象不存在时那么这个变量也就不存在了,但如果是static int i=1那么这个i会到整个程序结束才消失。而且如果你把类里面的属性定义成为static那么整个类共享一个i,所有的对象访问和操作的都是同一个i,也可以通过类名.i来访问这个i。
至于final String str这里的str并不是多余的,所有字符串属于常量这句话并没有错,如同你把把一个字符a变成字符b吗?注意我说的是字符不是变量的值为a改成b。肯定不能,如果能改那计算机还不崩溃呀?这里的final并不是多余的,它不是用来修饰字符串的值而是用来修饰str的,str只不过是一个字符串的引用(在c里面叫指针),如果你的str不加final那么我是不是可以把它改变指向其它的字符呢?肯定是可以的,但如果我加上final那么就不能了,因为str是一个常量,它里面的引用值(也可以叫做指针地址)是不可以被改变的。String并不属于基本类型,它是一个较为特殊的引用类型。
温馨提示:答案为网友推荐,仅供参考