易截截图软件、单文件、免安装、纯绿色、仅160KB

三分钟理解Java中字符串(String)的存储和赋值原理


可能很多java的初学者对String的存储和赋值有迷惑,以下是一个很简单的测试用例,你只需要花几分钟时间便可理解。
1.在看例子之前,确保你理解以下几个术语:
栈 :由JVM分配区域,用于保存线程执行的动作和数据引用。栈是一个运行的单位,Java中一个线程就会相应有一个线程栈与之对应。
堆 :由JVM分配的,用于存储对象等数据的区域。
常量池 :在堆中分配出来的一块存储区域,用于存储显式 的String,float或者integer.例如String str="abc"; abc这个字符串是显式声明,所以存储在常量池。
2.看这个例子,用JDK5+junit4.5写的例子,完全通过测试
Java代码
import static org.junit.Assert.assertNotSame;   
import static org.junit.Assert.assertSame;   
  
import org.junit.Test;   
  
/**  
 * @author Heis  
 *  
 */  
public class StringTest{   
  
    @Test  
    public void testTheSameReference1(){   
        String str1="abc";   
        String str2="abc";   
        String str3="ab"+"c";   
        String str4=new String(str2);   
           
        //str1和str2引用自常量池里的同一个string对象   
        assertSame(str1,str2);   
        //str3通过编译优化,与str1引用自同一个对象   
        assertSame(str1,str3);   
        //str4因为是在堆中重新分配的另一个对象,所以它的引用与str1不同   
        asse


相关文档:

sql 2005 存储过程分页 java 代码

 create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',         
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列 ......

解析Java类和对象的初始化过程

类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......

java字符串的各种编码转换【转贴】

import java.io.UnsupportedEncodingException;
  /**
  * 转换字符串的编码
  */
  public class ChangeCharset
{
  /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
  public static final String US_ASCII = "US-ASCII";
  /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 ......

JAVA序列化的两种方式【转贴】

JAVA序列化的两种方式
//大家都知道Serializable是一个mark interface,告诉JVM这个对象可以被转换成二进制流来传输.
//Serializable 在我们实现这个接口的时候,我们可以使用4个私有方法来控制序列化的过程:
//我们来看一个例子:
public class FooImpl implements java.io.Serializable
{
pr ......

java连接各种数据库方式速查表

java连接各种数据库方式速查表1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,u ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号