大家好,今天小编关注到一个比较有意思的话题,就是关于java语言参数的问题,于是小编就整理了4个相关介绍Java语言参数的解答,让我们一起看看吧。
- java i=7 i=i%2 i =?
- java语言编写。定义一个“学生”类,然后创建10个学生对象,计算他们的平均成绩、最高分和最低分?
- 如何让switch接受String判断参数?
- 为什么说java里面只有值传递?
JAVA i=7 i=i%2 i =?
在j***a语言中,运算符号 % 代表是取模运算,即求两个数的除法的余数。如求a除以b的余数,用J***A语言表示就是:a % b
I=7
I=I %2
第一调语句代表将常数7赋给变量I,即I的值是7;第二条语句是求I除以的2的余数。由于I的值是7,所以,I除以2的余数是1
因此,本题输出I的值是1
j***a语言编写。定义一个“学生”类,然后创建10个学生对象,计算他们的平均成绩、最高分和最低分?
for(j=0;jdata[i 1])
{
temp=data[i];
data[i]=data[i 1];
data[i 1]=temp;
}
}
}
★最大值为data[9]
★最小值为data[0]
如何让switch接受String判断参数?
在J***a语言中Swith可以使用参数类型有:Only convertible int values, strings or enum variables are permitted 可以自动转换为整型的(byte,short,int),String类型,枚举类型。 J***a中不能做为Switch参数的有boolean,float,double,long。
为什么说j***a里面只有值传递?
关于这个问题,不同人对它的理解不尽相同。对初学J***a的同学来说,可能简单的认为J***a中参数传递就是分为值传递和引用传递,至于为什么,因为课本上就是这么说的。对于有些工作年限的程序员来说,可能认为如果传递的参数类型是普通类型,那么就是值传递,如果参数是对象,那么就是引用传递。还有一些人认为J***a中只有值传递,就是题主问题中的主题。
对J***a编程语言来说,前两种理解是错误的,J***a中只有值传递。对于我来说,刚开始也是理解有值传递和引用传递一说的,但是随着自己写代码的积累,慢慢发现并不是那么回事。那为什么只有值传递呢?
首先,来了解一下什么是值传递,什么是引用传递?
值传递是说在调用函数时,将实际参数值复制一份传递到被调用函数中,在被调函数中修改参数值不会影响原实参值。
引用传递是说在调用函数时,将实际参数的地址直接传递到被调用的函数中,在被调函数中修改参数值会影响原实参值。
如果传递的参数类型是普通基本类型,那么一定是***一份实参值传递给形参的,但是当参数类型是对象的时候,也是***的一份参数值传递给形参,只不过***的是对象引用的地址,也就是在内存中分配的存储地址,不是直接传递的引用地址。
此时,可能有人会说那为什么将一个对象传到另一个方法中,在这个方法中修改了这个对象的属性值时,原调用方法中的对象属性值也跟着变了,它不就是引用传递吗?
其实,这是一个很容易迷惑的点。你仔细看看上面的陈述就会发现,不是这么回事。将一个对象传到另一个方法中,传递的是什么?传递的是对象引用的地址,这个对象引用的地址在另一个方法中被修改了吗?原对象引用有受影响吗?并没有吧!
所以,J***a中并没有引用传递,只有值传递,不要再搞错了!
我是『J***a实战技术』,关注我获取更多原理分析、实战技术!
值传递(pass by value)是指在调用函数时将实际参数***一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
区别:
值传递和引用传递的区别并不是传递的内容。而是实参到底有没有被***一份给形参。
总结:
J***a中其实还是值传递的,只不过对于对象参数,值的内容是对象的引用,所以就不是引用传递。
无论是值传递还是引用传递,其实都是一种求值策略(Evaluation strategy)。在求值策略中,还有一种叫做按共享传递(call by sharing)。其实J***a中的参数传递严格意义上说应该是按共享传递。
按共享传递,是指在调用函数时,传递给函数的是实参的地址的拷贝(如果实参在栈中,则直接拷贝该值)。在函数内部对参数进行操作时,需要先拷贝的地址寻找到具体的值,再进行操作。如果该值在栈中,那么因为是直接拷贝的值,所以函数内部对参数进行操作不会对外部变量产生影响。如果原来拷贝的是原值在堆中的地址,那么需要先根据该地址找到堆中对应的位置,再进行操作。因为传递的是地址的拷贝所以函数内对值的操作对外部变量是可见的。
简单点说,J***a中的传递,是值传递,而这个值,实际上是对象的引用。
到此,以上就是小编对于j***a语言参数的问题就介绍到这了,希望介绍关于j***a语言参数的4点解答对大家有用。