字符串概述

来源:互联网 发布:安全期计算器软件 编辑:程序博客网 时间:2024/06/05 14:58

String Str = “jack”创建字符串的时候,jvm首先会检查字符串常量池中是否存在该字符串的对象,如果已经存在,那么就不会在字符串常量池中再创建,直接返回该字符串在字符串常量池中的内存地址。如果该字符串还不存在字符串常量池中,那么就会在字符串常量池中先创建该字符串的对象,然后再返回。
String Str = “jack”这个语句会先检查字符串常量池是否存放这个”jack1”这个字符串对象,如果没有存在,那么就会在字符串常量池中创建这个字符串对象,如果存在直接返回该字符串的内存地址值。

new String(“jack”)jvm首先会检查字符串常量池中是否存在"jack"字符串,如果已经存在,那么就不会在字符串常量池中再创建,如果还不存在,那么就会在字符串常量池中先创建该字符串的对象,然后还会在堆内存中再创建一份字符串对象,把字符串常量池的“jack”字符串内容拷贝至堆内存中的字符串对象,然后返回堆内存中字符串对象的内存地址。

String str3 = new String(“jack”) 该语句会创建两个对象,首先会先检查字符串常量池中存不存在jack这个字符串对象,如果不存在就会创建,如果存在就返回内存地址值。创建了出来之后,new String这个语句就会在堆内存中开辟一个字符串对象。总共两个对象。


"=="用于比较引用数据类型数据的时候比较的是两个对象的内存地址,equals方法默认情况下比较也是两个对象 的内存地址。



 字符串特点:字符串是常量;它们的值在创建之后不能更改.
 
 字符串的内容一旦发生了变化,那么马上会创建一个新 的对象。
 
 注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。
 
 如果需要频繁修改字符串 的内容,建议使用字符串缓冲类(StringBuffer)。

使用Stringbuffer无参的构造函数创建一个对象时,默认的初始容量是?如果长度不够使用了,自动增长多少倍?  

StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 死,自动增长1倍。

字符串的比较规则:

情况一: 对应位置有不同的字符出现, 就比较的就是对应位置不同的字符。

情况 二:对应位置上的字符都一样,比较的就是字符串的长度。



Integer.parseInt(datas[i])); // 字符串转int类型数据是需要使用Integer.parseInt()

原创粉丝点击