最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java值傳遞之swap()方法不能交換的解決

 更新時間:2020年09月28日 14:14:39   作者:秦彬桂  
這篇文章主要介紹了Java值傳遞之swap()方法不能交換的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

自己寫了一個Swap測試類,代碼如下:

swap不能交換原生數(shù)據(jù)類型以及字符串類型。

public class Swap5
{
 public static void main(String[] args)
 {
 // String x = "x111";
 // String y = "y111";
  String x = new String("x111");
  String y = new String("y111");
  swap(x, y);
  System.out.println(x);
  System.out.println(y);
 }

 public static void swap(String a, String b)
 {
  String temp = a;
  a = b;
  b = temp;
 }
}

運行結果:java Swap5

x111

y111

疑惑:注釋部分不能交換可以理解為x和y生成在字符串池中,但是String x = new String(“x111”);應該是生成在堆中,是引用對象,但為什么交換不了?

public class Swap
{
 public static void main(String[] args)
 {
  int c = 3;
  int d = 5;
  swap(c, d);
  System.out.println("c: " + c + " d: " + d);

 }

 public static void swap(int a, int b)
 {
  int temp = a;
  a = b;
  b = temp;
 }
}

運行結果:

java Swap

c: 3 d: 5

為什么調(diào)用swap()方法后并沒有交換c、d的值呢,因為java只有值傳遞(沒有引用傳遞),所以其實調(diào)用swap()時是把值賦給a、b,賦完后與c、d就沒什么關系,c、d還是原來的值。其實就是值傳遞。不理解的話回去看看值傳遞。

但是這樣用數(shù)組改寫后便可實現(xiàn)交換功能了:

public class Swap5
{
 public static void main(String[] args)
 {
  int[] i = {3, 5};

  swap(i);
  System.out.println(i[0]);
  System.out.println(i[1]);
 }

 public static void swap(int[] a)
 {
  int temp = a[0];
  a[0] = a[1];
  a[1] = temp;
 }
}

運行結果:

5

3

總結:

引用類型才可以交換。因為原生數(shù)據(jù)類型是直接賦值,而引用類型直接賦的是地址,地址指向的是同一個對象,所以能改變。

補充知識:Java參數(shù)值傳遞 swap(a,b)--如何交換a、b的值

首先明白Java的數(shù)據(jù)類型分為兩種:基本數(shù)據(jù)類型 和 引用數(shù)據(jù)類型

java中的參數(shù)傳遞機制:值傳遞

形參是基本數(shù)據(jù)類型的,將實參的值傳遞給形參的基本數(shù)據(jù)類型的變量

形參是引用數(shù)據(jù)類型的,將實參的引用類型變量的值(對象的首地址)傳遞給形參

二者的概念:

1)基本類型:簡單數(shù)據(jù)類型是不能簡化的、內(nèi)置的數(shù)據(jù)類型、由編程語言本身定義,它表示了真實的數(shù)字、字符和整數(shù)。

2)引用數(shù)據(jù)類型:Java語言本身不支持C++中的結構(struct)或聯(lián)合(union)數(shù)據(jù)類型,它的復合數(shù)據(jù)類型一般都是通過類或接口進行構造,類提供了捆綁數(shù)據(jù)和方法的方式,同時可以針對程序外部進行信息隱藏。

Java數(shù)據(jù)類型在內(nèi)存中的存儲:

1)基本數(shù)據(jù)類型的存儲原理:所有的簡單數(shù)據(jù)類型不存在“引用”的概念,基本數(shù)據(jù)類型都是直接存儲在內(nèi)存中的內(nèi)存棧上的,數(shù)據(jù)本身的值就是存儲在??臻g里面,而Java語言里面八種數(shù)據(jù)類型是這種存儲模型;

2)引用類型的存儲原理:引用類型繼承于Object類(也是引用類型)都是按照Java里面存儲對象的內(nèi)存模型來進行數(shù)據(jù)存儲的,使用Java內(nèi)存堆和內(nèi)存棧來進行這種類型的數(shù)據(jù)存儲,簡單地講,“引用”是存儲在有序的內(nèi)存棧上的,而對象本身的值存儲在內(nèi)存堆上的;

