1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 黑马程序员_java String类

黑马程序员_java String类

时间:2024-05-10 21:30:11

相关推荐

黑马程序员_java String类

---------------------- +Android+IOS开发、 .Net培训、期待与您交流! ----------------------

一、String类概述

1.1、字符串是一个特殊的对象,一旦被初始化就不可以被改变。

定义一个字符串对象:String str = “abc”;

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

String s2 = new String(“abc”);

System.out.println(s1 == s2); //false;

System.out.println(s1.equals(s2));

//true; String类复写了Object类中的equals方法,该方法用于判断字符串内容是否相同。

s1与s2的区别:s1在内存中只有一个对象;s2在内存中有两个对象(new,”abc”)。

二、字符串操作方法

String类是用于描述字符串事物的,它提供了多个方法对字符串进行操作。常见的操作方法有:

2.1、获取

A、字符串中包含的字符数,也就是字符串的长度;

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

B、根据位置获取位置上的某个字符

char charAt(int index);

C、根据字符获取该字符在字符串中位置;

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 laseIndexOf(String str):从最后一个字符开始索引,找出字符所在位置。

2.2、判断

A、字符串中是否包含某一个子串;

boolean contains(str)

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

Eg:if(str.indexOf(“aa”) != -1)

B、字符串中是否有内容;

boolean isEmpty():判断字符串长度是否为0;

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

boolean startsWith(str).

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

boolean endsWith(str).

E、判断字符串内容是否相同;原理:复写了Object类中的equals()方法。

boolean equals(str);

F、判断字符串内容是否相同,并忽略大小写。

boolean equalsIgnoreCase(str);

示例:

classStringDemo {publicstaticvoidmain(String[]args) { //method_get(); //method_is(); //method_replace(); //method_split(); method_7(); }publicstaticvoidmethod_get() { Stringstr="absktdapio"; //获取长度; sop(str.length()); //根据索引获取字符; sop(str.charAt(4)); //sop(str.charAt(40));//当访问到字符串中不存在的角标时, //会发生StringIndexOutOfBoundsException. //根据字符获取索引; sop(str.indexOf('a'));//默认获取第一个字符出现位置; sop(str.indexOf('a',2));//从指定位置开始获取字符出现位置; sop(str.indexOf('z'));//如果要找的字符不存在,则返回-1; //反向索引一个字符出现的位置; sop(str.lastIndexOf('a')); }publicstaticvoidmethod_is() { Stringstr="ArrayDemo.java"; //判断文件名是否以"Array"开头; sop(str.startsWith("Array")); //判断文件名是否是.java文件; sop(str.endsWith(".java")); //判断文件名中是否包含"Demo"; sop(str.contains("Demo")); }publicstaticvoidmethod_replace() { Strings="Hellojava"; Strings1=s.replace('a','n');//如果替换的字符不存在,返回的还是原字符串 sop("s="+s);//打印出的s字符串不变:Hellojava; sop("s1="+s1);//s1将是替换后的结果:Hellojnvn. }publicstaticvoidsop(Objectobj) { System.out.println(obj); } }

2.3、转换

A、将字符数组转换成字符串;

构造函数:String (char[])

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

静态方法:static String copyValueOf(char[])

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

static String valueOf(char[])

B、将字符串转换成字符数组;

char[] toCharArray()

C、将字节数组转换成字符串;

String(byte[])

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

D、将字符串转换成字节数组;

byte[] getBytes()

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

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

static String valueOf(int)

static String valueOf(double)

eg: 3+””等同于String.valueOf(3)

2.4、替换

String replace(old char, new char)

Eg:String s = "Hello java";

String s1 = s.replace("java","world");

System.out.println(s1); //运行结果:Hello world

2.5、切割

String[] split(regex)

publicstaticvoidmethod_split() { Stringstr="Mike,Lucy,Lily"; String[]arr=str.split(","); //从,处开始切割,将切割的元素装入数组中;for(intx=0;x<arr.length;x++) { System.out.println(arr[x]); } }

2.6、子串:获取字符串中的一部分

String substring(begin);

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

如果子串中输入的角标不存在,则会出现角标越界异常。

使用示例:str = “jablktdit”

System.out.println(str.substring(2,5));打印结果:blk

2.7、转换、去除空格、比较

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

String toUpperCase();

String toLowerCase();

B、将字符串两端的多个空格去掉

String trim();

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

int compareTo(String);

publicstaticvoidmethod_7() { Strings="HelloJava"; System.out.println(s.toLowerCase()); System.out.println(s.toUpperCase()); System.out.println(s.trim()); Strings1="abc"; Strings2="dhk"; System.out.println(pareTo(s2)); } String 练习一:

1、从字符串s中查找出其子字符串”ss”出现的次数;

classStringTest1 {publicstaticvoidmain(String[]args) { Strings="ssqwersstyuissioyusshudfhdgjhsshthghss";intc=getSubCount(s,"ss"); System.out.println("count="+c); }publicstaticintgetSubCount(Stringstr,Stringkey) {intindex=0;intcount=0;while((index=str.indexOf(key,index))!=-1) { index=index+key.length();//indexOf从0开始查找字符串"ss", count++;//每找到一次后就重新从index+key.length()开始查找。 }returncount; } }

2、比较字符串s1和s2,找出相同的最长的子字符串:

classStringTest2 {publicstaticStringgetMaxSubString(Strings1,Strings2) { Stringmax="",min=""; max=(s1.length()>s2.length())?s1:s2;//保证s2为短的字符串; min=(max==s1)?s2:s1;//减少循环次数;for(intx=0;x<min.length();x++)//外循环控制字符串长度; {for(inty=0,z=min.length()-x;z!=min.length()+1;y++,z++) {//内循环控制在固定长度的字符串的个数; Stringtemp=min.substring(y,z);if(max.contains(temp))returntemp; } }return""; }publicstaticvoidmain(String[]args) { Strings1="atghellotectkc"; Strings2="dhellogde"; System.out.println(getMaxSubString(s1,s2)); } }

三、StringBuffer

3.1、StringBuffer概述

字符串的组成原理就是通过该类实现的;

StringBuffer可以对字符串中的内容进行增删;

StringBuffer是一个容器;

很多方法与String相同;

Stringbuffer是可变长度的。

StringBuffer是字符串缓冲区。

3.2、StringBuffer特点:

1)、长度可以变化;

2)、可以直接操作多个数据内型;

3)、最终会通过toString方法变成字符串。

3.3、StringBuffer作用

存储、删除、获取、修改

1)、存储

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

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

2)、删除

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

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

3)、获取

int length();

char charAt(int index);

int indexOf(String str);

int lastIndexOf(String str);

String substring(int start, int end)

4)、修改

StringBuffer replace(int start, int end, String str);

Void setCharAt(int index , char ch);

5)、反转

