Object类和String类

Object类

1.Object类是Java中所有类的默认父类,无需使用extends来继承该类,只要是自定义类class开头的类,默认都是Object的子类
2.Object类提供的equals方法:
若定义的类需要具备比较值是否相等,而非简单的比较地址,就在该类中覆写equals();方法
所有对象比较是否相等,不要使用 == (比较地址,基本没啥意义),而需使用该对象的equals()方法
基本数据类型比较是否相等还是使用等号
3.Object提供的toString():将一个对象转换为字符串,当把一个对象扔进System.out.println(obj);默认调用该对象的toString();

String类

1.创建String的三种方式:
a.String str = “hello world”;
b.String str = new String(“hello world”);
c.String str = new String(char[]);
2.字符串的比较
字符串的比较不使用 == ,而是使用equals()方法

String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2));
// System.out.println(str2.equals(str1));

3.字符串常量池
采用直接赋值的模式进行String类的对象实例化操作,那么该实例化对象(字符串内容)将自动保存到这个对象池之中.
如果下次继续使用直接赋值的模式声明String类对象,此时对象池之中如若有指定内容,将直接进行引用
如若没有,则开辟新的字符串对象而后将其保存在对象池之中以供下次使用
4.字符串的不可变性
字符串是一种不可变对象. 它的内容不可改变.
String 类的内部实现也是基于 char[] 来实现的, 但是 String 类并没有提供 set 方法之类的来修改内部的字符数组.

String str = "hello" ; 
str = str + " world" ; 
str += "!!!" ; 
System.out.println(str); 
// 执行结果
hello world!!!

形如 += 这样的操作, 表面上好像是修改了字符串, 其实不是. 内存变化如下:
Object类和String类_第1张图片
如果就是要修改字符串,则可以通过以下方法进行:
a.使用String.subString();方法

String str = "Hello";
//subString就是截取从当前index索引开始的字符串
str = "h" + str.substring(1);
System.out.println(str);
// 执行结果
hello

b.更换为StringBuilder、StringBuffer
单线程场景下:StringBuilder
多线程场景下:StringBuffer
推荐使用StringBuilder

String -> StringBuilder

//构造方法
StringBuilder sb = new StringBuilder("hello");
//使用append方法
StringBuilder sb1 = new StringBuilder().append("hello");

StringBuilder -> String

String str = sb.toString();

拼接方法使用append();

//hello -> helloworld!!!
StringBuilder sb = new StringBuilder("hello");
sb.append("world");
sb.append("!!!");
String str = sb.toString();
System.out.println(str);

StringBuilder独有的方法:
a.reverse():字符串反转

StringBuilder sb = new StringBuilder("helloworld"); 
System.out.println(sb.reverse());

b.delete(int start,int end):将字符串从开始start到end位置删除

StringBuilder sb = new StringBuilder("hello");
sb.append("world");
sb.delete(5,9);
String str = sb.toString();
System.out.println(str);
//hellod
//左闭右开,删左边留右边

c.insert(int start,任何数据类型 数值):从start位置插入一个元素

StringBuilder sb = new StringBuilder("hello");
sb.append("world");
sb.delete(5,9).insert(5,"你好中国");
String str = sb.toString();
System.out.println(str);

String的其他用法待续…

你可能感兴趣的:(数据结构,java,jvm,c++)