equals和==的区别

本文主要介绍equals和==的区别,以及堆内存、栈内存、方法区之间如何进行地址指向,String类中包含的方法。


String类:

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。String类是Object类的子类,

构造方法:

              A:public String()空构造

              B:publicString(byte[] bytes) //把字节数组转换成字符串(字节值得范围:-128~127)

              C:publicString(byte[] bytes,int offset,int length) //把字节数组的一部分转换成字符串,int offset指数组的索引,int length指需要的长度个数。

              其他不同类型的数组类比上例

特点:

       A:字符串一旦被赋值,就不能改变。

                     注意:这里指的是字符串的内容不能改变,而不是引用不能改变。

       B:字面值作为字符串对象和通过构造方法创建对象的不同

                     Strings = new String("hello");和String s ="hello"的区别?

                     前者会在堆内存和方法区分别创建对象,后者只在方法区创建一个对象

       C:equal和==

==:基本类型比较的是值是否相同;比较引用类型比较的是地址值是否相同

equals :比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同

equals和==的区别_第1张图片

字符串的功能

              A:判断功能

                     boolean equals(Object obj) 比较字符串内容是否相同,区分大小写
                     boolean equalsIgnoreCase(String str)  比较字符串内容是否相同,不区分大小写
                     boolean contains(String str)  判断大字符串中是否包含小字符串
                     boolean startsWith(String str)  是否以某个指定字符串开头
                     boolean endsWith(String str)  是否以某个指定字符串结尾
                     boolean isEmpty()  是否为空
                            字符串内容为空:String s=""
                            字符串对象为空:String s=null 空指针异常

              B:获取功能

                     int length()  获取字符串长度
                     char charAt(int index)  获取指定索引位置的字符
                     int indexOf(int ch)  返回指定字符在此字符串中第一次出现处的索引
注意:这里为什么用int类型,而不是char类型?原因是‘a’和97其实都可以代表‘a’,避免强制转换。
                     int indexOf(String str)  返回指定字符串在此字符窜中第一次出现处的索引
                     int indexOf(int ch,int fromIndex)  返回指定字符在此字符串中从指定位置后第一次出现处的索引
                     int indexOf(String str,int fromIndex)  返回指定字符串在此字符串中从指定位置后第一次出现处的索引
                     String substring(int start)  从指定位置开始截取字符串,默认到末尾,包含start
                     String substring(int start,int end)  从指定位置开始到指定位置结束截取字符串 

              C:转换功能

                     byte[] getBytes()  把字符串转换成字节数组
                     char[] toCharArray()  把字符串转换成字符数组
                     static String valueOf(char[] chs)  把字符串数组转换成字符串
                     static String valueOf(int i)  把int类型的数组转换成字符串
注意:String类的valueof方法可以把任意类型的数据转换成字符串
                     String toLowerCase()  把字符串转换成小写
                     String toUpperCase()  把字符串转换成大写
                     String concat(String str)  把字符串拼接

D:其他功能

                     a:替换功能 

                            Stringreplace(char old,char new)

                            Stringreplace(String old,String new)

                     b:去空格功能

                            Stringtrim() 去除字符串两端空格

                     c:按字典比较功能(字典指A-Z的顺序结果可能为正,也可能为负)

                            intcompareTo(String str)
                            intcompareToIgnoreCase(String str) 

 

你可能感兴趣的:(•Java基础)