String 类用来存储字符串 ,是不可变的。
1. 基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2. 复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。用 str.equals(str2) 方法来比较字符串的值是否相等。
3. length属性、length()方法、size()方法的区别:
- length属性 - 针对数组,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性。
- length()方法 - 针对字符串String,如果想看这个字符串的长度则用到length()这个方法。
- size()方法 - 针对泛型集合,,如果想看这个泛型有多少个元素,就调用此方法来查看。
如果要遍历一个字符串:
String s = "abcde"; strLen = s.length();//注意这里有括号 for (int i=0; i<strLen;i++){ // ... }
或者这样:
for (char ch:s.toCharArray()){ // ... }
char 转换成 String:
String s = String.valueOf(ch); //效率最高的方法 String s = String.valueOf(new char[]{‘c‘}); //将一个char数组转换成String String s = Character.toString(‘c‘); // Character.toString(char)方法实际上直接返回String.valueOf(char) String s = new Character(‘c‘).toString(); String s = new String(new char[]{‘c‘});String s = "" + ‘c‘; // 虽然这个方法很简单,但这是效率最低的方法
Java中的String Object的值实际上是不可变的,是一个final的变量。
所以我们每次对String做出任何改变,都是初始化了一个全新的String Object并将原来的变量指向了这个新String。
而Java对使用+运算符处理String相加进行了方法重载。
字符串直接相加连接实际上调用了如下方法:
new StringBuilder().append("").append(‘c‘).toString();
除了String,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么三者之间有什么区别呢?
String - 不可变,每次修改并不修改string本身,而会额外创建一个对象。当频繁操作字符串时,就会产生很多临时变量,严重影响性能。
StringBuffer - 可变,线程安全,性能略低。
StringBuilder - 可变,非线程安全,性能高。可优先考虑使用
StringBuilder 转为 String对象:
StringBuiler str = new StringBuilder(); String str2 = str.toString();
package test; import java.lang.*; public class test1 { public static void main(String[] args) { // 创建一个空的StringBuilder对象 StringBuilder str = new StringBuilder(); // 追加字符串 str.append("jaewkjldfxmopzdm"); // 从后往前每隔三位插入逗号 for(int i=str.length()-3; i>=0;i=i-3){ str.insert(i, ","); } // 将StringBuilder对象转换为String对象并输出 System.out.print(str.toString()); } }
时间: 2024-10-26 10:58:02