JAVA基础-字符串

时间:2019-03-21
本文章向大家介绍JAVA基础-字符串,主要包括JAVA基础-字符串使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一,字符串的声明和赋值:

String 变量名 = "ssssss";       注意:声明的字符串必须经过初始化才能使用!

二,字符串的创建:

1.因为java中把字符串作为对象来管理,所以还是调用String类的构造方法: String s = new String; 

 2.用字符串常量创建字符串变量:String str1;   str1 = " abcdef ";

三,连接字符串:

可以对多个字符串进行连接,也可以使字符串与其他类型数据进行连接。

用法:用   +   操作符来连接多个操作符并产生一个String对象。

public class Job {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("word");
        String s = s1 +" "+ s2;             //连接
        System.out.println(s);              //输出结果是 hello word
    }
}

有一个要注意的地方:

java中一句相连的字符串不能分开在两行中写,比如

System.out.println("I Like
Java"); 

如果一个字符串太长的话应该写成

System.out.println("I Like" +
"Java"); 

连接其他数据类型:

如果把字符串跟其他数据类型连接起来的话,会把其他数据类型的数据直接转换成字符串

public class Link {
    public static void main(String[] args) {
        int readtime = 4;
        float practice = 2.5f;
        System.out.println("我每天花"+ readtime + "小时看书;" +
                            practice + "小时上机练习");
        //输出结果是  我每天花4小时看书;2.5小时上机练习
    }
}

readtime和practice都不是字符串,但是把他们与字符串相连接时自动调用toString( )方法,将其转换成字符串形式,然后才参与连接。

注意:只要 + 操作符的一个操作数是字符串,编译器就会把另一个操作数转换成字符串形式!

五,获取字符串信息:

1.获取长度:使用String类的length( )方法可获取字符串对象的长度。

2.字符串查找:indexof( )方法返回搜索的字符串(或字符)首次出现的位置。lastindexof( )方法返回搜索的字符串(或字符)最后一次出现的位置。

public class Text {
    public static void main(String[] args) {
        String str = "We are student";
        int size1 = str.length();            //用length()方法返回的字符串长度中包括空格
        System.out.println(size1);//输出结果是   14
        
        int size2 = str.indexOf("e");          //直接返回 e 第一次出现的位置
        System.out.println(size2);//输出结果是   1
        
        int size3 = str.indexOf("e",2);       //从第3个字符开始索引,并返回 e 第一次出现的位置
        System.out.println(size3);//输出结果是   5
        
        int size4 = str.lastIndexOf("e");   //返回最后一次出现的 e 的位置       如果没找到要检索的参数,就返回 -1
        System.out.println(size4);//输出结果是   11
        
        int size5 = str.lastIndexOf("");       //注意  "" 是空字符串,里面没有空格
        System.out.println(size5);//输出结果是    14                      这条语句的结果是跟str.length()是一样的
        
        int size6 = str.indexOf(""); 
        System.out.println(size5);//输出结果是    0
    }
}

同样的,我们也可以获取指定位置的字符:用 字符串对象.charAt(int n) ,n为索引位置。

public class Ref {
    public static void main(String[] args) {
        String str = "Hello Word";
        char mychar = str.charAt(6);
        System.out.println("字符串str中索引位置是5的字符为:"+mychar);
        //结果是  字符串str中索引位置是6的字符为:W
    }
}

六,获取子字符串:

可以通过String类的 toString() 方法对字符串进行截取。

subString() 有两种不同的方法重载:1.subString(int beginIndex) 从begin位置到结尾都截取。  2.subString(int beginIndex,int endIndex) 只截取从begin位置到end位置的内容。

public class Subs {
    public static void main(String[] args) {
        String str = "Hello Word";
        String x = str.substring(3);
        System.out.println(x);//输出结果:lo Word
        
        String y = str.substring(3, 7);    //[3,7)的意思,不包括第7个字符  
        System.out.println(y);//输出结果:lo W
        
    }
}

七,去除空格和替换:

1.去除空格:使用 trim() 方法来去除字符串前后的空格,注意:在字符串中空格占用一个索引位置。

2.字符串替换:使用 replace(oldchar,newchar)方法来用newchar替换掉字符串里全部的oldchar

3.字母大小写转换:用toUpperCase()转换成大写,用toLowerCase( )转换成小写;   注意:这两个方法对数字或者非字符(比如空格)没有影响。

public class NewStr {
    public static void main(String[] args) {
        
        // 为方便观察往下输出结果里的字符串前后空格用  _ 代替: 一个_对应一个空格
        //空格去除
        String str = "  He llo WWW o rd "; //字符串前面2个空格,后面1个空格
        System.out.println(str.length());//输出结果:18
        
        System.out.println(str.trim());//输出结果:He llo WWW o rd   字符串前后空格都没有了
        System.out.println(str.trim().length());//输出结果:15
        
        //字符串的替换
        String newstr1 = str.replace("W", "w");// 把W替换成w,    注意:是把全部 W 都换成 w
        System.out.println(newstr1);//输出结果: _ _He llo www o rd_
         
        String newstr2 = str.replace("w", "W");//替换不了 大小写要注意,
        System.out.println(newstr2);//输出结果:_ _He llo WWW o rd_
        
        //大小写转换
        String newstr3 = str.toLowerCase();   //转为小写
        System.out.println(newstr3);//输出结果:_ _he llo www o rd_
        
        String newstr4 = str.toUpperCase();   //转为大写    
        System.out.println(newstr4);//输出结果:_ _HE LLO WWW O RD_
    }
}

八,正则表达式:

正则表达式是用来检查某一个字符串是否满足某一特定格式。

1.用方括号括起来若干个字符来表示一个元字符,该元字符可以代表方括号内的任何一个字符。比如:

[^456]:代表4,5,6之外的任何字符。   [a-r]:代表a-r中任何一个字母。   [a-zA-Z]:可表示任意一个英文字母。  [abc]4:代表a4,b4,c4。

[a-e[g-z]]:代表a-e或者g-z的任意一个字母(并运算)。 [a-o&&[def]]:代表字母d,e,f(交运算)。 [a-d&&[^bc]:代表字母a,d(差运算)。

2.可以用限定修饰符来限定元字符出现的次数。比如:

A*:0次或多次。   A?:0次或1次。   A+:1次或多次。   A{n}:正好出现n次。   A{n,}:至少出现n次。   A{n,m}:出现n~m次。

3.正则表达式中的元字符:

\\d:0~9任意一个数。    \\D:任何一个非数字字符。   \\s:空白字符。   \\S:非空白字符。    \\{Blank}:空格或制表符。

 \\p{Lower}:小写字母a~z。   \\p{Upper}:大写字母A~Z。   \\w:可用作标识符的字符(不包括$)。   \\W:不可用作标识符的字符。    

\\{ASCII}:ASCII字符。   \\{Alpha}:字母字符。   \\{Digit}:十进制数字0~9。   \\{Alnum}:数字或者字母字符。  

.:任意一个字符。      注意:想在正则表达式中使用普通意义的点字符“ . ”,必须使用转义字符“ \ ”。

看一个例子:

public class Judge {
    public static void main(String[] args) {
        //定义要匹配 E_mail地址的正则表达式
        String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
        String str1 = "aaa@";
        String str2 = "aaaaa";
        String str3 = "1111@111ffyu.dfg.com";
        if(str1.matches(regex)) {
            System.out.println(str1 + "是一个合法的E_mail地址");
        }
        if(str2.matches(regex)) {
            System.out.println(str2 + "是一个合法的E_mail地址");
        }
        if(str3.matches(regex)) {
            System.out.println(str3 + "是一个合法的E_mail地址");
        }
        //运行后的结果是:1111@111ffyu.dfg.com是一个合法的E_mail地址
    }
}

正则表达式我也是刚接触,先到这里,后面再补。

九,字符串生成器(StringBuilder)

利用Stringbuilder类中的方法可以动态地执行添加,删除和插入等字符串的编辑操作。

1.添加内容:用 append(content)方法,参数content可以是任何内容。

2.插入内容:用insert(int offset, arg),offset是插入的位置,arg是插入的内容。

3.删除内容:用delete(int start, int end),从start位置到end-1位置的字符串会被删除。(如果start = end就不会发生任何事)

public class StrBuilder {
    public static void main(String[] args) {
        StringBuilder bf = new StringBuilder("hello hi momoda you");
        bf.append(123456);    //数字,字符串无论什么都可以
        bf.append("abcd");      //直接追加再原字符串后面
        System.out.println(bf.toString());
        //输出结果:hello hi momoda you123456abcd
        bf.insert(5, "word");
        System.out.println(bf.toString());
        //输出结果:helloword hi momoda you123456abcd
        bf.delete(5,19);
        System.out.println(bf.toString());
        //输出结果:hello you123456abcd
    }
}

 2019-03-2115:16:33    还没完,后续修补