国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java值傳遞之swap()方法不能交換的解決

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

2020-09-29 00:53秦彬桂 Java教程

這篇文章主要介紹了Java值傳遞之swap()方法不能交換的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

swap不能交換原生數據類型以及字符串類型。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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”);應該是生成在堆中,是引用對象,但為什么交換不了?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

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

但是這樣用數組改寫后便可實現交換功能了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

總結:

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

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

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

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

java中的參數傳遞機制:值傳遞

形參是基本數據類型的,將實參的值傳遞給形參的基本數據類型的變量

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

二者的概念:

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

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

Java數據類型在內存中的存儲:

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

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

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

那么如何交換兩個數值呢?

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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()方法不能交換的解決就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qbg291932598/article/details/69055864

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色综网| a久久| 欧美怡红院视频一区二区三区 | 中文字幕亚洲综合久久久软件 | 在线观看亚洲一区二区三区 | 国产中文字幕一区 | 日韩成人av在线 | 热久久国产 | 激情综合网婷婷 | 九九综合九九 | 成人免费黄色毛片 | 欧美午夜一区二区三区免费大片 | 激情五月婷婷综合 | yw193com尤物 | 日本一区二区在线观看视频 | 久草久| 久久丁香 | 91人人网| 国产主播福利 | 国产福利在线观看 | 亚洲影视一区 | 亚洲精品久久久久久久久久吃药 | 欧美在线视频网 | caoporn免费 | 国产成人精品免高潮在线观看 | 日韩精品在线播放 | 午夜精品在线观看 | 亚洲特黄av| 亚洲成人免费视频 | 亚洲激情一区二区 | 精品99视频 | 亚洲国产美女视频 | 国产高清在线不卡 | 91亚洲精品 | 黄色毛片网站在线观看 | 久久久久亚洲精品 | 久久综合av| 草久在线观看 | 日韩第一区 | 成年人毛片在线观看 | 亚洲视频精品一区 |