黑马程序员_java编程基础14 String

------- android培训java培训、期待与您交流! ----------

1String类。

字符串是一个特殊的对象,字符串最大的特点:一旦初始化就不可以被改变。(“abc”不会变,s1会变。)

String s1 = "abc";  //s1是一个类类型变量,“abc”是一个对象。

String s2 = new String("abc");

s1s2有什么区别:

s1在内存中有一个对象,s2在内存中有两个对象。

s1==s2 的打印结果是false。是两个不同的对象。

s1.equalss2)的打印结果是true,因为String类复写了Object类中的 equals方法,该方法用于判断字符串是否相同。

String s3 =“abc” s1==s3打印结果是true 因为s3不再开辟空间,字符串相同,指向了同一对象。

2String常见操作。

1.获取。

1.1字符串中的包含的字符数,也就是字符串的长度。int length()获取长度。

1.2根据位置获取位置上某个字符。char charAtint index

当访问到字符串中不存在的角标时候会发生角标越界异常。

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

如果没有找到,返回-1

int indexOfint ch)返回的是ch在字符串中第一次出现的位置。

int indexOFint chint fromIndex)从fromIndex指定位置开始,获取ch在字符串中出现的位置。

int indexOfint str)返回的是ch在字符串中第一次出现的位置。

int indexOFint strint fromIndex)从fromIndex指定位置开始,获取str在字符串中出现的位置。

int lastIndexOf(int ch)反向索引一个字符出现的位置。

2.判断。

2.1字符串是否包含某一个子串。

boolean containsstr);

【特殊之处】:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在,所以也可以用于指定判断是否包含。而且该方法即可以判断,又可以获取位置。

if(str.indexOf("aa")!=-1)

2.2字符串中是否有内容。

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

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

boolean startsWith(str);

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

boolean startsWith(str);

2.5判断字符串内容是否相同。(复写了Object类中的euqals方法)。

boolean equalsstr);

2.6判断内容是否相同,并忽略大小写。

boolean equalsIgnoreCase();

3.转换。

3.1将字符数组转成字符串。

构造函数:Stringchar []

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

静态方法:

static String copyValueOf(char[]);

static String copyValueOf(char[],offset,count);

3.2将字符串转成字符数组。

char[ ] toCharArray();

3.3将字节数组转成字符串。

Stringbyte []

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

3.4将字符串转成字节数组。

byte[]  getBytes();

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

static String valueOf(int)

static String valueOf(double)

3+""等于-->String.valueOf(3);

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

4替换。

String replace(oldchar,newchar);

如果要替换的字符不存在,返回的还是原串。

String s1=s.replace("java""world");可以接收字符串。

5切割。

String[] split(regex);

//String s = "zhangsan,lisi,wangwu";

String[] arr = s.split(",");

for(int x = 0;x<arr.length;x++)

{

sop(arr[x]);

}

6子串。获取字符串中的一部分。

String substring(begin);从指定位置开始到结尾。如果角标不存在,会出现角标越界异常。

String substring(begin,end);包含头,不包含尾。

7转换,去除空格,比较。

7.1将字符串转换成大写或者小写。

String toUpperCase();

String toLowerCase();

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

String trim();

7.3对两个字符串进行自认顺序的比较。

int compareTo(string);

String s1="acc"; 这里面可以写数字等等。

String s2="aaa";

sop(s1.compareTo(s2));返回2.c99a97.相减得2.

如果参数字符串等于此字符串,则返回值0.如果此字符串按字典顺序小于字符串参数,返回小于0的值。大于,则返回大于0的值。

3、StringBuffer

是字符串缓冲区,是一个容器。

特点1:长度是可变化的。

特点2:可以操作多个数据类型。“abc” true  34

特点3:最终会通过toString方法变成字符串。

常见操作:

1.储存。

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

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

2.删除。

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

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

清空缓冲区。sb.delete(0,sb.length( ) );

3.获取。

char charAt( int index)

int indexOf(String str)

int lastIndexOf(String str)

int.length()

String substring(int start,int end)

4.修改。

StringBuffer replace(start,end,string);

void setCharAt(int index,char ch);

5.反转。

StringBuffer reverse();

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

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

开始位,结束位,要存的数组,目的的开始位

StringBuffer sb = new StringBuffer("abcdef");

char [] chs = new char[4];定义一个4长度的数组

sb.getChars(1,4,chs,1);

for(int x = 0;x<chs.length;x++)

{

sop("chs["+x+"]="+chs[x]+";");

}

4、StringBuilder

1.5之后才出现。

StringBuffer是线程同步。

StringBuilder是线程不同步。

StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,建议使用StringBuffer

以后开发建议使用 StringBuilder

5、升级三个因素:

1.提高效率

2.简化书写

3.提高安全性

6、基本数据类型对象包装类。

大写就是类,小写就是类型。关键字。左边是基本数据类型,右边是引用数据类型。(类)

byte  Byte

short Short

Int Integer

long Long

boolean Boolean

float Float

double Double

char Character

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

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

1.基本数据类型转成字符串

⑴基本数据类型+“”

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

如:IntegeertoString34);将34整数变成字符串“34

2.字符串转成基本数据类型。

xxx a = Xxx.parseXxx(String);

 int a = Integer.parseInt("123");

double b = Double.parseDouble("12.23");

long x =Long.parseLong("123");

boolean b = Boolean.parseBoolean("true");

【注】int num = Integer.parseInt("a123");数字格式异常 

7、十进制转成其他进制。

toBinaryString();

toHexString();

toOctalString();

其他进制转成十进制。

parseInt(string  s,int  radix);

int x = Integer.parseInt("3C",16);

int x= Integer.parseInt("110",10);

8、Integer x = new Integer(4);

等于Integer x = 4  //1.5的新特性:自动装箱。

x = x + 2; //x进行自动拆箱,变成int类型,和2进行加法运算。再将和进行装箱赋给x

9、Integer m = 128;

   Integer n = 128;

sop(m==n);  结果为false。因为是两个对象。

  Integer a = 127;

Integer b = 127; 结果为true,因为ab指向了同一个Integer对象。当数值在byte范围内容, 对于新特性,如果数值已经存在。不会再开辟新的空间。

sop(a==b);

------- android培训java培训、期待与您交流! ----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值