1. 程式人生 > >關於java中string的內存位置

關於java中string的內存位置

基本數據類型 對象 指向 存在 nbsp 引用 什麽 string類型 類型

java運行時內存分五部分:

  線程共享:堆內存、方法區(包括常量池)

  線程私有:棧內存、本地方法棧、程序計數器

string不是基本數據類型,那麽一個string的內存位置是什麽呢?一共有兩種情況:

  1、string直接賦值:

    String s = "haha";

    s的引用存在棧內存中,引用指向的haha存在方法區的常量池中(先判斷常量池中是否有一個haha,存在則直接指向)

  2、string對象new創建

    String s = new String("haha");

    s的引用存在於棧內存中,引用指向的haha對象,存在堆內存中(每new一次,在堆中創建一個新的haha對象)

總結:

  1、string類型的引用,都是存在棧內存中的;

  2、string引用指向,直接賦值存在棧內存,new出來的存在棧內存。

關於java中string的內存位置