码迷,mamicode.com
首页 > 编程语言 > 详细

用Java拯救我(三)--String类的相关基础知识

时间:2020-02-24 18:52:55      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:with   wchar   tostring   ase   --   定位   header   string类   资源   

用Java拯救我(三)--String类的相关基础知识

? To Myself:从上个学习博客到这里,我跨过了许多的Java基础知识,因为我个人是计科专业的,再学习java的时候,也秉持着认真学习的态度,但是一些基础语法我就不在这里赘述了,就像学习英语一样,并不是需要连如何记忆每个字母的过程都需要记录,一些简单的输入、输出、分支判断这样的语法,java与C/C++几乎没什么大的差别。

String类的介绍

? string是java的一个在java.lang包下的类,它和基础类型char是有所区别的,char是单个字符的定义方式,String是对字符串的定义,并且String类中也有对char数组的转换方式,后面会做相关的记录。

1. 定义

char c = 'a';   //char只定义单个字符,并且在''中存放字符

String s = new String("hello"); //String是定义了一个对象s,并赋值为字符串hello使用“”包括

String s = "hello"; //该方法为直接赋值与上面方法有差异

/**
*   直接赋值是将常量字符串放入方法区的常量池中,并将引用赋值给s
*   创建对象的方式是在对内存中创建一个新的对象,然后将常量字符串放入常量池,再将引用赋值给对象中
*/

2. 创建字符串的方式

1. String(char a[]);    //将字符数组a创建为String对象
    char a[] = {'g','o','o','d'};
    String s = new String(a);   //s = "good"

2. String(char a[],int offset,int length);  //将字符数组a中的部分字符创建为字符串对象
    char a[] = {'s','t','u','d','e','n','t'};
    String s = new String(a,2,4);   //s = "uden"

3. String (char[] value);   //该构造方法可分配一个新的String对象,将字符数组参数所有元素连接起来
    char a[] = {'s','t','u','d','e','n','t'};
    String s = new String(a);   //s = "student"

3. 字符串的连接

/*String类中可以使用'+'对字符串进行连接*/
String s1 = new String("hello");
String s2 = new String("world");
String s = s1 + " " + s2;   //s = "hello world"

/*在进行'+'运算时,左右两边只要有一个String类的变量,则会被转换为字符串连接的功能,
非String类的变量会调用toString()函数*/
String s1 = new String("student");
int x = 1;
System.out.println(s1 + x); //打印为"student1"

4. 获取字符串信息

String str = new String("hello world");
str.length();   //返回一个整数,代表字符串str的长度

str.indexOf(String s);  //查找str中s首次出现的位置,若有,返回下标位置,若无,返回-1
str.lastIndexOf(String s);//查找str中s末次出现的位置,若有返回下标位置,若无,返回-1
/*如果lastIndexOf(""),则返回str的长度*/

str.charAt(int index);  //返回str中index处的字符,返回值为char

5. 字符串操作

String str = new String("hello world");
//获取子字符串
str.subString(int beginIndex);  //返回从beginIndex开始至末尾的子字符串,返回值为String
str.subString(int beginIndex,int endIndex);//返回从beginIndex开始至endIndex结束的子字符串,不包括endIndex位置的字符

//去除空格
str.trim(); //去除str中开头和末尾的空格,但是不会去除中间的空格

//字符串的替换
str.replace(char oldChar,char newChar); //将str中的oldChar全部替换冲newChar字符,返回值为新的字符串String,如果没有oldChar,则返回str

//判断字符串的开始与结尾
str.startsWith(String prefix);  //返回值为boolean
str.endsWith(String suffix);    //返回值为boolean

//判断字符串是否相等
/*在这里,基本类型判等的方法"=="不能使用,因为字符串是对象,即便他们指向的字符串常量相等,对象也不会相等*/
str.equals(String otherstr);//判断内容和长度是否相等,区分大小写,返回值为boolean
str.equalsIgnoreCase(String otherstr);//判断内容和长度是否相等,不区分大小写,返回值为boolean