區(qū)別:基本數(shù)據(jù)類型和引用類型的區(qū)別主要在于基本數(shù)據(jù)類型是分配在棧上的,而引用類型是分配在堆上的(需要java中的棧、堆概念),

那么如何交換兩個數(shù)值呢?

那么可以傳遞引用類型的數(shù)據(jù),如對象或者數(shù)組,下面是傳遞的數(shù)組:

public class Swap5
{
  public static void main(String[] args)
  {
    int[] i = {3, 5};
 
    swap(i);
    System.out.println(i[0]);
    System.out.println(i[1]);
  }
 
  public static void swap(int[] a)
  {
    int temp = a[0];
    a[0] = a[1];
    a[1] = temp;
  }
}

以上這篇Java值傳遞之swap()方法不能交換的解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java多線程入門知識及示例程序

    java多線程入門知識及示例程序

    java多線程入門知識及示例程序,大家參考使用吧
    2013-12-12
  • Mybatis 逆向工程的三種方法詳解

    Mybatis 逆向工程的三種方法詳解

    這篇文章主要介紹了Mybatis 逆向工程的三種方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 為zookeeper配置相應的acl權限

    為zookeeper配置相應的acl權限

    這篇文章主要介紹了為zookeeper配置相應的acl權限的相關實例,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • IDEA中Directory創(chuàng)建多級目錄的實現(xiàn)

    IDEA中Directory創(chuàng)建多級目錄的實現(xiàn)

    本文主要介紹了IDEA中Directory創(chuàng)建多級目錄的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java Socket實現(xiàn)UDP編程淺析

    Java Socket實現(xiàn)UDP編程淺析

    類 DatagramSocket 何 DatagramPacket(數(shù)據(jù)包/數(shù)據(jù)報) 實現(xiàn)了基于 UDP協(xié)議網(wǎng)絡程序;UDP數(shù)據(jù)報通過數(shù)據(jù)報套接字 DatagramSocket 發(fā)送和接收,系統(tǒng)不保證 UDP數(shù)據(jù)報一定能夠安全送達目的地,也不確定什么時候可以抵達
    2022-11-11
  • springboot中Excel文件下載踩坑大全

    springboot中Excel文件下載踩坑大全

    本文主要介紹了springboot中Excel文件下載,但是卻容易遇到很多坑,文中通過示例代碼介紹的非常詳細,感興趣的小伙伴們可以參考一下
    2021-07-07
  • feign如何打印出http請求

    feign如何打印出http請求

    這篇文章主要介紹了feign如何打印出http請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java算法實現(xiàn)紅黑樹完整代碼示例

    java算法實現(xiàn)紅黑樹完整代碼示例

    這篇文章主要介紹了java算法實現(xiàn)紅黑樹完整代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Spring定時任務中@PostConstruct被多次執(zhí)行異常的分析與解決

    Spring定時任務中@PostConstruct被多次執(zhí)行異常的分析與解決

    這篇文章主要給大家介紹了關于Spring定時任務中@PostConstruct被多次執(zhí)行異常的分析與解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • Spring中的事務管理及實現(xiàn)方式解析

    Spring中的事務管理及實現(xiàn)方式解析

    這篇文章主要介紹了Spring中的事務管理及實現(xiàn)方式解析,Spring事務管理基于底層數(shù)據(jù)庫本身的事務處理機制,數(shù)據(jù)庫事務的基礎,是掌握Spring事務管理的基礎,這篇總結下Spring事務,需要的朋友可以參考下
    2024-01-01

最新評論

扶余县| 白沙| 宁蒗| 布拖县| 驻马店市| 河间市| 望江县| 阳春市| 平昌县| 巴中市| 宿迁市| 顺昌县| 江城| 章丘市| 辉县市| 卢湾区| 手游| 易门县| 莱阳市| 兴国县| 育儿| 梅州市| 嘉善县| 宜兰市| 来宾市| 当涂县| 灵台县| 临清市| 赞皇县| 兴业县| 阿瓦提县| 凤庆县| 庐江县| 荥阳市| 万载县| 安吉县| 治县。| 凤山市| 进贤县| 清涧县| 阿瓦提县|