Java常用类String类介绍,看这篇就够了

java常用类 String

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

String源码

public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
}

String的成员变量

//String的属性值
private final char value[];
//数组被使用的开始位置
private final int offset;
//String中元素的个数
private final int count;
//String类型的hash值
private int hash; // Default to 0
private static final long serialVersionUID = -6849794470754667710L;
private static final ObjectStreamField[] serialPersistentFields =
  new ObjectStreamField[0];

从源码看出String底层使用一个字符数组来维护的。
成员变量可以知道String类的值是final类型的,不能被改变的,所以只要一个值改变就会生成一个新的
String类型对象,存储String数据也不一定从数组的第0个元素开始的,而是从offset所指的元素开始。

创建字符串对象的方式

1. 		String s1 = "hello" ; String s2 = "world" ;
        String s3 = "hello" ;
        System. out. println(s1 == s3) ; //true
        

S1和S3的“hello”和s2的"world"存在的是方法区的常量池

在这里插入图片描述

所以s1==s3

2.	s1 = new String ("hel1o") ;
        s2 = new String ("hel1o") ;
        System.out.println(s1 == s2) ; //false
        System.out.println (s1.equals (s2) ) ; // true
        

s1和s2是通过new得到两个String对象,存在堆中,地址是不一样的

s1和s2是两个引用,所以比较的是地址,s1 != s2

String的equals是重写了Object的equals,不是和Object一样比较地址,而是比较值,所以s1.equals (s2) 是true

3.char c[]= { 's', 'u' , 'n',',', 'j', 'a', 'v' ,'a'} ;
        String s4 = new String(c) ;
        String s5 = new String(c,4,4) ;
        System.out.println(s4) ; //sun java
        System.out.println(s5) ; //java

了解一个经典的面试题

public static void main(String[] args) {
  String a = "abc";
  String b = "abc";
  String c = new String("abc");
  System.out.println(a==b);  //true
  System.out.println(a.equals(b));  //true
  System.out.println(a==c);  //false
  System.out.println(a.equals(c));  //true
}

String 类常用方法1


public char charAt (int index )
返回字符串中第index个字符。
public int length ()
返回字符串的长度。
public int indexOf (String str)
返回字符串中出现str的第一个位置
public int indexOf (String str,int fromIndex)
返回字符串中从fromIndex开始出现str的第一个位置
public boolean equalsIgnoreCase (String another)
比较字符串与another是否一样(忽略大小写)
public String replace (Char oldChar , char newChar)
在字符串中用newChar字符替换oldChar字符

举例

string s1 = "sun java" ,S2 = " Sun Java" ;
System.out.println (s1.charAt (1) ) ; //u
System.out.println (s2.length()) ; //8
System.out.print1n (s1.indexOf ("java")) ; //4
System.out.println (s1.indexof ("Java") ) ; //-1
System.out.println (s1.equals(s2) ) ; //false
System.out.printin (s1.equalsIgnoreCase(s2) ) ;
//true
string s = "我是程序员,我在学java" ;
String sr = s.replace( '我','你');
System.out.println (sr) ;
//你是程序员,你在学java

String类常用方法2

public boolean startsWith (String prefix)
判断字符串是否以prefix字符串开头
public boolean endsWi th (String suffix)
判断字符串是否以prefix字符串结尾
public String toUpperCase ()
返回一一个字符串为该字符串的大写形式
public String toLowerCase ()
返回一一个字符串为该字符串的小写形式
public String substring (int beginIndex)
返回该字符串从beginIndex开始到结尾的子字符串
public String substring (int beginIndex , int endIndex)
返回该字符串从beginIndex开始到endIndex结尾的子字符串
public String trim()
返回将该字符串去掉开头和结尾空格后的字符串
public char[] toCharArray()
把字符串转换为字符数组

举例

String S = "Welcome to Java world!m ;
String s1 =" sun java   " ;
System.out.println ( S.startsWith ("Welcome")) ;
//true
System. out. println (S.endsWith ("World")) ;
//false 
String sL = S.toLowerCase() ;
String sU = S.toUpperCase() ;
system. out.println(sL) ;
//welcome to java world!
System.out.println(sU) ;
//WELCOME TO JAVA WORLD !
String subS = S.substring (11) ;
System.out.println(subS) ; //Java World !
string sp = s1. trim() ;
System.out.println(sp) ;//sun java
// char[] toCharArray():把字符串转换为字符数组
  char[] chs = s.toCharArray();
  for (int x = 0; x < chs.length; x++) {
    System.out.println(chs[x]);
 }

String类常用方法3

1.静态重载方法
◆public static String valueOf(... )可以将基本类型数据转换为字符串:
例如:
◆public static String valueOf(double d)
◆public static String valueOf(int i)
◆......

2.方法public String[] split(String regex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值