StringBuffer reverse();

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

voidgetChars(intsrcBegin, intsrcEnd, char[]dst, intdstBegin)

示例:

classStringBufferDemo {publicstaticvoidmain(String[]args) { StringBuffersb=newStringBuffer("abcdefg");char[]chs=newchar[6]; sb.getChars(1,4,chs,2);//将字符串sb中1~4字符(即bcd)存入到数组chs中, //从角标2开始存储,空位为空,越过角标将发生角标越界异常; System.out.print("[");for(intx=0;x<chs.length;x++) {if(x!=chs.length-1) System.out.print(chs[x]+",");elseSystem.out.println(chs[x]+"]");//最后打印结果:[,,b,c,d,]; } //method_del(); //method_update(); }publicstaticvoidmethod_add() { StringBuffersb=newStringBuffer(); sb.append("Hello").append("Java").append("World!!!"); System.out.println(sb.toString());//输出:HelloJavaWorld!!! sb.insert(6,"ok");//在位置6插入ok字符串; System.out.println(sb.toString()); }publicstaticvoidmethod_del() { StringBuffersb=newStringBuffer("HelloJava"); sb.delete(1,3);//打印结果:HloJava; System.out.println(sb.toString()); sb.deleteCharAt(2);//删除第2个字符;打印结果:HlJava System.out.println(sb.toString()); //清空缓冲区 sb.delete(0,sb.length()); System.out.println(sb.toString());//打印为空; }publicstaticvoidmethod_update() { StringBuffersb=newStringBuffer("abcdefg"); //sb.replace(1,4,"java");//打印结果:ajavaefg sb.setCharAt(2,'j');//打印结果:abjdefg System.out.println(sb.toString()); } }

四、StringBuilder

StringBuilder是JDK 1.5版本之后出现的。

升级原因:

1)、提高效率;

2)、简化书写;

3)、提高安全性。

StringBuffer是线程同步的;

StringBuilder是线程不同步的;

其他用法与StringBuffer用法相同;

开发建议使用StringBuilder。

---------------------- +Android+IOS开发、 .Net培训、期待与您交流! ----------------------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。