您好,欢迎访问一九零五行业门户网

Java之字符串详解

字符串
在java中,字符串被作为string类型的对象处理。string类位于java.lang包中,默认情况下,该包被自动导入所有的程序。
创建string对象的方法:
string s1 = "java"; string s2 = new string(); string s3 = new string("java");
java字符串的不变性
string对象创建后不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
如果需要一个可以改变的字符串可以使用stringbuffer或者stringbuilder。
每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法。
常量池在java中是用于保存在编译期已确定的、已编译的class文件中的数据。
package cn.test;public class demo12 { public static void main(string[] args) { string s1 = "java";//先检查字符串常量池中是否有"java"字符串,如果有则直接指向,如果没有就在字符串常量池中添加"java"字符串并指向它,所以这种方式创建字符串时最多创建一个对象,或者不创建对象 string s2 = "java";//s2直接指向字符串常量池中的"java" string s3 = new string("java");//在堆内存申请一块内存存储字符串"java",s3指向其内存块对象,同时检查字符串常量池中是否有"java"字符串,如果没有就添加字符串"java"到常量池中,所以new string()有可能创建两个对象 string s4 = new string("java"); system.out.println(s1 == s2); system.out.println(s1 == s3); system.out.println(s3 == s4); s1 = "欢迎来到" + s1; system.out.println(s1); system.out.println(s3.equals(s4)); } }
执行结果:
true
false
false
欢迎来到java
true
string类常用的方法
举例1:
string filename = "helloworld.java"; string email = "xiaoli@163.com"; // 判断.java文件名是否正确:合法的文件名应该以.java结尾 int index = filename.lastindexof('.'); string prefix = filename.substring(index+1); if ( index > 0 && prefix.equals("java")) { system.out.println("java文件名正确"); } else { system.out.println("java文件名无效"); } // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前 int index2 = email.indexof('@'); int index3 = email.indexof('.'); if (index2 != -1 && index3 > index2) { system.out.println("邮箱格式正确"); } else { system.out.println("邮箱格式无效"); } string str = "boo:and:foo"; string[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { system.out.print(arr[i]); }
string str = "boo:and:foo"; string[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { system.out.print(arr[i]); }
执行结果: 
java文件名正确
邮箱格式正确
booandfoo
举例2:
string str = "abcd阿"; byte[] b = str.getbytes(); for (int j = 0; j < b.length; j++) { system.out.print("[" + b[j] + "]"); }
运行结果:
[97][98][99][100][-80][-94]
注:1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节
示例3:
string s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; // 出现次数int num = 0; // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数for ( int i = 0;i < s.length(); i++ ) { // 获取每个字符,判断是否是字符a if ( s.charat(i) == 'a' ) { // 累加统计次数 num++; } } system.out.println("字符a出现的次数:" + num);
运行结果:
字符a出现的次数:8
stringbuilder类
string类具有可变性,频繁操作字符串时会产生很多临时变量,使用stringbuilder或stringbuffer就可以避免这个问题。它们基本相似,不同之处是stringbuffer是线程安全的,所以性能略高。因此,一般情况下创建一个内容可变的字符串对象,优先使用stringbuilder类。
stringbuilder str2 = new stringbuilder("java");
stringbuilder类的常用方法:
以上就是java之字符串详解的详细内容。
其它类似信息

推荐信息