您的位置:首页 > 编程语言 > Java开发

【JAVA】---String 类

2015-09-21 11:00 609 查看
       在Java中String类是经常用到的,每个main主函数几乎都有“String[] args”。那么到底Java中的String类是什么呢?让我们一起来学习一下!

String类:
   

    Java.lang.String 类代表不可变的字符序列。String是一个对象,不属于8中基本数据类型,因为对象的默认值是null,同理String的默认值也是null。要想理解String类如何用咱们得从它的创建说起。

String对象的创建:

1、String s = “abc”
    按照这种方法创建的字符串会放在栈里面,(PS:查了好多资料,说具体应该再常量池里面,这里就以栈代表了),创建的时候编译器会先检查栈里面是否有存放该字符串(abc)的区域,如果有那么就直接把s指向那个位置;如果没有就立刻创建一个!

2、String s = new String(“abc”)
    这种方法时通过new关键字创建String对象的,通过new创建的类的对象一般都放在堆中,而且用这种方法创建的String对象是在运行时创建的对象。所以我们只要new一个对象,堆中就会为这个s分配一部分内容,不管堆中是不是存在这个s。

如何理解String对象是不可变的对象的?
   

    不可变对象,就是创建以后不可以改变的对象,拿一个例子来说吧:
    String s = "LiShaoran Erica";   
    s. substring(8);
输出值为"LiShaoran"。
调用. substring()方法创建了新的对象,然后让变量s指向这个新的对象的实例,而不是改变了"LiShaoran"的值。

Java中main方法中的String[] args是什么意思?
    

    其实这个问题非常简单,你运行程序并在主类的后面加上几个字就知道了!
比如:

class Test
{
      public static void main(String args[])
     {
             System.out.println("This is a simple Java program.");
     }
}

打开运行窗体,输入:javac Test.java;
        然后再输入: java Test Erica
程序的显示结果就是:

This is a simple Java program
arg is Erica

String[]是一个String数组,args是函数的形参。

String类的常见构造方法:
       

    String();构造一个空字符串对象;
    String(byte[] bytes);通过byte数组构造字符串对象
    String(bytep[] bytes, int offset,int length);通过byte数组,从offset开始,总长为length的字节构造字符串对象
    String (char[] value);通过char数组构造字符串对象
    String(byte[] char,int offset,int length);通过char数组,offset开始,总共length长的字节构造字符串对象
    String(String original);构造一个original副本,拷贝original对象
    String (StringBuffer buffer);通过StringBuffer数组构造字符串对象
例如:
       byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
       char[] c = {'0','1','2','3','4','5','6','7','8','9'};
       String s1 = new String(b);                 //abcdefghij
       String s2 = new String(b,3,2);     //de

String类的常用方法:

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字符。
public boolean startsWith(String prefix);判断字符串是否以prefix字符串开头
public boolean endsWith(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 String[] split(String regex);将字符串按照regex分割,返回分割后的字符串数组。

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


举例说明

例如:
public class Test{
      public static void main(String[] args){
            int j=1234567;
            String sNumber = String.valueof(j);//用到了静态重载方法
            System.out.println("j是"+sNumber.length()+"位数。");

            String s=“Mary,f,1976”;
            String[] sPlit=s.split(",");
            for(int i=0,i<sPlit.length;i++){
                   System.out.println(sPlit[i]);
            }
       }
}
输出结果为:j是7位数
   Marry
   F
   1976

小结:
     String类是不可变类,当你想改变一个string对象的时候,比如name= "lishaoran ",那么虚拟机不会改变原来的对象,而是生成一个新的string对象,然后让name去指向它。这些都是一些基本的string类的知识,当时学习设计模式的时候有个师姐就说string和其他数据类型不同,所以学到了这里就拿来研究总结了一下,希望可以帮到大家!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: