Java记录 -32- 值交换

1. 实现两个变量值交换:

    public static void main(String[] args) {
        int a = 3;
        int b = 5;
        
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a);
        System.out.println(b);
        System.out.println("----------------");
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println(a);
        System.out.println(b);
    }

上面代码在进行a和b变量值互换时,实现了两种方式:一种利用临时变量;另一种则是利用两个变量的加减,不借助于临时变量。

2.

public class SwapTest2 {
    public static void change(char[] cs, char c){
        cs[0] = ‘C‘;
        c = ‘D‘;
    }
    public static void swap(char[] cs){
        char temp = cs[0];
        cs[0] = cs[1];
        cs[1] = temp;
    }
    public static void main(String[] args) {
        char[] ch = {‘A‘,‘B‘};
        swap(ch);
        System.out.println(ch);
        
        change(ch, ch[1]);
        System.out.println(ch);
    }
}

Java是值传递,对于数组来说,传递的是数组的首地址。利用数组可以实现值交换。

时间: 2024-10-10 23:24:54

Java记录 -32- 值交换的相关文章

Java 中的值传递和参数传递

Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值. 引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值. Jav

java基础一(阅读Head First Java记录)

写在前面的话 在实际应用java中,因为没有系统去看过书或者学习过,所以基础薄弱,刚好这本书是比较入门级的一些书,记录一下下面的一些基本概念,以方便自己来学习.当然如果对大家有帮助也是很好的. 因为书有大概700页,如果把各个知识点放在一个随笔里未免过多了.随意我决定拆分成几个随笔来写.这篇主要是介绍了一些运行java程序.java的类.变量.方法的一些基础内容.   java工作方式 1.编写源代码.java文件 2.通过javac编译程序对java代码进行编译,检查是否有错误 3.编译通过没

JAVA中只有值传递

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:"引用传递!",并且还觉得自己对java的这一特性很是熟悉! 结果发现,我错了! 答案是: 值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人! 综合网上的描述,我大概了解了是怎么回事,现在整理如下,如有不对之处望大神提出! 先来看一个作为程序员都熟

设计模式(java的32种设计模式)

转自:leshui http://blog.csdn.net/leshui/article/details/11951 在java版看见了这篇文章,作者以轻松的语言比喻了java的32种模式,有很好的启发作用,但可惜没有给出具体的意思,我就在后边加上了:)这些都是最简单的介绍,要学习的话建议你看一下<java与模式>这本书. 创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四

Java学习-047-数值格式化及小数位数四舍五入

此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍五入法)中四舍五入法有如下 7 种: 1. ROUND_UP:远离零方向舍入.向绝对值最大的方向舍入,只要舍弃位非0即进位. 2. ROUND_DOWN:趋向零方向舍入.向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况. 3. ROUND_CEILING:向正无穷方向舍入.向正最大方向靠拢.

Java中的值传递与“引用传递”

首先,Java没有 引用传递 这么一说. Java只有值传递,传递的都是值,基本数据类型传递的是值,引用类型传递的是地址值. 我来理一下这其中犹如米线跟米面绞在一起了,再跟粉丝混在一起的关系. 好的,我们来看第一个例子: public static void main(String[] args) { int a = 1; int b = 4; System.out.println("Before : a=" + a + "," + "b=" +

JS杂技之无中间变量的值交换方式

从http://www.cnblogs.com/liuyitian/p/4081517.html#3074553看到一种无中间变量的值交换方式,具体如下: var a = 1;var b = 2;a = [b, b=a][0]alert(a+'_'+b) // 结果 2_1,a和b的值已经互换 端详代码,技巧是用一个匿名数组来储存和交换值,这种方式暗里需要新建数组的,它相对于新建变量我感觉时间空间上都没优势,可读性还差些.只是写法稍简短花哨一些.

java 线程返回值,优先级,后台线程 示例代码

ava 线程返回值,休眠,优先级,后台线程  示例代码 package org.rui.thread.basic; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Execu

PHP获取MySql新增记录ID值的方法

今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法有 1.使用语句 mysql_query("select max(id) from user",$link); 2.使用函数msyql_insert_id(); (1)mysql版 int mysql_insert_id ([ resource $link_identifier = NUL

java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解

head first java里写到“java是通过值传递的,也就是通过拷贝传递”,由此得出结论,方法无法改变调用方传入的参数.该怎么理解呢? 看例子: public class Test1 { public static void main(String[] args) { int x = 7; System.out.println("传入方法之前:x="+x); addOne(x); System.out.println("传入方法之后:x="+x);}priv