1、String类

  用于字符串操作,本质是字符数组char[ ]。

  String对象的值是不可变的,即当你修改一个String对象的类容,JVM不会改变原来的对象,而是生成一个新String对象。

  2、构造(new)字符串

  String类的构造函数有5个,可以通过字节数组、字符数组构造对象,也可以通过String对象(即复制一个String)来创建新的String对象,还可以构造空的字符串。

  3、不可变字符串

/*串池技术*/
String name="java course";

  这种方式使用了串池(String Pool)技术,串池是一段字符串的内存缓冲区。

  如上创建字符串对象时,JVM会检查name在串池中是否存在内容相同的字符串对象,若不存在,则在池中创建一个字符串name,否则会把name指向已经存在的对象。(这样貌似很高效)

  4、字符串长度——String.length()方法,返回字符串的个数。(一个汉字也是一个字符)

  5、两个字符串比较——依次比较字符编码

/*compareTo(String s)*/
/*大于s,返回大于0的值;小于,返回小于0的值;相等,返回0。*/
String s1="abc";
String s2="abd";
int result=s1.compareTo(s2); //-1 /*compareToIgnoreCase()忽略大小写*/
String s3="aBc";
String s4="ABC";
result=s3.compareToIgnoreCase(s4); //

  

  6、equals(),判断两个String对象内容是否相同,返回true或false

  equals()在String中被重写,而“==”比较的是两个对象在内存中的地址是否一样。

  忽略大小写:equalsIgnoreCase()

  7、子串查找

  indexOf(),返回子串第一次出现的位置;

  lastIndexOf(),从字符串末尾向前找,返回第一次出现的位置;

  8、截取子串

  substring(int start,int end),不包含索引值为end的字符

  9、分割字符串  

public String[] split(String regex);

/*limit是分割后返回的字符串数组的元素个数*/
public String[] split(String regex,int limit);

  “|”、“*”、“+”作为分隔符时,要加上转义字符“\\”;“\”就要写成“\\\\”;

  多个分隔符用“|”连接,也可以在正则表达式中添加空格。

  10、int、String转换

  静态方法:valueOf(int n);

  String对象转换为数字,使用包装类Integer的静态方法int parseInt(String s),只不过必须传入数字字符串。

  11、包装类  

  Java为每个基本数据类型定义了包装类,共8种,位于java.lang下。它们的使用方式一致,实现基本数据类型与包装类的相互转换。

  为什么需要包装类?因为包装类型是一个类,有属性有方法,所以就比基本数据类型功能强大。

  自动装箱:Autoboxing,将基本数据类型自动转换为包装类。例如可以将整型变量直接复制给Integer类型的变量

  自动拆箱:Unboxing,将包装类自动转换为基本数据类型。例如:

/*加法操作中,Integer先自动转换为int,完成运算,然后再次转换为Integer*/
Integer b;
Integer y=b+2;

 

  12、增强的switch语句

  Java 7后可以在switch语句的测试条件表达式中使用String对象,其实是调用了equals()方法。

  13、StringBuffer

  也用来代表字符串,StringBuffer在进行字符串处理时,不生成新的对象,在内存的使用上优于String类。

  所以在经常需要对一个字符串进行修改操作如插入、删除,使用StringBuffer更加高效。

  两者的很多方法相同,只是StringBuffer改变对象自身。

  StringBuffer的内部使用字符数组,当放入StringBuffer对象的字符长度超过初始化时设置的字符数组长度时,需要重新开辟长度增加两倍的字符数组,并把原来的字符数组内容复制到新字符数组中。

  所以设置合适的长度,对StringBuffer的性能影响很大。

  StringBuffer的主要方法偏重对字符串进行修改操作,这也是引入StringBuffer的原因!

  14、String和StringBuffer相互转换:

String s="abc";
StringBuffer sb1=new StringBuffer("123"); StringBuffer sb2=new StringBuffer(s);
String s1=sb1.toString();

  

最新文章

  1. [Linux]系统调用理解(1)
  2. 管道通信,王明学learn
  3. Pop - Facebook 开源 iOS & OS X 动画库
  4. 使用MyEclipse可视化开发Hibernate实例
  5. hibernate4 二级缓存demo实例
  6. Php 的替代语法
  7. C/C++跨平台的的预编译宏
  8. windows下如何快速搭建web.py开发框架
  9. MySql的虚拟机和Xshell5的连接过程
  10. python全栈开发-Day13 内置函数
  11. 关于js事件执行顺序
  12. SQL语句汇总——数据修改、数据查询
  13. 解决 asp.net core 中下载 exe 文件返回 404
  14. MIPI接口资料汇总(精)
  15. M2阶段团队个人贡献分
  16. 9. Palindrome Number (考虑负数的情况)
  17. ElasticSearch 学习记录之Text keyword 两种基本类型区别
  18. 测试开发之前端——No3.HTML5中的标准属性
  19. ZH奶酪:【Python】random模块
  20. 【JAVAWEB学习笔记】26_Linux基础:简介安装、常用命令和JDK、Mysql、Tomcat的安装

热门文章

  1. python能用来做什么?这3大主要用途你一定要知道!(实用)
  2. scarpy crawl 爬取微信小程序文章
  3. python struct的使用例子
  4. 【Eureka】Eureka 是什么
  5. js类型判断:typeof与instanceof
  6. 黑马vue---17、vue中通过属性绑定绑定style行内样式
  7. Qt 插件学习(一)
  8. 06 MySQL之索引
  9. a lot of attention under the hood
  10. springBoot中怎么减少if---else,怎么动态手动注册类进入Spring容器