String类
2018-08-07 08:49:15来源:博客园 阅读 ()
public final class String extends Object
1、用final修饰的最终类,是代表字符串的类;
2、字符串在底层是以字符数组的形式存储;
3、任何的字符串都是String的对象
4、字符串常量可以共享(下图)
String s1 = “ab”;
String s2 = new String(“ab”);
s1和s2指向的是同一块内存空间,区别在于s1先指向运行时常量池,运行时常量池再指向堆内存,而s2是先在堆内存中开辟一块空间,用来存储运行时常量池中value的地址,然后根据value所在空间的地址去堆内存中找对应的字符数组,若没有,则在常量池中新开辟一块空间,并在堆内存中创建对应的字符数组,若有,直接调用即可。
String s3 = “a”+“b”;
字符串在使用+拼接的时候底层实际上是调用了StringBuilder中的append的方法
String s4 = “a”; 产生1个对象
s4 = s4+”b” 产生4个对象(new StringBuilder,”b”,”ab”,toString方法会返回一个new String对象)
字符串拼接方式:
1、+
2、直接使用StringBuilder的append方法
3、concat()
StringBuilder和StringBuffer的方法签名一模一样,用法一致,区别在于前者是线程不安全的,后者是线程安全的
表示没有输入任何字符: str.equals(””)
常用方法:
创建字符串对象:String str = “”;
调用方法:
str.length() 获取字符串长度
str.charAt() 获取指定下标位置字符
str.toCharArray() 将字符串转化为字符数组
字符数组转化为字符串
char[] c = {‘ ’,’ ’,’ ’,};
String str = new String(c);或者String str = new String(c,起始位置,个数); 指定要转换的字符个数
str1.compareTo(str2) 按字典顺序比较两个字符串(相减不为零才返回该差的值,否则会一致遍历,若长度不等,较短与较长对应值都相等,则返回长度之差)
str1.compareToIgnoreCase(str2) 忽略字母大小写进行比较
str.toUpperCase() 转化为大写
str.toLowerCase() 转化为小写
注意:字符串提供了一系列的操作而不改变原字符串的方法,操作的结果是产生一个新的字符串,原字符串并没有发生任何改变
str1.equals(str2) 判断字符串是否相等
str1.equalsIgnoreCase(str2) 忽略大小写
instanceof 判断对象和类的关系
对象 instanceof 类/接口 表示判断对象是否是指定类/接口及其父类/父接口的对象
如果对象的实际类型继承或者实现类/接口,则该对象也是继承或者实现的类/接口的对象
str1.concat(str2) 将新字符串拼接在原字数串尾端(底层实际是数组的复制合并过程)
str.contains(“”) 判断是否包含,只能判断具体子串
str.endsWith(“”) 后缀(判断是否以””中的字符结束)
str.startsWith(“”) 前缀
str.getBytes(“utf-8”) 字符串转字节(括号中可以指定编码,默认是GBK)
str.hashcode() 字符串的哈希码唯一
str.indexOf(‘’) 获取字符/字符串在给定的字符串中第一次出现时的下标,也可以指定从某个下标开始找str.indexOf(“”,count),表示从下标为count的位置开始往后找,若没有该字符/字符串,则返回-1
str.lastIndexOf() 获取字符/字符串在给定的字符串中最后一次出现时的下标,也可以指定从某个下标开始找str.lastIndexOf(“”,count),表示从下标为count的位置开始往前找,若没有该字符/字符串,则返回-1
str.intern() 强制返回指向给定的字符串的常量池地址
str.isEmpty() 判断字符串的长度是否为0,注意区别于null,长度:0 != null
str.replace(‘’,’’) 用指定字符替换原字符
str.substring(起始,结束) 截取指定字符串,一般表示范围的时候,习惯上包头不包尾/含小不含大
str.trim() 去掉字符串前后的空白
String str = String.valueOf() 将其它类型(包括基本类型和引用类型)的数据转化为字符串
注意:打印一个对象(引用类型)时,底层先调用String.valueOf()方法,当对一个对象进行valueOf操作的时候,底层实际上是调用了Object对象的tostring方法,因此输出结果是该对象的地址
特殊的:打印字符数组时,底层也是先调用valueOf()方法,但该方法返回值是new String(),因此输出的结果是对应字符数组的字符串
获取字符串中的字符
将字符串用split方法按指定的正则规则切分成字符串数组,遍历该字符串数组,得到单个字符
String s1 = "a,1,2,b,4,d"; String[] s2 = s1.split(","); for(String c:s2){ System.out.println(c); }
字符串和其它类型数据的互相转化
·基本数据类型—>字符串
1、String s = String.valueOf(八种基本类型)
2、String s = “”+八种基本类型数据
3、StringBuilder s = new StringBuilder().append(八种基本类型数据);
·字符串—>基本数据类型
int i = Integer.parseInt(); //这种方法除了字符不适用外,其它七种基本类型都适用,只需要将数据类型换为对应的即可
char c = s.charAt(0); //字符串转字符(字符串只能有一个字符),其中s是String对象
·数型数组—>字符串(数型数组包括整数和小数)
int[] in = {1,2,3,4,5}; String st = ""; for (int i = 0; i < in.length; i++) { String s = String.valueOf(in[i]); st += new String(new StringBuilder().append(s)); } System.out.println(st);
·字符串—>数型数组
String s = "123456"; char[] cs = s.toCharArray(); for (char c : cs) { int i = c-'0'; System.out.println(i); }
·字符数组—>字符串
char[] cs = {'a','b','c','d','e'};
String s = "";
s+=new String(new StringBuilder().append(cs));
System.out.print(s);
·字符串—>字符数组
String s = "abcde";
char[] cs = s.toCharArray();
for(char c:cs)
System.out.println(c);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- java里面main方法中的String[]args 2020-06-07
- String 也能做性能优化,我只能说牛逼! 2020-06-03
- java.lang.String 的 + 号操作到底做了什么? 2020-05-22
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度 2020-05-20
- Java String和Date的转换 2020-05-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash