黑马程序员——初识String类:String类的知识点总结
来源:互联网 发布:邪恶吧下载软件 编辑:程序博客网 时间:2024/04/30 10:45
------- android培训、java培训、期待与您交流! ----------
String类概述
String类特点
String类通过final声明,所以不能被继承,方法也不能被覆盖。所以字符串对象的特点是作为一个常量,一经初始化,永远不会改变,这是它跟其它引用数据类型最大的不同之处。
常量池
常量池里专门放置源代码中的符号信息,并且不同的符号信息放置在不同标志的常量表中。而字符串常量池内部是一个char[]数组,存放一个个的字符。如:对于String s1="abc";String s2 ="efg"; 这时字符串常量池中,会用char[]数组存储'a'、'b'、'c'、'e'、'f'、'g'6个字符,如果此时String s3 = "acg",那么它会从常量池中拿出这个'a' 'c' 'g'这三个字符,组成一个字符串对象赋给s3。
特点展示代码:
class StringDemo {public static void main(String[] args) {/*String s1 = "abc";//s1是一个类类型变量, "abc"是一个对象。//字符串最大特点:一旦被初始化就不可以被改变。String s2 = new String("abc");//s1和s2有什么区别?//s1在内存中有一个对象。//s2在内存中有两个对象。System.out.println(s1==s2);System.out.println(s1.equals(s2));//String类复写了Object类中equals方法,//该方法用于判断字符串是否相同。*/String s = "abcde";method_1(s);}/*String类是对字符串事物的描述。该类定义了专门用于操作字符串的方法。"abc":*/public static void method_1(String s){char ch = s.charAt(3);System.out.println("ch="+ch);int num = s.codePointAt(3);System.out.println("num="+num);String s1 = "qq";s1 = s1.concat("mm");System.out.println("s1="+s1);System.out.println("qq"+"mm");String a = "opq";String b = "opq";System.out.println("a==b:"+(a==b));}}
String类的的常见功能
String类适用于描述字符串事物。那么它就提供了多个方法对字符串进行操作。
1.获取
字符串中的包含的字符数,也就是字符串的长度。
intlength():获取长度(数组中的长度是数组的一个属性)
charcharAt(int index):
根据字符获取该字符在字符串中的位置。
intindexOf(int ch):放回的ch在字符串中第一次出现的位置。
intindexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中的位置。
intindexOf(String str):返回的是str在字符串中第一次出现才位置。
intindexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
2.判断
字符串中是否包含某一个子串
boolean contains(CharSequence s)
特殊之处:indexOf(str):可以所以str第一次出现的位置,如果返回-1,表示str不在字符串中存在。所以,也可以用于判断指定判断是否包含。
if(str.indexOf("aa"!=-1));而且该方法,既可以判断,也可以获取出现的位置。
字符串中是否有内容。
booleanisEmpty():原理就是判断长度是否为零。
字符 串是否是以指定内容开头。
booleanstartsWith(str)
字符串知否以指定内容结尾。
booleanendsWith(str)
判断字符串的内容是否相同,复写了Object类中equals方法。
booleanequals(str)
判断内容是否相同,并忽略大小写。
booleanequalsignoreCase()
3.转换
将字符数组转成字符串。
构造函数:String(char[])
String(char [],offset,count):将字符数组中的一部分转成字符串。
静态方法:
static String copyValueOf(char [])
static String copyValueOf(char [] data,intoffset ,int count)
static String valueOf(char []);
将字符串转成字符数组。
char[]toCharArray();
将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
将字符串转换成字节数组。
byte[]getBytes();
将基本数据类型转成字符串。
staticString valueOf(int);
staticString valueOf(double);
//3+"";//String.valueOf(3);
注意:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
Stringreplace(oldchar,newchar);
5.切割
String[]split(regex);(后边正则表达式)
6.子串,获取字符串中的一部分。
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
7.大小写转换,去除空格,比较。
将字符串转成大写或者小写。
StringtoUpperCase();
StringtoLowerCase();
将字符串两端的多个空格去除。
Stringtrim();
对两个字符串进行自然顺序比较。
intcompareTo(String)
忽略大小写比较,其实即使全部转成小写或大写,然后再比较。
String的方法示例
class StringMethodDemo{public static void method_7(){String s = " Hello Java ";sop(s.toLowerCase());sop(s.toUpperCase());sop(s.trim());String s1 = "a1c";String s2 = "aaa";sop(s1.compareTo(s2));}public static void method_sub(){String s = "abcdef";sop(s.substring(2));//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。sop(s.substring(2,4));//包含头,不包含尾。s.substring(0,s.length());}public static void method_split(){String s = "zhagnsa,lisi,wangwu";String[] arr = s.split(",");for(int x = 0; x<arr.length; x++){sop(arr[x]);}}public static void method_replace(){String s = "hello java";//String s1 = s.replace('q','n');//如果要替换的字符不存在,返回的还是原串。String s1 = s.replace("java","world");sop("s="+s);sop("s1="+s1);}public static void method_trans(){char[] arr = {'a','b','c','d','e','f'};String s= new String(arr,1,3);sop("s="+s);String s1 = "zxcvbnm";char[] chs = s1.toCharArray();for(int x=0; x<chs.length; x++){sop("ch="+chs[x]);}}public static void method_is(){String str = "ArrayDemo.java";//判断文件名称是否是Array单词开头。sop(str.startsWith("Array"));//判断文件名称是否是.java的文件。sop(str.endsWith(".java"));//判断文件中是否包含Demosop(str.contains(".java"));}public static void method_get(){String str = "abcdeakpf";//长度sop(str.length());//根据索引获取字符。sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException。//根据字符获取索引sop(str.indexOf('m',3));//如果没有找到,返回-1.//反向索引一个字符出现位置。sop(str.lastIndexOf("a"));}public static void main(String[] args) {method_7();//method_trans();//method_is();//method_get();/*String s1 = "abc";String s2 = new String("abc");String s3 = "abc";System.out.println(s1==s2);System.out.println(s1==s3);*/}public static void sop(Object obj){System.out.println(obj);}}
StringBuffer
特点
StringBuffer是一种容器,他的特点是:
1.长度是可变化的
2.可以直接操作多个数据类型。
3.最终会通过toString()方法变成字符串。
容器有一些共性的操作,即:C create U update R read D delete
StringBuffer的常见操作
1.存储
StringBufferappend():将指定的数据作为参数添加到已有数据的尾处。
StringBufferinsert(index,String str):可以将数据插入到指定index位置。
2.删除
StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBufferdeleteCharAt(index):删除指定位置的字符。
3.获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4.修改
StringBuffer replace(int start, int end,String str)
void setCharAt(int index, char ch)
5.反转
StringBufferreverse();
StringBuffer的使用示例
class StringBufferDemo {public static void main(String[] args) {//method_update();StringBuilder sb = new StringBuilder("abcdef");char[] chs = new char[6];sb.getChars(1,4,chs,1);for(int x=0; x<chs.length; x++){sop("chs["+x+"]="+chs[x]+";");}draw(3,6);draw(8,9);//StringBuilder sb1 = new StringBuilder();//sb1.append(new Demo()).append(new Demo());//sop("sb1="+sb1);}public static void method_update(){StringBuffer sb = new StringBuffer("abcde");//sb.replace(1,4,"java");sb.setCharAt(2,'k');sop(sb.toString());}public static void method_del(){StringBuffer sb = new StringBuffer("abcde");//sb.delete(1,3);//清空缓冲区。//sb.delete(0,sb.length());//sb.delete(2,3);sb.deleteCharAt(2);sop(sb.toString());}public static void method_add(){StringBuffer sb = new StringBuffer();//sb.append("abc").append(true).append(34);//StringBuffer sb1 = sb.append(34);//sop("sb==sb1:"+(sb==sb1));sb.insert(1,"qq");sop(sb.toString());//abctrue34//sop(sb1.toString());}public static void sop(String str){System.out.println(str);}public static void draw(int row,int col){StringBuilder sb = new StringBuilder();for(int x=0; x<row; x++){for(int y=0; y<col; y++){sb.append("*");}sb.append("\r\n");}sop(sb.toString());}}
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员——初识String类:String类的知识点总结
- 黑马程序员——String类知识点详细
- 黑马程序员——String类方法应用的总结
- 黑马程序员—String类
- 黑马程序员——String类中常用方法总结
- 黑马程序员——Java中的String类总结
- 黑马程序员——JAVA String总结
- 黑马程序员——String总结
- 黑马程序员——String 总结
- 黑马程序员——JAVA String总结
- String类总结01-----黑马程序员
- String类总结02-----黑马程序员
- 黑马程序员——String类
- 黑马程序员——String类
- 黑马程序员——String类
- 黑马程序员——【java】String类
- 黑马程序员——String类
- 黑马程序员——String类
- StringBuffer与StringBuilder区别
- 一天一linux命令(16) cut sort wc uniq tee split 较常用命令
- opengl纹理相关知识
- linuxforward的实现(ip_rcv__iprcv_slow_ip_route_input
- do...while(0)的妙用
- 黑马程序员——初识String类:String类的知识点总结
- 战争迷雾效果 第05章 项目源码下载
- 特效
- JSTL 表达式与 EL 语言
- 广州传智播客4月份最新开班信息
- maven安装与使用
- 在线备份系统的简明操作
- ubuntu 中搭建gitlab方法
- OFBiz使用自己的静态原型的方法