• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • JAVA入門級教學之(參數傳遞)

    標簽: JAVA入門教學

    方法調用的時候,涉及參數傳遞的問題,傳遞的時候,java只遵循一種語法機制

    就是將變量中保存的“值”傳遞過去了,只不過有的時候這個值是一個字面值1...22233..221

    有的時候這個值是另一個java對象的內存地址0x1234

     

    int i=10;

    int j=i;

    i傳遞給了j,實際上只是將i變量中保存的10傳遞給j了,j實際上是一塊全新的內存空間

     

    User u=0x1234;

    User u2=u;=User u2=0x1234;

    u傳遞給了u2,實際上是將ox1234這個值賦值給了u2了,u和u2實際上是兩個不同的局部變量

    但是他們這兩個變量指向堆內中同一個java對象

    其實u這個變量它儲存了兩個值,一個值是指向堆內存的引用值0x1234,一個值是它本身在棧內存中的位置值00cc222

     

    定義一個測試類:

    package com.lbj.javase04;
    
    public class Test01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int i=10;
    		//add方法調用的時候,給add方法傳遞了一個變量i,到底傳遞的是什么?
    		//java語言中方法調用的時候涉及到參數傳遞的問題
    		//參數傳遞實際上傳遞的是變量中保存的具體值。
    		Test01.add(10);//add(10);
    		System.out.println("i:"+i);//10
    	}
    	public static void add(int i){
    		i++;
    		System.out.println("i:"+i);//11
    	}
    
    }
    

     實際調用的內存示意圖:

     

    再定義一個測試類:

    package com.lbj.javase05;
    /**
     * 參數傳遞的過程實際上是傳遞變量的"值",這個值可以是數值類型的,也可以使引用地址類型的
     * @author 14811
     *
     */
    public class Test02 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
         User u=new User(20);
         //傳遞u給add方法的時候,實際上傳遞的是u變量中保存的量,只不過這個值是一個java對象的內存地址
         add(u);
         
         System.out.println(u.age);//21
    	}
    	public static void add(User u){
    		u.age++;
    		System.out.println(u.age);//21
    	}
    	
    
    }
    class User{
    	int age;
    	
    	public User(int i){
    		age=i;
    	}
    }
    

    內存變化示意圖:

    版權聲明:本文為LBJ8888888原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/LBJ8888888/article/details/104470693

    智能推薦

    Java8新特性之Stream 入門級

    Java 8為我們帶來了許多提高生產力的新玩意 這次來研究一下流 Stream的具體用法。 我們先看看比較官方的說法: 流使用一種類似sql語句從數據庫查詢數據的直觀方式來提供一種對Java集合運算和表達的高階抽象 Stream API可以極大提高我們的生產力,讓我們寫出高效簡潔的代碼 Stream將要處理的集合看做一種流, 流在管道中傳輸, 并且可以在管道的節點上進行處理, 比如篩選, 排序,聚...

    【python入門級教程】Python GUI界面教學(01)

    文章目錄 一、了解什么是GUI。 二、我們選什么庫做GUI首選呢? 三、開始我們的制作。 1.制作目標 二、tkinter基本語法 二、彈出一個新窗口 三、展示文本 四、展示多個文本 四、擴展 一、了解什么是GUI。 我們通常使用的軟件他們的界面豐富多彩,可以自定義,我們稱這樣的界面為GUI界面,而在我們之前的學習中,我們用到的都是CUI界面,CUI指控制臺,與cmd長得一樣,print函數就是用...

    【python入門級教程】Python GUI界面教學(02)

    鴿子回來了! 文章目錄 一、學習內容。 二、開始學習。 1.導入庫: 2.新建常規窗口。 3.使用Button控件。 4.config方法。 5.Button的選項(option)。 6.Button的常用方法。 7.綁定事件。 三、尾聲。 一、學習內容。 學習Button控件,控件的bind函數。 二、開始學習。 1.導入庫: 2.新建常規窗口。 3.使用Button控件。 如果像這樣就OK: ...

    Java入門級基礎語法

    Java基礎語法 注釋 1.單行注釋 2.多行注釋 3.文檔注釋(/**開頭 */結尾 表示一種描述) 標識符 Java所有的組成部分都需要名字,類名、變量名以及方法名被稱為標識符 所有的標識符都應該以字母(A-Z或a-z),美元符($),下劃線(_)開頭 首字母之后可以是字母(A-Z或a-z),美元符($),下劃線(_)或數字的任何字符組合 類似#,%這種特殊符號,不要出現在變量命名中 不能用關...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