一聚教程网:一个值得你收藏的教程网站

热门教程

Java String类用法代码示例解析

时间:2022-06-29 02:21:14 编辑:袖梨 来源:一聚教程网

本篇文章小编给大家分享一下Java String类用法代码示例解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

一、简介

零碎知识点

extends Object

implements serializable,Comparable< String >,charSequence

String类表示字符串,所有字符串文字都是此类的对象

字符串是不变的,值在创建后无法更改

对象一旦声明则不可改变,改变的只是地址,原来的字符串还是存在的,并且产生垃圾

任何一个“”都为字符串对象,无赋值则为匿名对象

用“+”拼接字符串尽量避免,一般用append+toString

StringBuilder(线程不安全)和StringBuffer(线程安全),忽略线程安全,其它都一样

由于String对象是不可变的,所以可以共享(即两个字符串一样则共享同一块内存地址)

//共享
String t1 = "123";
String t2 = "123";
System.out.ptintln(t1 == t2);//true,(== 比较的是内存地址)

字符串常量池

存在于方法区(加载代码的内存区),被所有的线程共享

堆在逻辑上的划分

堆在逻辑上被分为三部分:

新生代:存储刚创建的对象(GC询问次数最多为15次,>15则进入老年代)

老年代:垃圾回收次数超过15次(即15次之后依然存活的对象)

永久代:静态修饰的所有东西(类、方法、常量…)

每一个字符串对象的创建都会放入永久代(每次创建都先去永久代,前提:不用new,new开辟新内存)

二、创建对象

2.1 直接引用常量区

String s = " ";

String str = “abc” ;

2.2 使用构造方法

String()

String str = new String(“abc”); 

2.3 两种实例化方法的区别

区别

直接赋值:

只开辟一块堆内存空间,并且会自动入池,不会产生垃圾

会将匿名对象“”放入对象池,下一次不同对象直接赋值时直接利用池中已经存在的匿名对象

构造方法:

在堆内存创建对象

会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。

三、常用方法

热门栏目