javaswap函数(利用参数化抽象给出3个Java函数,交换char类型,int类型,double类型变量的值)
本文目录
- 利用参数化抽象给出3个Java函数,交换char类型,int类型,double类型变量的值
- java swap(Integer a ,Integer b)实现交换
- java 求swap的用法 swap()是一个数组类的方法还是自己编写的方法 具体用法是怎样使用
- 用C、C++或java实现函数swap(int a,int b),交换实参值
- java程序为什么一定要写swap(x,y)
- java 怎么实现Swap函数 交换两个数
- java类方法如何实现引用传递和值传递
- java中swap函数在哪个包下
利用参数化抽象给出3个Java函数,交换char类型,int类型,double类型变量的值
public class SwapUtil {public static 《T》 void swap(T a, T b) {T temp = a;a = b;b = temp;}public static void swapChar(char a, char b) {swap(a, b);}public static void swapInt(int a, int b) {swap(a, b);}public static void swapDouble(double a, double b) {swap(a, b);}}
java swap(Integer a ,Integer b)实现交换
public class App {public static void main(String args) {Integer a=1, b=2;System.out.println("before:a=" + a + ", b=" + b);swap(a,b);System.out.println("after:a=" + a + ", b=" + b);}public static void swap(Integer i1, Integer i2) {Integer tmp = i1;i1 = i2;i2 = tmp;}}输出结果:a=1,b=2java里两种参数传递形式:值传递,引用传递java变量分为基本类型,引用类型,两种类型的参数传递给方法时都是按值传递形参和实参所占的内存地址不一样形参中的内容只是实参中存储的对象引用的一份拷贝交换的是两个引用变量的副本,原来的a,b引用指向不变。请查看Integer.javaprivate final int value;public Integer(int value) {this.value = value;}public class App {public static void main(String args) {Integer a=1; // Integer a = Integer.valueOf(1); IntegerCache.cache == 1Integer b=2;System.out.println("before: a=" + a + ", b=" + b);swap(a, b);System.out.println("after: a=" + a +", b=" + b);}public static void swap(Integer i1, Integer i2) throws NoSuchFieldException {//通过反射获得类私有不可变变量(private final int value;)Field field = Integer.class.getDeclaredField(name:"value");//通过setAccessible去访问私有的成员变量field.setAccessible(true);int tmp = i1.intValue(); //tmp值是1,field.set(i1, i2.intValue()); // i1的值设置为Integer.valueOf(i2.intValue()).intValue(),此时i1地址是IntegerCache.cache: 值为2field.set(i2, tmp); //int--》Object Integer.valueOf(tmp).intValue(), tmp的值是地址IntegerCache.cache,}}javap -v App.class 查看App的字节码自动封装Integer a = 1; // Integer a = Ineger.valueOf(1);valueOf(int i) i在-128到127之间,返回缓存中的值 return IntegerCache.cache所以Integer a=1,b=1时,a == b ,两个的内存地址是同一个。上面运行结果:a=2, b=2解决:Integer tmp = new Integer(i1.intValue());得 a=2, b=1知识点:1.自动装箱和拆箱2.Integer -128到127之间的缓存3.反射,通过反射去修改private final 变量。***隐藏网址******隐藏网址***
java 求swap的用法 swap()是一个数组类的方法还是自己编写的方法 具体用法是怎样使用
//这个是和partition1函数并列的函数,用来交换数组中的两个下标元素用的。public void swap(E array,int x,int y){ E temp = array; array; array = temp;}-------------------------------------沈阳冠尔培训
用C、C++或java实现函数swap(int a,int b),交换实参值
swap(int &i int &j){int temp;temp=i;i=j;j=temp;}void main(){int a,b;swap(a,b);}这是按值传递与按别名传递的区别,按值传递swap函数结束后临时变量就会消失,而按别名传递只要把地址传入main函数就能实施调用
java程序为什么一定要写swap(x,y)
swap(x,y)是一个函数,字面意思是交换传入的两个参数的值。
函数内部会将变量x和变量y的值交换,并且打印出交换后的变量值,这里打印的是x=20,y=10
然而这样并不能真正把main函数里面定义的变量x,y的值互相交换,因为在这里传递给swap()函数的变量只是x,y的一个拷贝,然后再在函数内部对这个副本的值进行交换是不会对原来的x,y的值造成影响。
所以main函数里最后会打印出x=10,y=20
如果想要真正实现交换全部变量x,y的值,只需要把swap函数定义成static void swap(Integer x,Integer y),函数内部再对其进行交换就可以了。这里用到了Java中的包装数据类型,也称原始数据类型,用对象来接受传递过来的数据,然后对象就会指向全局变量x,y的内存地址,这个作用相当于C语言中的指针。这是让swap函数起作用的关键原理所在。
并不是所有的Java程序中都会用到这个函数,根据业务需要进行保留或删除吧。
java 怎么实现Swap函数 交换两个数
int n10,m=20,p=0;p=n;n=m;m=p;这就是最原始的用临时变量实现数据交换的处理
java类方法如何实现引用传递和值传递
参数是基本类型就是传值,传对象就是引用传递。
swap(Integer x, Integer y)可以传递引用,但是没办法实现交换。这跟Integer的实现方式有关。所以不是引用传递就一定能改变外面的值。
下面是引用传递,交换的情况,又臭又长。
class Untitled {int needFix;public static void swap(Untitled x, Untitled y) {int temp = x.needFix;x.needFix = y.needFix;y.needFix = temp;}public static void main(String args) {Untitled u1 = new Untitled();Untitled u2 = new Untitled();u1.needFix = 3;u2.needFix = 4;swap(u1, u2);System.out.println(u1.needFix+","+u2.needFix);}}
另外,你可以考虑一下引用传递,不过也是一种传值,java里面没有事实上的指针。直接交换引用指向的对象是没有作用的。
Untitled temp = x;x = y;y = temp;
无效。
java中swap函数在哪个包下
util包。根据查询java相关信息得知,java中swap函数在util包下。Java是一门面向对象编程语言,1990年代初由詹姆斯·高斯林等人开发出Java语言的雏形,最初被命名为Oak,后随着互联网的发展,经过对Oak的改造,1995年5月Java正式发布。
本文相关文章:
cesium的datasource(Cesium快速上手9-Camera和Scene中的其他函数使用)
2024年9月9日 18:01
day函数是什么意思(函数DAY($A$3)*4-4 代表什么意思)
2024年9月8日 10:45
递归算法解决八皇后问题(用递归函数设计八皇后问题的回溯算法C++代码)
2024年9月8日 09:01
c语言lseek函数的用法(问一个关于lseek函数的效率问题)
2024年9月7日 14:45
python递归函数考试题(python题目:要求用递归、递推和Lambda三种方式编写power(n,x)函数)
2024年9月6日 03:40
c语言中函数abs 和 fabs有什么区别?C语言中fabs表示什么意思
2024年9月4日 08:10
matlablength函数用法(如何使用MATLAB作出如下函数ns关于x变化的函数,x的取值范围为0到10)
2024年9月1日 04:40
php截取字符串以特定的字符分割(PHP怎么用substr函数截取字符串中的某部分)
2024年9月1日 03:45
small函数相反的函数(excel中small函数有什么作用)
2024年9月1日 01:40
easyx安装教程(【C语言】如何在VC++6.0中使用TC2.0特有的函数呢)
2024年8月31日 06:40
更多文章:
ug7 5下载(求UG7.5软件下载地址,及安装方法, win7-64bite的)
2024年6月8日 21:40
微信头像图片大全(做微信头像最好的图片,适合微信头像的图片有什么)
2024年8月15日 12:11
安卓电视体感游戏(我家才买的智能电视可以玩体感游戏,能玩什么样的游戏啊PS3那样的游戏能玩么)
2024年6月4日 17:34
枣庄同城游戏大厅官方下载(手机里面可以安装同城游大厅吗怎么安装在哪下载)
2024年5月10日 22:21