String 作為方法引數的一道題

2021-10-09 17:13:36 字數 817 閱讀 7849

牛客的一道題

public

class

sendvalue

public

static

void

main

(string[

] args)

}

答案是 6。

簡單解釋就是 string 類是 final 類,不可變。賦給乙個 string 變數新值其實就是將其指向乙個新建立的 string 物件,原物件被拋棄

接下來從 jvm 記憶體來分析這到題目

方法的呼叫對應虛擬機器棧的入棧出棧,程式從 main 方法開始執行

執行 sendvalue sv=new sendvalue(); 建立物件

左邊是棧右邊是堆

執行 sv.change(sv.str);

此時並沒有執行 change 裡面的 str=「10」;

執行 str=「10」; 後

所以回到main方法執行system.out.println(sv.str);結果還是6

至於 6 和 10 這兩 string 物件存放在哪,我覺得是在堆中的字串常量池(jdk8)

String的一道面試題

package com.liang.day08.demo01 字串的特點 1.字串內容用不可變 2.字串不可變,所以是可以共享的 3.字串效果上相當於char字元陣列,底層原理是byte位元組陣列 public class demo01string string str3 newstring cha...

一道this的題目

請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...

C 的引數傳遞,一道面試題

1.定義乙個類mpigeon,呼叫乙個swap互動函式,問最後實參的結果是什麼 類定義 public class mpigeon 交換函式 public void swap object a,object b 測試 private void button2 click object sender,e...