StringTable:在方法区中的运行常量池中,会将第一次定义的String存入其中,下次再出现时直接将变量指向里面的值。结构是hash表 String s1 = "ha"; String s2 = "ha"; String s3 = s1 +s2; String s4 = "ha" + "ha" ...
分类:
其他好文 时间:
2019-10-28 12:27:24
阅读次数:
71
Java内存空间分两种,一种是栈内存,有多个,一种是堆内存,只有一个,在堆内存中又有一块方法区。 方法区中存储的是:类的信息(类名,类的直接父类,类的访问修饰符),类变量,类方法代码,实例方法代码,常量池。注意没有实例变量。 当使用new创建一个对象的时候,JVM实际上做了三件事:加载类,创建该类的 ...
分类:
编程语言 时间:
2019-10-24 13:14:16
阅读次数:
69
java中特殊的String类型 Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String("abc"); 第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果 ...
分类:
编程语言 时间:
2019-10-24 12:01:40
阅读次数:
110
1.请列举switch case中可以填写的类型 答:byte short int char String enum 2.请判断下面生成了几个对象 答:产生两个对象,一个在堆内存中 还有一个在方法区中的常量池中 3.请判断下面输出结果 答:结果是false,因为系统编译的时候不知道str6是一个变量 ...
分类:
其他好文 时间:
2019-10-22 20:30:10
阅读次数:
77
1、什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。2、Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数MagicNumber,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存放常量的常量池,由于
分类:
编程语言 时间:
2019-10-22 18:44:23
阅读次数:
97
在学习java36讲的时候看到评论区有人提出的一个问题: 这个问题主要是考察的内容如果没有接触过会觉得有点懵,接下来参考别人的理解再进行一下解释。 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池 ...
分类:
编程语言 时间:
2019-10-20 11:21:48
阅读次数:
85
String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。 字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。(常量池技术) Java语言为字符串连接运算符(+)提供特殊支持,并为其他对 ...
分类:
编程语言 时间:
2019-10-14 14:40:56
阅读次数:
114
Java中的OOM java.lang.StackOverflowError java.lang.OutMemoryError:Java heap space java.lang.OutMemoryError:GC overhead limit exceeded:Gc回收时间过长会发生outofme ...
分类:
其他好文 时间:
2019-10-13 12:43:31
阅读次数:
403
一、javap命令简述 javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。当然这些信息中,有些信息(如本地变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等等)需要在使 ...
分类:
编程语言 时间:
2019-10-11 10:44:37
阅读次数:
95
String源码与常用方法 1.栗子 代码: 输出: 2.String的不变性 2 1:字符串常量池 `s与s2引用相等即地址相等,原因是:Java把字符串常量存入字符串常量池 而 String s4 = new String("hello"); s4和 s2的值不相等,是因为new会产生一个新的对 ...
分类:
编程语言 时间:
2019-10-06 00:18:45
阅读次数:
84