Java String作為參數(shù)的情況


layout: post
title: Java String作為參數(shù)的情況
date: 2015-05-28
categories: blog
tags: [Java,String]
category: Java
description: java中的String作為參數(shù)是需要特別的注意.


String是不可以被修改的
一旦String對象創(chuàng)建之后,我們是不能修改他的值的(這里的修改是指在內(nèi)存的同一位置).我們可以從JDK的String類里看到
比如substring()方法

    public String substring(int beginIndex, int endIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if (endIndex > value.length) {
        throw new StringIndexOutOfBoundsException(endIndex);
    }
    int subLen = endIndex - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    return ((beginIndex == 0) && (endIndex == value.length)) ? this
            : new String(value, beginIndex, subLen);
}

在最后,我們發(fā)現(xiàn)他返回的String是重新new的一個對象,而不是在原對象的基礎(chǔ)上修改

基本類型做參數(shù)傳的是值,對象傳遞的是相當(dāng)于引用
傳值是不會導(dǎo)致數(shù)據(jù)的改變的,但是當(dāng)傳遞的是引用,在方法中改變了對象的某字段,會導(dǎo)致方法外部的變量也改變
example:

public class Test {
public int i = 0;
public void chaneg(Test t) {
    t.i = 10;
}
public static void main(String[] args) {
    Test test = new Test();
    System.out.println(test.i);
    test.chaneg(test);
    System.out.println(test.i);
} 
}

output: 0 10

說明在方法內(nèi)改變變量值導(dǎo)致外部改變
但是對于String當(dāng)值的改變是,內(nèi)存地址已改變
則相當(dāng)于下面的example:

public class Test {
public int i = 0;
public void chaneg(Test t) {
    t = new Test();//改變內(nèi)存地址
    t.i = 10;
}
public static void main(String[] args) {
    Test test = new Test();
    System.out.println(test.i);
    test.chaneg(test);
    System.out.println(test.i);
}
}

output: 0 0

也就是說沒有改變外部的值
總結(jié)
當(dāng)在方法中該變量對象的內(nèi)存地址之后,是不會影響外部的值,但是如果只是改變了某字段的值,外部的值會跟著改變.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評論 18 399
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,761評論 11 349
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,241評論 0 62
  • 一評論1.上海阿姨,吐痰男子。評論:上海阿姨,男子。阿姨:處理方式不妥,出發(fā)點好的。男子:同情,,像班上熟悉的學(xué)生...
    揚帆起航1閱讀 663評論 0 0
  • 今天,被一則清華寫給考生的回信刷爆了朋友圈,我點開看了看,竟是看哭了...... 他是甘肅定西一中的畢業(yè)生;他先天...
    筱露筆記閱讀 733評論 0 1

友情鏈接更多精彩內(nèi)容