//按字典顺序比较两个字符串
str.compareTo(String otherstr);//按照字典(Unicode)顺序对两个字符串进行比较,若str>otherstr,返回1,若str<otherstr,返回-1,当str=otherstr(str.equals(otherstr)为true),返回0

//字母大小写转换
str.toLowerCase();  //将字符串str中的大写字母转换为小写,返回一个新的字符串
str.toUpperCase();  //将字符串str中的小写字母转换为大写,返回一个新的字符串

//字符串分割,sign可以是正则表达式
str.split(String sign); //对str进行分割,分割符为sign,返回值为String数组
str.split(String sign,int limit);   //对分割的次数进行了限制,为limit次,返回值为String数组

6. 格式化字符串

/*String类的静态方法format()可以用于创建格式化的字符串*/
String str = String.format(String format,Object... args);
String str = String.format(Local l,String format,Object... args);
/**
*   l:看格式化过程的应用的语言环境
*   format:格式字符串
*   args:格式字符串中有格式说明符引用的参数
*/

//例子
Date date = new Date();
String s = String.format("%te", date);//这里只是以date为例,不同的格式化方式有不同的format,需要时进行查阅

7. 正则表达式

元字符 正则表达式的写法 说明
. . 代表任意一个字符
\d \\d 代表 0~9 的任何一个数字
\D \\D 代表任何一个非数字字符
\s \\s 代表空白字符,如"\t’’和’’\n”
\S \\S 代表非空白字符
\W \\W 代表不可用于标识符的字符
\p {Lower} \\p {Lower} 代表小写字母 {a~z}
\p {Upper} \\p {Upper} 代表大写字母 {A~Z}
\p {ASCII} \\p {ASCII} ASCII 字符
\p {Alpha} \\p {Alpha} 字母字符
\p {Digit} \\p {Digit} 十进制数字,即 [0~9]
\p {Alnum} \\p {Alnum} 数字或字母字符
\p {Punct} \\p {Punct} 标点符号:!"#$%&‘()*+,-./:;<=>?@[]^_`{
\p {Graph} \\p {Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p {Print} \\p {Print} 可打印字符:[\p{Graph}\x20]
\p {Blank} \\p {Blank} 空格或制表符:[\t]
\p {Cntrl} \\p {Cntrl} 控制字符:[\x00-\x1F\x7F]

正则表达式中使用方括号来表示括号中出现过一次的字符

[^456]:表示4,5,6之外的任何字符

[a-r]:表示a~r中的任何一个字母

[a-zA-Z]:表示任意一个字母

限定修饰符 意义 示例
? 0次或1次 A?
* 0次或多次 A*
+ 1次或多次 A+
{n} 正好出现n次 A{2}
{n,} 至少出现n次 A{3,}
{n,m} 出现n~m次 A{2,6}

代码示例

public class Judge {
    public static void main(String[] args) {
        String regex = "\\w+@\\w+(\\.\\w{2,3})+";
        String s1 = "aaa@";
        String s2 = "aaa@aaa";
        String s3 = "705353409@qq.com";
        if(s1.matches(regex)){
            System.out.println(s1+"合法!");
        }
        if(s2.matches(regex)){
            System.out.println(s2+"合法!");
        }
        if(s3.matches(regex)){
            System.out.println(s3+"合法!");
        }
    }
}

8. 字符串生成器

由于String类有final修饰符,所以不能对其进行修改,在一个需要大量创建字符串的程序中,对系统资源的开销会产生过大的压力。

这个时候,出现了StringBuilder类大大增加了字符串操作的效率,需要输出结果时,使用toString()方法。

append(content);    //追加内容
insert(int offset, args);   //在指定位置插入数据内容
delete(int start,int end);  //删除从start开始到end位置(不包括end)的子字符串

String类的相关基础知识目前就整理这些进行消化,加油(??????)??

用Java拯救我(三)--String类的相关基础知识

标签:with   wchar   tostring   ase   --   定位   header   string类   资源   

原文地址:https://www.cnblogs.com/betterRaccoon/p/String.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!