java编程中的字符串(Java字符串)
/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦
*vx:it_daimeng
*/
,我来为大家科普一下关于java编程中的字符串?下面希望有你要的答案,我们一起来看看吧!
java编程中的字符串
/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/
字符串,又叫串,是一种数据结构,是一个内容受限的线性表。
字符串又有一种定义叫做:“不可变的字符序列”。
字符串关键字:String
其底层实现是1、在老版本的Java中,字符串的底层是一个字符类型的数组,后来优化成了byte数组。但总而言之其底层实现都是数组。
2、字符串的操作
String aString="呆萌老师";//直接通过“”号方式创建字符串
//通过new来创建字符串,通过传参的方式来确定字符串的内容
String bString=new String(aString);//直接传递一个字符串
System.out.println(bString);
String str=new String("daimenglaoshi");
System.out.println(str);
String cString=new String(new char[]{'a','s','c'});//传递一个char类型的数组
System.out.println(cString);
String dString=new String(new char[]{'a','s','c'},0,1);
System.out.println(dString);
/*字符串的操作*/
//字符串拼接
String str1="呆萌老师";
String str2=str1 "是一个漂亮的女老师!";//通过“ ”实现字符串的拼接。
System.out.println(str2);
//字符串的截取
String str3="呆萌老师";
System.out.println(str3.substring(2));//从第几个字符开始截取
System.out.println(str3.substring(1, 3));//从第几个到第几个
//字符串内容判断
System.out.println(str3.equals("呆萌老师"));
我们对任何字符串的操作都相当于是创建了一个新的字符串。
String为什么不可变呢?
1、底层数组被final修饰,使得String类型的引用一旦被赋值将不可再指向新的数组。
2、私有的数组变量,并且String没有提供修改这个字符数组的方法,就使得我们字符数组一旦被赋值,除了无法更改以外,许多操作返回的字符串,都是被新创建的。
private final char value[];
3、final修饰的类
public final class String
当我们的类被修饰之后,这个类将无法被继承,因此从继承上来说,杜绝了子类对父类方法的覆盖。
String不可变的好处。
1、因为String不可变,所以才方便计算其哈希码,以至于方便进行其他的哈希操作。
private int hash;
2、因为不可变,所以String是线程安全的,因此不用考虑在线程运行过程中它的值被其他线程所修改。
4、字符串常量池我们计算机的内存资源是有限的,在有限的存储空间中,如果每创建一个对象都分配一个空间这样很显然就是不行的。因此为了提高我们内存的复用性,我们字符串这一块有一个十分重要的点叫做字符串常量池。
当我们在创建字符串的时候,会先在字符串常量池中寻找有没有已经创建好的一样的内容,如果已经创建好了,这个字符串引用就会去指向这个应景创建好的值,如果说没有,那么·才会分配处一片空间来创建。
因此值相同的字符串,其哈希值一定相等。
String aString="呆萌老师";//直接通过“”号方式创建字符串
System.out.println(aString.hashCode());
String str3="呆萌老师";
System.out.println(str3.hashCode());
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com