字符串的定义
String str = "我喜欢音乐";
String str = new String("我爱音乐");
基本类型、对象类型
基本类型可以不通过new关键字创建
对象类型必须通过new关键字创建
这里涉及到java内存模型
![](https://img.haomeiwen.com/i4769868/8de3f73d67ed7058.png)
我们主要了解堆、栈
String str = new String("我爱音乐");
其中,str表示变量名,或者叫引用,存在"栈"里,“我爱音乐”表示是变量的值,存在"堆"里。
所有对象类型,创建都是遵循以上规则(除特殊情况外)。
那么基本类型,如:int a = 10;
a存在栈里,10,存在方法区,因为10不是一个对象类型的实例,切是定义后就无法改变的值,所以存在方法区。
字符串常用的方法
String str = "我爱音乐";
str.length();
str.equals();
str.startWith();
str.endWith();
str.subString();
str.split();
str.toString();
str.trim();
str.hashCode();
这里有两个很重要的方法,equals和hashCode;
如果要比较两个字符串是否相同,我们用equals方法,方法内部即使用hashCode判断。我们可以重新equals方法,或者重写hashCode方法,定义两个对象是否相同的判断条件。
如:
public class Product {
public int id;
public String name;
public int num;
public boolean equals(Object obj) {
if(obj instanceof Product) {
Product p = (Product) obj;
if (this.name.equals(p.name)){
return true;
} else {
return false;
}
} else {
return false;
}
}
}
StringBuilder\StringBuffer
与String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的对象。
网友评论