黑马程序员—【Java基础篇】之String类与包装类
来源:互联网 发布:java 泛型类 静态方法 编辑:程序博客网 时间:2024/06/08 06:33
------- android培训、java培训、期待与您交流! ---------
伙伴们好,这篇为大家介绍分享String类和其它基本数据类型包装类,这二大块部分。
一、String类
1.定义
/** 字符串是一个特殊的对象。 字符串一旦初始化就不可以被改变。String str = “abc”; String str1 = new String(“abc”); 有什么区别 ?*/
2.思考
<span style="font-size:14px;">//对于上述问题的思考:class StringDemo {public static void main(String[] args) {String s1 = "abc";//s1是一个类类型变量, "abc"是一个对象。//字符串最大特点:一旦被初始化就不可以被改变。String s2 = new String("abc");/*s1和s2有什么区别?s1在内存中有一个对象。s2在内存中有两个对象。*/}</span>
3.方法介绍
/**(1)获取 a. 字符串中包含的字符数,也就是字符串的长度 int length()://获取长度。 b. 根据位置获取位置上的某个字符 char charAt(int index):// 当访问到字符串中不存在的角标时,会发生字符串角标越界的错误。 c. 根据字符获取该字符存在字符串的位置 int indexOf(int ch)://返回的是ch在字符串中第一次出现的位置。//传入的是字符对应的ASCII码。//如果没有找到,返回-1。 int indexOf(int ch,int fromIndex)://从fromIndex指定位置开始,获取ch在字符串中出现的位置。 int indexOf(String str)://返回的是str在字符串中第一次出现的位置。 int indexOf(String str,int fromIndex)://从fromIndex指定位置开始,获取str在字符串中出现的位置。 int lastIndexOf()://反向索引 (2)、判断 a. 字符串中是否包含某一个子串 booleancontains(str); //特殊之处:indexOf(str)可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。如:if(str.indexOf(“aa”)!=-1)而且该方法既可以判断,又可以获取出现的位置。如果只为判断,用contains。 b. 字符串中是否有内容 booleanifEmpty();//原理就是判断长度是否为0。 c. 字符串是否是以指定内容开头 booleanstartsWith(str); d. 字符串是否是以指定内容结尾 booleanendsWith(str); e. 判断字符串内容是否相同,复写了Object类中的equals方法 booleanequals(str); f. 判断内容是否相同,并忽略大小写。 booleanequalsIgnoreCase();(3)、转换 a. 将字符数组转成字符串 构造函数:String (char[]); String(char[],offset,count);//将字符数组中的一部分转成字符串。 静态方法: static String copyValueOf(char[]); staticString copyValueOf(char[] data,int offset ,int count ); static String valueOf(char[]); b. 将字符串转成字符数组 char[]toCharArray(); c.将字节数组转成字符串 String (byte[]); String(byte[],offset,count);//将字节数组中的一部分转成字符串。count表示个数。 d.将字符串转成字节数组 byte[]getBytes(); f.将基本数据类型转成字符串 StringvalueOf(int); StringvalueOf(double); 特殊:字符串和字节数组在转换过程中,是可以指定编码表的。(4)、替换 Stringreplace(oldchar,newchar);//返回的是一个新字符串。如果要替换的字符不存在,返回的还是原字符串。(5)、切割 String[] split(regex);//涉及到正则表达式的点,不能作为切割字符串的regex。(6)、子串,获取字符串中的一部分 String substring(begin);//从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。 Stringsubstring(begin,end);//包含头,不包含尾。(7)转换,去除空格,比较 a.将字符串转成大写或小写 StringtoUpperCase(); String toLowerCase(); b.将字符串两端的多个空格去除 String trim(); c.对两个字符串进行自然顺序的比较 intcompareTo(String);*/示例:
class StringMethodDemo//String方法示例{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);}}
4.练习
<span style="font-size: 18px;">/</span><span style="font-size:14px;">**1. 子串在整串中出现的次数。2. 两个字符串的最大相同子串。*//**1.获取一个字符串在另一个字符串中出现的次数。"abkkcdkkefkkskk"思路:(1)定义个计数器。(2)获取kk第一次出现的位置。(3)从第一次出现位置后剩余的字符串中继续获取kk出现的位置。每获取一次就计数一次。(4)当获取不到时,计数完成。*/class StringTest1{public static int getSubCount(String str,String key){int count = 0;int index = 0;while((index=str.indexOf(key))!=-1){sop("str="+str);str = str.substring(index+key.length());count++;}return count;}/*练习1,方式二。*/public static int getSubCount_2(String str,String key){int count = 0;int index = 0;while((index= str.indexOf(key,index))!=-1){sop("index="+index);index = index + key.length();count++;}return count;}public static void main(String[] args) {String str = "kkabkkcdkkefkks";///sop("count====="+str.split("kk").length);不建议使用。sop("count="+getSubCount_2(str,"kk"));}public static void sop(String str){System.out.println(str);}}/**2、获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。"abcwerthelloyuiodef""cvhellobnm"思路:(1)将短的那个子串按照长度递减的方式获取到。(2)将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。*/class StringTest3{/*练习2。*/public static String getMaxSubString(String s1,String s2){String max = "",min = "";max = (s1.length()>s2.length())?s1: s2;min = (max==s1)?s2: s1;//sop("max="+max+"...min="+min);for(int x=0; x<min.length(); x++){for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++){String temp = min.substring(y,z);sop(temp);if(max.contains(temp))//if(s1.indexOf(temp)!=-1)return temp;}}return "";}public static void main(String[] args) {String s1 = "ab";String s2 = "cvhellobnm";sop(getMaxSubString(s2,s1));}public static void sop(String str){System.out.println(str);}}</span>
二、StringBuffer容器
1.定义
/** StringBuffer是一个容器,字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删改查等操作,很多方法和String相同。*/
2.特征
/**(1)StringBuffer可以对字符串内容进行增删。(2)StringBuffer是一个容器。(3)StingBuffer是可变长度的。*/
3.常见操作方法
/**(1)存储StringBuffer append():将指定数据作为参数添加到已有数据结尾处。StringBuffer insert(index,数据):可以将数据插入到指定index位置。(2)删除StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(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(start,end,string);void setCharAt(int index, char ch) ;(5)反转StringBuffer reverse(); (6)将缓冲区中指定数据存储到指定字符数组中void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) JDK1.5 版本之后出现了StringBuilder.StringBuffer是线程同步。StringBuilder是线程不同步。以后开发,建议使用StringBuilder升级三个因素:(1)提高效率。(2)简化书写。(3)提高安全性。*/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培训、期待与您交流! ---------
0 0
- 黑马程序员—【Java基础篇】之String类与包装类
- 黑马程序员 Java基础<六>---> String类与包装类
- 黑马程序员 Java基础<六>---> String类与包装类
- 黑马程序员-- Java基础---> String类与包装类
- 黑马程序员——Java基础--String类与基本数据类型对象包装类
- 黑马程序员————Java基础之String类和基本数据类型包装类
- 黑马程序员——java基础知识之String类和基础数据类型对象包装类
- 黑马程序员——Java基础之String类、基本数据类型包装类
- 黑马程序员--Java基础之String类和基本数据类型对象包装类
- 黑马程序员--java基础复习之String类StringBuffer及基本数据类型包装类
- 黑马程序员--Java基础--基本数据类型与包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——Java基础---String类、基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员——java基础学习--String类,StringBuffer和基本数据包装类
- 黑马程序员——java基础-String类和基本数据类型包装类
- 循环链表--主要操作
- printk消息打印级别
- uva10954
- 【bestcoder #37】ABC题解
- [python][爬虫]暴漫gif下载
- 黑马程序员—【Java基础篇】之String类与包装类
- Adobe Dreamweaver CS6简体中文版在64位Win7上的安装与破解
- Mysql 表空间概念
- win8开机默认账户以及无密码登陆
- Java Web应用程序开发_HTTP协议
- #ifdef,#else,#endif,#if用法详解
- Js屏蔽键盘输入的某些字符,用以部分代替正则表达式
- 图片自适应uiimageview
- 双向链表--主要操作