对于一门语言实现一种通用执行环境,可以叫做虚拟机(系统与进程的通用平台),也可以叫做解释器。需要实现以下几个部分:1语言内置对象在虚拟机中的实现,一般有字符串,列表,hash,object对象等,字符串一般采用字符串池来实现。2内存管理,包括了内存分配,内存回收,垃圾回收等内容3独立于os平台的中间码,java字节码,python字节码等4虚拟机的执行字节码的部分:模拟cpu在执行语言层的“汇编”
分类:
其他好文 时间:
2018-10-02 20:38:46
阅读次数:
129
栈中有共享池的概念,(视频下载) (全部书籍)比如下面例子中,sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将"hello"存放进栈,并令sz指向”hello”,如果已经有”hello” 则直接令sz指向“hello”。对于int, ...
分类:
编程语言 时间:
2018-09-23 13:51:58
阅读次数:
148
对于下面程序中:ss0 = new String( "hello" );是用new()来新建对象的,(视频下载) (全部书籍)存于堆中。每调用一次就会创建一个新的对象。当然从节省空间的角度来讲,肯定不如str="hello",有童鞋一定问,那要它有什么用?当时设计编译器时,为什么要设计它?马克-to ...
分类:
其他好文 时间:
2018-09-23 13:28:59
阅读次数:
173
1.字符串intern机制 用了这么久的python,时刻和字符串打交道,直到遇到下面的情况: 咦,这是怎么肥事?我们知道 '=='是用来比较两个变量的字面值是否一致,而 'is'是用来比较前后两个变量是否根本就是同一对象,也就是指向同一个内存地址。好吧,不信这个邪,试试用id方法看一下各自的地址。 ...
分类:
其他好文 时间:
2018-09-22 10:38:59
阅读次数:
130
字符串是一个特殊的对象。字符串一旦初始化就不可以被改变 1. 执行语句String str="abc";时。首先查看字符串池中是否存在字符串"abc",如果存在则直接将“abc”赋给str,如果不存在则先在 字 符串池中新建一个字符串"abc",然后再将其赋给str. 2. 执行语句String s ...
分类:
其他好文 时间:
2018-09-03 20:29:06
阅读次数:
139
一.常用的创建方式 String s1=”abc“; String s2=”abc“; s1==s2 ==> true 解析:s1和s2指向的是同一个字符串池地址 二.不常用的创建方式 String s1=new String(”abc“); String s2=new String(”abc“); ...
分类:
编程语言 时间:
2018-08-24 00:32:21
阅读次数:
183
简单介绍 Java中的字符串常量池(String Pool)是存储在Java堆内存中的字符串池。我们知道String是java中比较特殊的类,我们可以使用new运算符创建String对象,也可以用双引号(”“)创建字串对象。 Java中的字符串常量池 下图,清楚地解释了如何在Java堆内存中维护字符 ...
分类:
编程语言 时间:
2018-08-11 01:28:17
阅读次数:
4253
编写高质量代码:改善Java程序的151个建议 [52~64] 推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生,因为String字符串是程序中最经常使用的类型),于是就设计了一个字符串池(也叫作字符串常量池,String pool或String ...
分类:
编程语言 时间:
2018-08-07 10:21:37
阅读次数:
143
字符串类为JAVA中的特殊类,String中为final类,一个字符串的值不可重复。因此在JAVA VM(虚拟机)中有一个字符串池,专门用来存储字符串。如果遇到String a=”hello”时(注意没有NEW,不是创建新串),系统在字符串池中寻找是否有”hello”,此时字符串池中没有”hello ...
分类:
编程语言 时间:
2018-08-04 18:53:40
阅读次数:
132
1.一般面试题都会出关于String java = new String("I love java");这条语句创建了几个字符串对象?我在最开始时一直认为是只创建了一个字符串对象,但其实是创建了两个字符串对象,第一个是构造函数中作为形参的直接量对象,第二个则是构造函数返回的字符串对象。 而在 jav ...
分类:
编程语言 时间:
2018-06-29 00:14:26
阅读次数:
192