1.类 String 是 java.lang包下的类,所以不需要导包就可以直接使用。String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。StringBuffer(字符串缓冲区)支持可变的字符串。因为 String 对象是不可变的,所以可以共享。 字符串是复合数据类型。在程序中经常会用到字符串及对字符串的各种操作,如字符串的比较、替换、截取、查找和连接等。
注:字符串的内容永不可变
2.为什么Java字符串是不可变的
通过源码我们可以知道原因有一下两点:
(1).String 类被 final 关键字修饰,所以它不会有子类,这就意味着没有子类可以重写它的方法,改变它的行为。
(2).String 类的数据存储在 char[] 数组中,而这个数组也被 final 关键字修饰了,这就表示 String 对象是没法被修改的,只要初始化一次,值就确定了。
3.为什么要这样设计???
(1).可以保证 String 对象的安全性,避免被篡改,毕竟像密码这种隐私信息一般就是用字符串存储的。
(2).可以实现字符串常量池,Java 会将相同内容的字符串存储在字符串常量池中。这样,具有相同内容的字符串变量可以指向同一个 String 对象,节省内存空间。
4.字符串的基本操作
(1).连接
最常用对字符串进行的操作之一就是将两个字符串连接起来,合并为一个字符串。String类提供连接两个字符串的方法concat(),语法格式为: string1.concat(string2);
连接字符串还可以使用加号“+”运算符。这是一个重载了的运算符,用来直观地连接两个字符串,它使用起来比concat()方法更加灵活。例如: String 字符串3=字符串1+字符串2;
注:Java会根据加号运算符两边的操作数类型来决定是进行算术运算还是字符串连接的运算
(2)比较
我们可以使用equals()方法比较两个字符串是否相等,返回值boolean值;equalsIgnoreCase()方法,同样返回值为boolean值,使用格式为: 字符串1.equals(字符串2); 字符串1.equalsIgnoreCase(字符串2);
我们可以使用compareTo方法比较两个字符串的大小, 若调用方法的字符串比较参数字符串大,返回正整数; 若比参数字符串小,则返回负整数; 若两字符串相等,则返回0; 若两个字符串各个位置的字符都相同,仅长度不同,则返回值为两者长度之差。
如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
(3)查找获取
int indexOf(char ch):搜索字符ch出现的第一个索引号,如果没有找到匹配,则返回-1;
int indexOf(char ch,int fromIndex):从fromIndex位置开始搜索字符ch出现的第一个索引号;
int indexOf(String str):搜索字符串str出现的第一个索引号。
public int length():获取字符串当中含有的字符个数,拿到字符串长度。
注意:数组,集合和String对象长度的获取是不一样的
数组a的长度:a.length
ArrayList集合b的长度: b.size()
String对象c的长度: c.length()
(4)截取
public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。
public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。[begin,end),包含左边,不包含右边。
(5)替换
字符串替换是用新字符去替代字符串中指定的所有字符,String类提供的replace方法可以实现这种替换。语法格式为: string1.replace(char oldchar,char newchar)
这只是一些常见的String字符串的用法,还有很多其他方法可以用于处理字符串。你可以参考Java官方文档或其他Java教程来了解更多关于String类的方法和用法。
标签:字符,Java,String,int,char,字符串 From: https://www.cnblogs.com/wxyuan/p/17748009.html