基本概念:
在Java里面String 是作为一个对象来使用的,所以在堆栈里面:栈存储String对象名,而堆是存储对象名所对应的字符串的。
首先基本了解下栈与堆例如:
int de=12;
int ed=12;
Integer de11=new Integer(12);
Integer de1=12;
我们都知道,栈内存是用来存放基本类型(类型值及变量名)和引用类型的变量名的。
在8大‘基本’数据类型里面,上面的变量属性都存在栈里面,并且相等的数据都用同一个地址来表示。
就如上面的例子来说,de和ed它们虽然声明了两个不同的变量名,但是存储地址是一样的。new的Integer对象虽然与前两个相同,但是地址指向的是堆内存。
注意:没有new的Integer跟int没有啥区别,都是存储的常量,放在栈里面。
String de="你好婷婷";
String de1="你好婷婷";
System.out.println(de==de1);
String都是以一个对象来使用的,所以在声明一个String变量时,变量名是存在栈里面,而变量对应的字符串是存在”堆“里面的。
de所对应的堆内存地址与de1是相同的。所以上面输出结果应该是true
(当创建String de="你好婷婷";,在创String de1="你好婷婷";
,de1会在内存地址查找是否有相同的,查到de时,de1会将内存地址指向de内存地址,并不会重新开辟新内存)
String dee1=new String("你好婷婷");
String de1="你好婷婷";
System.out.println(de1==dee1);
说到这里就是废话了,如上面代码所示,两个对象都在堆里面开辟不同的内存地址。所以输出结果false。
String 类一旦创建对象,那么它的值是无法改变的。
当创建一个String对象并给与了值,那么他的“值”是不会改变的,这里说的值时堆内存里面的字符串值。当修改一个String对象时,虽然表面它的值改变了,但是在堆内存里面还是存在的,并且每修改一次就会重新开辟一个内存地址,造成内存的浪费。
所以,平时尽量少对String 对象进行修改。
String 类方法:
<1.length()方法
返回一个字符串的长度
String de1="你好婷婷";
String[] der={"你好婷婷","你好世界"};
System.out.println(de1.length());
System.out.println(der.length);
如上面代码所示,输出结果为:4.值得注意的是,他与数组里面的lenght是一个单词,但这里是一个方法来使用,数组是属性。
此外还有其他常用方法来获取:
1.
String de="woshigehaoxuesheng";
int ss=de.indexOf("e");//获取字符串长度,从左开始遇到第一个e(不包括e),则开始计数,结束运行
System.out.println(ss);//输出结果:11
2.
int ss1=de.lastIndexOf("e");//从左开始计数,中途有不管,直到遇到最后一个e(不包括e)开始计数,结束运行
System.out.println(ss1);//输出结果:2
<2.判断字符
1.判断以什么“xx”开始
String s="我就是我";
boolean d=s.startsWith("我");
//boolean型判断真和假,判断变量“s”是否以“我”开始,并且赋值“d”,这里结果“true”
System.out.println(d);
2.判断以什么“xx”结尾
String ss="wo jiu shi wo.guan cai";
boolean dd=ss.endsWith("cai");
//跟上面差不多,只不过这里是结尾,结果为“true”
System.out.println(dd);
3.判断两个字符是否相等
String s="nihao";
String ss="nihao吗";
boolean g=(s==ss);//判断s与ss两个是否相等,结果为“false”
System.out.println(g);
或者
System.out.println(s==ss);
3.替换字符
String d="agdyigefyahfavhsiada";
String f=d.replace("a","A");
// 替换字符,把“a”替换成“A”,并且赋值给f
System.out.println(f);//打印f
4.转换大小写
String s="wo jiu shi wo ,GUAN CAI";
String d=s.toLowerCase();
//将变量s,全部转换成小写,结果为s变量(后面的大写全部变成小写)
System.out.println(d);
String dd=s.toUpperCase();
//转换大写,结果为:变量s(全部为大写字母)
System.out.println(dd);
开博第一篇-------来自一个新手的博客。
来源:https://www.cnblogs.com/xg-ai-tt/p/12260078.html