Ⅰ java变量存储问题
我对你看到的这个东西很不认同啊,Java里对int类型是传值i的,你定义了两个不同的int类型变量a和b那么它们就是毫无关系的,应该是不同的两个地址才对。
凭我对编译原理的理解,我觉得Java和C什么的一样,对局部变量是这样处理的:
程序在编译的时候就会给变量分配其在栈中的位置。举个例子:
int a = 3; int b = 3;
int c = a + 1;
假设编译时给a分配的地址是“栈底+8”,b的地址是“栈底+12”,c的地址是“栈底+16”,那么这一段代码编译后变成:
mov 8(%ebp), 3
mov 12(%ebp), 3
add 16(%ebp), 8(%ebp), 1
也就是说编译之后,程序里就没有a、b这些东西了,直接通过地址来进行运算。
如果我上面的理解没有问题,那么对你的问题的回答是:
1)不用找。
2)不会改变,这个地址在编译时就分配好了。
3)我认为函数传参的时候对基本类型还是传值的,即会把基本类型的参数的值复制一份放到被调用函数的栈中;对于类变量才是直接扔进去一个地址。不过我不是很确定。
后补充的那一问,没错我同意你的看法。
Ⅱ java中定义一个保存float类型变量的值并初始化,求该数组中的最大值,并输出
//为甚么在复这不能粘贴,非要要我重新制敲
import java.util.*
public class Test{
public static void main(String args[]){
Scanner s=new Scanner(System.in);
float arr[]=new float [];//你没说几个数,我就写了五个
System.out.println("输入五个浮点数");
for(int i=0;i<5;i++){
arr[i]=s.nextFloat();
}
Arrays.sort(arr);//从打到小排序
System.out.println(arr[arr.length-1]);//输出最后一个,最大的
}
}
Ⅲ java在循环语句的执行语句赋予变量值循环结束后会释放吗
在 java 中辩轿,在循环语句的执行语句中赋予变量值的操作不会导致变量被释放。
Java 中的变量在被声明后,会在内存中分配一块存储空间,并保存该变量的值。在执行循环语句时,变量值会被重复赋值,但是它的存储空间并不会被释放。
当循悄清环结束后,变量的值可能会发生变化,但是变量本身的存储空间并不会被释放。它只有在程序执行结束后,Java 虚拟机才会清理启灶前内存并释放相关资源。
因此,在 java 中,在循环语句的执行语句中赋予变量值的操作不会导致变量被释放。
再试一次重新路由