什么是String?


String是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。 在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于String对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。


一、String基础使用


String A = "作者好帅!";

String B = new String("作者是一个小菜鸡!");

二、String内存堆栈浅析

1.(栈)

直接声明的对象内存地址是栈中:
第一句代码执行在常量池中创建了一个值为abc的String对象;
第二句执行因常量池中存在hello所以就不再创建新的String对象。

代码如下(示例):

String A = "abc";		//对象1
String B = "abc";		//对象2
System.out.println(System.identityHashCode(A));	//获得内存地址
System.out.println(System.identityHashCode(B));

运行结果:地址相同。

StringRedisTemplate 存储key带冒号无法get值_编程语言

2.(堆)

当程序执行Class被加载时就在常量池中创建了一个值为hello的String对象,第一句执行时会在堆里创建new String(“hello”)对象;
第二句执行时因常量池中存在hello所以就不再创建新的String对象了,直接在堆里创建new String(“hello”)对象。

代码如下(示例):

String a = new String("holtenObj");		//对象1
String b = new String("holtenObj");		//对象2
System.out.println(System.identityHashCode(a));		//地址追踪
System.out.println(System.identityHashCode(b));

运行结果:地址不同。

StringRedisTemplate 存储key带冒号无法get值_System_02

三、String常用方法

length(): 求字符串的长度

indexOf(): 求某个字符在字符串中的位置

charAt(): 求一个字符串中某个位置的值

equals(): 比较两个字符串是否相同

replace(): 将字符串中的某些字符用别的字符替换掉

split(): 根据给定正则表达式的匹配拆分此字符串。

substring(x,y): 输出一个新的字符串,它是此字符串中的子串

trim(): 将字符串开头的空白(空格)和尾部的空白去掉。

format(): 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。

toLowerCase(): 将字符串中所有的大写改变成小写

toUpperCase(): 将字符串中所有的小写改变为大写

代码如下(示例):

//String的方法
String msg = "hello,北京欢迎你啊!";
String res = "  Hello,南京欢迎你啊!  ";
System.out.println("获取String字符串长度:"+msg.length());
System.out.println("获取String字符串某一字符所在的位置:"+msg.indexOf("北"));
System.out.println("获取String字符串某一位置的值:"+msg.charAt(7));
System.out.println("判断两个字符串是否相同:"+msg.equals(res));
System.out.println("指定字符替换:"+msg.replace(",","!"));
System.out.println("拆分字符串并打印第二段:"+msg.split(",")[1]);
System.out.println("获取字符串的子串:"+msg.substring(6,8));   //包括开始,不包括结尾
System.out.println("去掉字符串开头的空格和尾部的空格:"+res.trim());
System.out.println("将字符串中所有的大写改变成小写:"+msg.toLowerCase());
System.out.println("将字符串中所有的小写改变成大写:"+msg.toUpperCase());

运行结果:

StringRedisTemplate 存储key带冒号无法get值_System_03


结语


第一次写博客,如有不足请指教!