在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,在调用的地方,再次输出变量的值,我就不知道了,于是,他提示我用反射.思考了良久,就写了下面的代码.package com.yzh.study.fanshe; import java.lang.reflect.Field; /** * author:yangzhou * time: 2018/5/9 15:55 * desc…
以下方法的根本原理就是: 借助第三个变量 c = a; a = b; b = c; 运算符-不借助第三变量: a = a+b; b = a-b; a = a-b; 为运算符-不借助第三个变量: (此种方法运用这种原理:一个数对另一个数位异或两次,该数不变)a = a^b; b = a^b; a = a^b; /** * Swap * 互换两个变量的值的方法 * @author bc * @since 2018年3月27日 */ public class Swap { public static…
利用一个小技巧,一个整数a在异或另一个整数b两次以后所得的值还是整数a. 具体的过程我们可以自己找两个整数以二进制的形式自己在纸上画一下他们的异或过程.(异或的运算符号为"^") 比如: 下面给出交换两个整数位置的代码,不需要临时变量temp. public class Aa { public static void main(String[] args) { int a = 3, b = 5; System.out.println("before swap:" +…
错误示范 1. 直接交换 public class SwapNumbers { // 直接交换 public static void swap(int a, int b) { int temp = a; a = b; b = temp; }; public static void main(String[] args) { int a = 10; int b = 20; System.out.println("交换前: a = " + a + ": b = " +…
第一种:添加中间变量,算是最经典最简易的一种了. //添加一个中间变量 int x = 1, y = 2; int z; z = x;x = y;y = z; System.out.println(x+","+y); 虽说是最容易想到的一种,但是不建议使用,原因无他,太low. 第二种,通过加减实现. //加减 x = 1;y = 2; x = x + y; y = x - y; x = x - y; System.out.println(x+","+y);  第三…
关于这个问题网上有好多答案,最近有人说这是个奇葩问题 个人测试了一把,如果是普通的数字的话,基本上没有问题 public static void main(String[] args) { int a = 2147483647; int b = 2147483646; // a=a+b; // b=a-b; // a=a-b; // b = a + (a = b) * 0; // a = a * b; // // b = a / b; // // a = a / b; a ^=b; b ^=a;…
一.参数传递方法 为解决标题问题,首先介绍参数传递方法.目前各类程序设计语言的参数传递方法主要有三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值:按引用传递表示方法(函数)接收的调用者提供的变量地址:按指针传递表示方法(函数)接收的是调用者提供的指针的拷贝,不改变指针的值和地址,但可以改变指针所指向的地址. 二.Java参数传递方法 Java提供的参数传递方法,很遗憾只有一种,按值传递.也就是说,方法得到的是所有参数值的一个拷贝…
CREATE TABLE tab_update (id TINYINT,n1 NVARCHAR(30),v1 NVARCHAR(30),s1 NVARCHAR(30)) INSERT INTO tab_update (id,n1,v1,s1) SELECT 1,'天','土豆','章子怡' UNION ALL SELECT 2,'集团','黄瓜','汪峰' UNION ALL SELECT 3,'宇宙','茄子','杰克隽逸' UNION ALL SELECT 4,'海洋','西红柿','刘德华…
1.中间变量(在开发中常用) int c=a; a=b; b=c; System.out.println("a的值: "+a+" b的值: "+b); 2.按位异或(面试,只能是整数) a=a^b; b=a^b;//a^b^b=a a=a^b;//a^b^a=b System.out.println("a的值: "+a+" b的值: "+b); 3.相加(面试) a=a+b; b=a-b;//a+b-b=a a=a-b;//a…
第一种:在main输出,通过反射实现 1 public static void main(String[] args) throws Exception { Integer a = 1; Integer b = 2; swap(a, b); System.out.println("a=" + a + "--------b=" + b); } public static void swap(Integer i1, Integer i2) throws Exceptio…
首先我们定义两个变量用来检查方法可行性 int a=5; int b=3; 方法一,也是最容易想到的,就是建立中间变量法 int temp; temp=a; a=b; b=temp; System.out.println("方法一 a的值是 "+a+" b的值 "+b); 方法二,加减法 a=a+b; b=a-b; a=a-b; System.out.println("方法二a的值是 "+a+" b的值 "+b); 方法三,异…
在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个变量的值. 使用临时变量实现 static void Main(string[] args) { int x = 1; int y = 2; Console.WriteLine("x={0},y={1}",x, y); int temp = x; x = y; y = temp; Cons…
关键字-标识符-常量和变量-运算符-流程控制-方法-数组 1.关键字 keyword Java系统中已经赋予了特殊含义的单词 特点:全部是小写字母注意: Java中的保留字:现在没有使用,以后有可能会使用的单词 例:goto,const 案例: public class Demo{ public static void main(String[] args){ System.out.println(“Hello World”); } } 关键字解析:public:权限修饰符,说明此类是公共的cl…
前言 我眼中的<javascript高级程序设计> 和<你不知道的javascript>是这样的:如果<javascript高级程序设计>是本教科书的话, <你不知道的javascript>就是那本王后雄有以下两点:1. 老师会教你: 考试最后的准备仍然要“回归课本”2. 在1的前提下并不妨碍我们希望拥有一本好用的“王后雄” JS数据类型 JS类型分类 讲到类型, 首先要说的当然是JS的类型分类, 对于这一点,<javascript高级语言程序设计&g…
  2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于:   分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个年代, 大家写点书, 也无非就是为了搞点钱, 基本都是罗列一些知识点, 基本都是写给已经会了的人看的. 真正用心写书的人, 不多. 如果真正用心写书, 且站在读者的角度去写, 那就少之又少了. 关于linux shell环境变量, 我看了四…
#不使用第三个变量交换两个变量的值 a=1 b=2 a,b=b,a#python的直接交换 #另一种交换方法 a=a+b#a=3 b=2 b=a-b#a=3 b=1 a=a-b#a=2 b=1 print(a,b)…
用指针交换两个变量的值(10分) 题目内容: 用指针交换两个变量的值 主函数参考: int main( ) { int a,b; scanf("%d%d",&a,&b); swap(&a,&b); printf("%d %d",a,b); return 0; } 输入格式: 两个变量 输出格式: 两个变量 输入样例: 5 8 输出样例: 8 5 code #include "stdio.h" //交换两个变量的值…
Python两个变量的值进行交换的方法 使用第三方变量: '''这是第一种赋值方法,采用第三方变量''' c = a a = b b = c 使用两个变量: '''使用两个变量''' a = a+b #取两个数的和 b = a-b #然后a-b等于a然后赋值给b a = a-b #然后a-b等于b然后赋值给a,完成值的交换 使用两个变量的另一种方法: a,b = b,a…
# 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B B = A^B A = A^B # 代码 #include <iostream> using namespace std; void fun1(int m,int n) { cout << "方法一,基于加减法,交换两个变量" << endl; m =…
有两个变量a 和b,想要交换它们的值 int a,b; 能不能这样操作呢? b=a; a=b; 不能啊,这样操作的意思是把a的值放到b中,然后b中的值已经被覆盖掉了,已经不是b原来的那个值了,所以是没有意义的. OK,既然不能这样操作,那怎么办? 看一下问题出在哪里,是不是b的值被覆盖掉了,那么可以先把b的值备份一下,这样就可以覆盖了,对不对? OK,设置一个变量t 先把b中的变量备份到t中 t=b; 然后把a中的变量放到b中 b=a; 然后把备份的b放到a中 a=t; 记录一下这个问题的思考过…
相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方法呢,稍加思考我们就会用到PHP中的函数来实现 第三种方法呢,我们来采用PHP中提供各种字符串分割函数来实现. 第四种方法呢,对字符进行编码,例如base64_encode,要保证编码是可逆的. 简单的题目不同的思想就会有不同的解法,期待更多的答案.…
前言 该文是在看别人博客的时候发现的,很有趣的一篇文章,这里摘录到自己的简书中,供给各位读者学习本文主要描述,如何不使用中间值,将两个变量的值进行交换.前三种只适用于number类型的数值交换,第四和第五种适合其他类型. 简书原文 https://www.jianshu.com/p/64a503c762e9 一.普通做法 普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存.这样的做法直观,易懂.但是,会增加内存的使用. var a = 1, b = 2, tmp; tmp = a;…
python中如何调用函数交换两个变量的值 所有代码来在python3.7.1版本实现 以下实例通过用户输入两个变量,并相互交换:  方法一: def swap(a,b): # 创建临时变量,并交换 temp = a a = b b = temp print(a,b) 以上实例中,我们创建了临时变量 temp ,并将 a 的值存储在 temp 变量中,接着将 y 值赋给 a,最后将 temp 赋值给 b变量. 方法二: def swap2(a,b): # 不使用临时变量 a,b = b,a pr…
* JavaScript简称为JS * JavaScript是什么?     * 是一门脚本语言:不需要编译,直接运行     * 是一门解释性的语言:遇到一样代码就解释一行代码     * C#语言是一门面向对象的语言,也是编译语言,是.net技术使用的     * 是一门动态类型的语言---不解析     * 是一门基于对象的语言---不解释     * 是一门弱类型的语言,声明变量的时候都使用var (     * 强类型的语言:C#就是----->     * 存储一个数字: int n…
在 Java 中不使用多余变量交换两个字符串 public class Test { public static void main(String[] args) { String a = "Hello"; String b = "World"; System.out.println("Strings before swap: a = " + a + " and b = " + b); a = a + b; b = a.sub…
函数return多个值: 补充知识点:写代码得到时候少用全局变量: 1.不安全 2.会一直占着内存不释放 函数多个return值,那么会把这几个return的值都放在一个元组里面,然后返回 def hello(a,b,c,d): return a,b,c,d res=hello('ybq','ede','rfv','deq') print(res)#('ybq', 'ede', 'dede', 'deq') 列表推导式: #列表推导式 nums=[0,1,3,4,5,6,7] #将nums里in…
不涉及第三个变量交换两个变量的值 方法1:使用加减法 <?php $a = 1; $b = 2; $a = $a+$b; $b = $a-$b; $a = $a-$b; printf("\$a=%d,\$b=%d", $a, $b); 输出: $a=2,$b=1 方法2:使用乘除法 <?php $a = 3; $b = 4; $a = $a*$b; $b = $a/$b; $a = $a/$b; printf("\$a=%d,\$b=%d", $a, $…
今天腊月二十九啦,无心上班,专注划水.然后就在那里翻帖子消磨时光. 看到了这样一个问题,有人提问为什么   a=b+(b=a)*0  ??? 第一眼看上去,我也有点蒙,仔细推敲了一下,嗯~的确是交换了值 先把这个等式为什么能交换值先搁置一下,先来总结一下目前我所知道的 两个变量进行值交换有哪些方式? 第一种方式也是最常用的方式:通过中间变量 int a = 1; int b = 2; int temp = a; a = b; b = temp; 第二种方式:通过数学运算 int a = 1; i…
1. 问题描述: 有两个数组a,b,大小都为n,数组元素的值任意整形数,无序: 要求:通过交换a,b中的元素,使[数组a元素的和]与[数组b元素的和]之间的差最小. 2. 求解思路: 当前数组a和数组b的和之差为    A = sum(a) - sum(b)    a的第i个元素和b的第j个元素交换后,a和b的和之差为    A' = sum(a) - a[i] + b[j] - (sum(b) - b[j] + a[i])        = sum(a) - sum(b) - 2 (a[i]…
反射是很强大的,谁说的final修饰的就不能改变, 通过反射获取成员变量,之后可以取消访问修饰符,也就是说private的也可以访问, 在修改常量(final修饰的),之后就可以对其做任何操作了 如下,通过一个方法交换两个Integer对象的值: package ni.jun.yang.test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class Test { public static…