JAVA中String类
来源:互联网 发布:jquery ajax json解析 编辑:程序博客网 时间:2024/06/05 07:36
一、由JDK API文档可以了解到
String
类代表字符串。Java 程序中的所有字符串字面值(如 "abc"
)都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。因为 String 对象是不可变的,所以可以共享。例如:
String str = "abc";等效于:
char data[] = {'a', 'b', 'c'};
即:一个字符串相当于一个字符数组。String str = new String(data);
二、区别—String str1="abc"; String str2=new String("abc")
① String str1="abc"——创建了一个对象,或是没有创建对象。
先去方法区中的字符串常量池中查看有没有abc,若是有—不用再创建对象,直接将地址给栈中的str1。若是没有,则在字符串常量池中再创建一个对象,传给str1。
② String str2=new String("abc")——创建了一个或两个对象,其相当于语句
i): 若是之前字符串常量池中没有abc,那么显而易见是创建了两个对象。
ii): 若是之前字符串常量池中就存在abc,那么就是创建了一个对象,解释如下:
1.String str1 = "abc"; 2.String str2 = new String("abc");测试一下,通过javac *.java编译好该Java文件,然后通过反编译命令javap来查看java编译后的ByteCode字节码。
ldc的含义是:将常量值从常量池中取出来并且压入栈中。从上图中,我们可以看到第0行和第7行中的字符串引用是同一个,这说明了,在编译期间,该字符串变量的值已经确定了下来,并且将该字符串值缓存在缓冲区中,同时让该变量指向该字符串值,后面如果有使用相同的字符串值,则继续指向同一个字符串值。
所以String str2 = new String("abc"); 此时就创建一个对象,而abc 则是从字符串常量缓冲区中取出来的。
三、String中常用方法,代码举例① equals(Object anObject)
——将此字符串与指定的对象比较。
equalsIgnoreCase(String anotherString)
——将此String
与另一个 String
比较,不考虑大小写。
public class Demo5 {public static void main(String[] args) {{String a="abcde";String b="abcdE";System.out.println(a.equals(b)); //falseSystem.out.println(a.equalsIgnoreCase(b)); //true}}}② isEmpty()——当且仅当
长度
为 0 时返回 true。注:当定义字符串为String a=null,运行System.out.println(a.isEmpty());会报出空指针异常Exception in thread "main" java.lang.NullPointerException 编写程序中为了避免这种错误,通常自定义方法进行判断,如下:
{//String a="abcdegfjkakfdh";//System.out.println(a.isEmpty()); //falseString a=null;System.out.println(isEmpty(a)); //true//System.out.println(a.isEmpty()); //空指针异常}private static boolean isEmpty(String a) {return a==null||a.length()==0;}
③ 正序——indexOf 倒序——lastIndexOf{String a="abcdefagh";System.out.println(a.indexOf('c')); //2System.out.println(a.indexOf("cd")); //2System.out.println(a.indexOf('a', 2)); //6System.out.println(a.lastIndexOf('a')); //6 //应用,查找文件名String path="D:\\day01\\java环境搭建.xmind";// 想知道这个文件的名字。int lastIndexOf = path.lastIndexOf("\\");System.out.println(path.substring(lastIndexOf+1));//java环境搭建.xmind}
④ subString——返回新的字符串(子串),例:打印出一个字符串的所有子串{String a="abc";int n=a.length();int num=n*(n+1)/2;String[] s=new String[num]; //将字符串a的多有子串求出来存到数组s中int index=0;for(int i=0;i<a.length();i++){for(int j=i+1;j<=a.length();j++){s[index]=a.substring(i,j);index++;}} //打印子串 a ab abc b bc cfor (int i = 0; i < s.length; i++) {System.out.println(s[i]);}}⑤ replace——用指定的字符串替换指定的内容 replaceAll(旧串,新串) replaceAll比较常用
replaceAll应用一:贴吧中消除敏感字(如:脏字)
{String[] zang={"艹","草"};String s="草 艹 号";for(int i=0;i<zang.length;i++){s=s.replaceAll(zang[i],"*");}System.out.println(s);}replaceAll应用二:将电话号码中间四位数隐藏,如15623456789——>156****6789
{String str="15635446789";System.out.println(str.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));}⑥ 大小写转换
toUpperCase()——将字符串中字符全部转换为大写
toUpperCase()——将字符串中字符全部转换为小写
{String s="abCEd";System.out.println(s.toUpperCase()); //ABCEDSystem.out.println(s.toLowerCase()); //abced}⑦ split——将字符串切割成数组
注:有的切割符的匹配需要转译,如切割符点 ,转译为\\.
{String cookie="a.b.c.d";String[] split = cookie.split("\\.");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}}⑧ 匹配 maches
应用一——邮箱
{String str="1@bjsxt.com";System.out.println(str.matches("\\w+@\\w+(\\.\\w+)+"));}
应用二——手机号
{String str="15633335555";System.out.println(str.matches("^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$"));}
⑨ trim()——去掉前后空格应用——登录
{String account=" 123456 ";if("123456".equals(account.trim())){System.out.println("登录成功");}else{System.out.println("登录失败");}}⑩ startsWith endsWith
- JAVA中String类
- JAVA中String类
- java中String类
- Java中String类详解
- 深入Java中String类
- Java中String类总结
- Java中String类详解
- java中String类详解
- java中String类详解
- Java 中String类的终极总结
- Java 中String类的终极总结
- java中String类的构造函数
- JAVA中String类深度探究
- java中String类的构造函数
- java中String类的方法
- java中对于String类的理解
- 《java中String类,很常用啊》
- java中字符串String类的讲解
- 旧版本jboss6的部署环境的配置项目发布路径
- 匈牙利算法
- C#中值传递与引用传递的区别
- 学习笔记(C++中基础数据类型在内存的表现形式)
- 关于OKHTTP3的一些资料集合整理
- JAVA中String类
- oracle数据库对象的详解
- ubuntu c/c++中调用matlab函数
- python——numpy包的一些功能笔记
- hpu暑期训练:E
- ant的安装和环境配置
- this关键字
- 【bzoj3280】小R的烦恼
- Realm数据库的简单使用