教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java中字符串学习笔记

java中字符串学习笔记

发布时间:2017-12-06   编辑:jiaochengji.com
教程集为您提供java中字符串学习笔记等资源,欢迎您收藏本站,我们将为您提供最新的java中字符串学习笔记资源
本文章是一个朋友在学习时的笔记,他记录了在学习java时关于其字符串的一些介绍有需要的同学可以参考一下本文章。

学过编程的都会知道,字符串是常量中的一种,然而java中的String不仅仅是常量,又是类,是一个特殊的类,是不可变和最终类;

1,不可变的String;说到不可变性,就要说java中String的内存分配了,如下图

  当运行代码:

        String str = "abc";

时,内存分布为

  

  这时候看起来和一个int a = 26;很相似了,StringPool是常量池里面用来存放字符串常量的地方,里面的值不可修改

而如果代码是这样写的:

  String str = new String("abc");

 

运行时,内存为:

  

理解了上面的内存分布情况后,就不难理解String的不变性了,java中程序员不能重载操作符,用于String的“ ”和“ =”是java中仅有的两个重载过的操作符;

比如如下代码:

  String str1 = "abc";

  String str2 = str1 "def";

运行到第二行代码时,实际上JVM又一次帮助我们做了一些工作:

public class MyString {
public static void main(String[] args){
String str1 = "abc";
StringBuilder temp = new StringBuilder("abc");
temp.append("def");
String str2 = temp.toString();
}
}

内存分配如下:

而其中J2SE5.0之后才使用了StringBuilder,之前是使用的StringBuffer,

二者使用起来没有什么区别,StringBuffer是线程安全的,速度慢些;StringBuilder是线程不安全的,但是速度快些;

2,String是最终类,不能有子类,这一点可以通过API文档看出:

您可能感兴趣的文章:
java中字符串学习笔记
java学习笔记之字符串查找函数
想系统学习GO语言(Golang
Java中java.lang.Void类学习笔记
PHP字符串处理之学习笔记
Java入门笔记1_HelloWorld
C#学习笔记之C#中的类
python与java用途区别有哪些
Golang学习笔记(五):Go语言与C语言的区别
java学习笔记之数据类型 运算符 流程控制

[关闭]
~ ~