String类

String类是一个特殊的类,叫做只读类,一旦创建了对象,便不可被改变,同样"abc"既为一个常量,也为一个对象,也是不可以改变的

String s1 = “abc”;

此语句只包含一个对象,即为“abc”

String s2 = new String(“abc”);

此语句包含两个对象,"abc"为一个对象,new的String为一个对象

所以s1与s2的地址值是不同的

String类常见操作

获取

int length():获取字符串的长度

char charAt(int index):获取字符串某个位置上的字符

根据字符获取该字符在字符串中的位置

int indexOf(int ch):返回的是ch在字符串中的第一次出现的位置

int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置

int indexOf(String str):返回的是str在字符串中的第一次出现的位置

int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置

int lastIndexOf(int ch):从末尾获取ch在字符串中最后一次出现的位置

判断

字符串中是否包含某一个字串

boolean contains(String str)

特殊之处:indexOf(str)可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中,所以也可以用于对指定字符串判断是否包含

字符串中是否有内容

boolean isEmpty():原理就是判断长度是否为0

字符串是否是以指定内容开头

boolean startWith(str)

字符串是否是以指定内容结尾

boolean endsWith(str)

判断字符串内容是否相同,复写了Object中的equals方法

boolean equals(str)

判断内容是否相同,同时忽略大小写

boolean equalsIgnoreCase()

转换

将字符数组转成字符串

构造函数:

String(char[])

String(char[],offset,count):将字符数组中的一部分转成字符串

静态方法

static String copyValueOf(char[]);

static String copyValueOf(char[] data,int offset,int count)

static String valueOf(char[])

将字符串转成字符数组

char[] toCharArray()

将字节数组转成字符串

构造函数:

String(byte[])

String(byte[],offset,count):将字节数组中的一部分转成字符串

将字符串转成字节数组

byte[] getBytes()

将基本数据类型转成字符串

static String valueOf(int)

static String valueOf(double)

//3+"";=====String.valueOf(3);

特殊:字符串和字节数组在转换过程中是可以指定编码表的

替换

String replace(oldchar,newchar);

切割

String[] split(regex);

子串,获取字符串中一部分

String subString(begin)

String subString(begin,end);

转换:去除空格,比较

将字符串转成大写或者小写

String toUpperCase();

String toLowerCase();

将字符串两端的多个空格去除

String trim();

对两个字符串进行自然顺序的比较

int compareTo(String str)

StringBuffer类

StringBuffer是一个容器

特点:

  1. 长度可以变化
  2. 可以自己操作多个数据类型
  3. 最终会通过toString方法变化成字符串

StringBuffer类常见操作

C create U update R read D delete

存储

StringBuffer append():将指定数据作为参数添加到已有数据结尾处

StringBuffer insert(index,数据):可以将数据插入到指定index位置

删除

StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end

StringBuffer deleteCharAt(index):删除指定位置的字符

获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf(String str)

int length()

String subString(int start,int end)

修改

StringBuffer replace(start,end,string)

void setCharAt(int index,char ch)

反转

StringBuffer reverse()

将缓冲区中指定数据存储到指定字符数组中

void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

StringBuilder类

JDK1.5之后出现了StringBuilder类

StringBuffer与StringBuilder的区别

StringBuffer是线程同步的

StringBuilder是线程不同步的

由于

升级有三个因素

  1. 提高效率
  2. 简化书写
  3. 提高安全性

开发建议使用StringBuilder,因为StringBuilder效率较高

基本数据类型对象包装类

byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character

基本数据类型对象包装类的最常见作用

就是用于基本数据类型和字符串类型之间的转换

基本数据类型转成字符串

基本数据类型+""

基本数据类型.toString(基本数据类型值)

如:Integer.toString(123);

字符串转成基本数据类型

xxx a = Xxx.parseXxx(String);

如:

静态方法:

int a = Integer.parseInt();

double d = Double.parseDouble();

boolean b = Boolean.parseBoolean(“true”);

对象调用:

Integer i = new Integer(“123”);

int num = i.intValue();

十进制转成其他进制:

Integer.toBinaryString():二进制

Integer.toHexString():十六进制

Integer.toOctalString():八进制

其他进制转十进制

Integer.parseInt(String,radix);

一个特殊的例子

   1: class IntegerDemo 

   2: {

   3:     public static void main(String[] args) 

   4:     {

   5:         //JDK1.5版本新特性

   6:  

   7:         Integer x = 4;//自动装箱,相当于new Integer(4)

   8:  

   9:         x = x + 2;//x进行自动拆箱,变成int之后与2相加,再将和装箱

  10:  

  11:         Integer i = null;//此语句编译可通过

  12:  

  13:         Integer m = 128;

  14:         Integer n = 128;

  15:         

  16:         //打印false,因为地址不同

  17:         System.out.println(m==n);

  18:  

  19:         Integer a = 127;

  20:         Integer b = 127;

  21:         /*

  22:         打印true,因为a和b指向了同一个对象

  23:         当数值在byte范围内时,对于新特性,如果该数值已存在,则不会再开辟空间

  24:         热心观众@Tony_老七同学解释到,这是设计模式中的享元模式

  25:         用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件

  26:         受教了,非常感谢这位同学

  27:         */

  28:         System.out.println(a==b);

  29:     }

  30: }

热心观众@Tony_老七同学解释到,这是设计模式中的享元模式,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件,受教了,非常感谢这位同学!

最新文章

  1. 设计模式/原则篇- Unit of Work
  2. 编译器问题:运行maven,报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
  3. Android(java)学习笔记85:案例拨号程序
  4. C# 自动提交到百度ping服务
  5. vc里面怎样实现对话框之间传递变量的值
  6. 浅谈sql优化
  7. 【Android Developers Training】 59. 管理图片存储
  8. 集合并发修改异常-foreach的时候不可修改值
  9. Android 使用DownloadManager进行版本更新的完整方案
  10. 关于mysql保存数据的时候报问题分析  普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用 utstring value:'\xF0\x9F\x98\x82\xF0\x9F...' for ...
  11. MySQL 处理海量数据时的一些优化查询速度方法
  12. MySQL-5.7.19 在阿里云 CentOS-7.0 上的安装
  13. 安装cmake
  14. Androi开发 ---Fragment片段布局案例
  15. Moment-JavaScript 日期处理类库
  16. Kali视频学习21-25
  17. ElasticSearch(二):windows下ElasticSearch6.3.2插件Head的安装
  18. cocos2d-x3.0 后配置信息重置
  19. obj-y,obj-m 区别
  20. apache DOCUMENT_ROOT

热门文章

  1. std::string和int类型的相互转换(C/C++)
  2. 《C和指针》读书笔记——第二章 基本概念
  3. python特性property
  4. HIVE中内连接和左半连接不一致问题
  5. struts2 查 找总结
  6. Google考虑抛弃Cookies机制
  7. WCF 消息压缩性能问题及解决方法
  8. Nginx完整配置说明
  9. 使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘(引)
  10. *[codility]Number-of-disc-intersections