Java基础<八>_字符串
来源:互联网 发布:java compareto 排序 编辑:程序博客网 时间:2024/06/06 03:09
字符串
一、字符串
1.1、String类
字符串是一种很常见的数据类型,在很多的编程语言中都对字符串进行了封装;在java中,用String类封装字符串。
字符串最大的特点是一旦被初始化就不可以改变。
String类用于描述字符串,那么它一定提供了多个方法对字符串进行操作,下面介绍常用的操作方法:
1、获取:
int length():获取长度;
char charAt(int index):根据位置获取字符;
int indexOf(int ch):根据字符获取位置,返回的是第一次出现的位置;
int indexOf(int ch,int fromIndex):根据字符获取位置,从fromIndex开始;
int indexOf(String str ):获取字符串出现的位置,返回的是第一出现的位置;
int lastIndexOf(int ch):反向查找,获取的查找字符时第一次出现的位置。
2、判断:
boolean contains(String str):判断是否包含子串;
boolean startsWith(String str):判断是否以指定字符串开头;
boolean endsWith(String str):判断是否以指定字符串结尾;
boolean equalsIgnoreCase(String str);判断是否相同,并忽略大小写。
3、转换:
String(char[]value):将字符数组转换成字符串;
static String valueOf(char[]):将字符数组转换成字符串;
char[] toCharArray():将字符串转成字符数组;
byte[] getBytes():将字符串转成字节数组;
static String valueOf(int )//double float:将基本数据类型转成字符串。
4、替换:String replace(char oldChar,char newChar);
5、切割:String[] split(String regex);
6、获取子串:String subString(int begin,int end);
7、转换,去除空格,比较:
String toUpperCase();String toLowerCase();大小写转换;
String trim();去除两端的空格;
int compareTo(String str):比较两个字符串的大小。
下面代码演示String类的功能:
1、简单演示:
package itheima.day13;public class StringDemo {public static void method_get(){String str ="asdffaghha";//长度sop(str.length());//获取sop(str.lastIndexOf('s'));sop(str.charAt(4));sop(str.lastIndexOf('a'));}//切割public static void method_split(){String s = "zhangsan,lisi,wangwu";String[] arr = s.split(",");for(int i=0;i<arr.length;i++)sop(arr[i]);}public static void main(String[] args) {String s1 = "abc";String s2 = new String("abc");//System.out.println(s1 == s2);//false//System.out.println(s1.equals(s2));//true//method_get();method_split();}public static void sop(Object obj){System.out.println(obj);}}2、练习:
package itheima.day13;public class StringTest {public static void main(String[] args) {//1、String str1 = " fgfh fghfdb ";String newStr = myTrim(str1);sop(newStr);//2、String reveStr =reverseString(newStr);sop(reveStr);//3、String str2 ="KKJJHHNNBBVVHHUIUOOKKJJHH";int count = getSubCount(str2,"JJ");sop(count);//4、String MaxStr = getMaxSubString("1254568956","4525");sop(MaxStr);}public static void sop(Object obj){System.out.println(obj);}// 需求:模拟一个trim方法,去除字符串两端的空格。// 思路:1、判断字符串第一个位置是否是空格,直到不是空格为止// 2、当开始和结尾都不是空格时,获取该子串public static String myTrim(String str){int start = 0,end = str.length()-1;while(start<=end && str.charAt(start)==' ')start++;while(end>=start && str.charAt(end)==' ')end--;return str.substring(start,end+1);}//练习2:将一个字符串进行反转// 思路:1将字符串转成字符数组,反转字符数组// 2将反转后的字符数组变成字符串。public static String reverseString(String str){char[] arr = str.toCharArray();reverse(arr);return new String(arr);}private static void reverse(char[] arr){for(int start=0,end=arr.length-1;start<end;start++,end--)swap(arr,start,end);}private static void swap(char[] arr,int x,int y){char temp = arr[x];arr[x] = arr[y];arr[y] = temp;}//练习3:获取一个字符串在另一个字符串中出现的次数// 思路:1、定义一个计数器。2,获取位置,计数器自增public static int getSubCount(String str,String key){int count = 0;int index = 0;while((index = str.indexOf(key,index))!=-1){index = index +key.length();count++;}return count;}//练习4、获取两个字符串中最大相同子串。// 思路:1、将短的那个子串按照长度递减的方法获取// 2、将每次获取到的子串,判断长串是否包含,如果包含,找到!public static String getMaxSubString(String str1,String str2){String max ="",min ="";max = (str1.length()>str2.length())?str1:str2;//长串min = (max == str1)?str2:str1;//短串//查找for(int x =0;x<min.length();x++){for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++){//y:字符串的头,z:字符串的尾;包含头,不包含尾String temp = min.substring(y,z);if(max.contains(temp))return temp;}}return "";}}
1.2、StringBuffer类与StringBuilder类
StringBuffer是字符串缓冲区,是一个容器;长度可变并且可以操作多种数据类型。最后通过toString()方法变成字符串。下面介绍StringBuffer类的基本方法:
1、存储:
StringBuffer append(data):将数据插入结尾处;
StringBuffer insert(int index,data):插入数据到指定位置。
2、删除:
StringBuffer delete(int start,int end):删除缓冲区中的指定数据;
Stringbuffer deleteCharAt(int index):删除指定位置的字符。
3、修改:StringBuffer replace(int start,int end,String str):替代
4、反转:StringBuffer reverse()。
StringBuilder是JDK1.5以后才出现的,用法基本与StringBuffer相同,但它不不同步,StingBuffer同步。
版本升级三个因素:提高效率;简化书写;提高安全性。
简单代码演示:
package itheima.day13;public class StringBufferDemo {public static void main(String[] args) {method_add();method_del();}public static void method_add(){//容器StringBuffer sb = new StringBuffer();//追加sb.append(true).append("sdggh").append(563.0);System.out.println(sb);}public static void method_del(){StringBuffer sb = new StringBuffer("abxcd");sb.delete(1, 3);//sb.delete(0, sb.length());System.out.println(sb.toString());}}
二、包装类
根据面向对象的思想,数据类型该怎么操作,只有数据本身最清楚。为了操作的方便,因此把基本数据类型封装成了包装类,并向外提供了很多操作基本数据的方法。
基本数据包装类有八个:Byte、Short、Integer、Long、Boolean、Float、Double和Character,分别对应具体的八个基本数据类型。
包装类最常见作用:用于基本数据类型和字符串类型之间的转换。
基本数据类型转成字符串:基本数据类型+“”;基本数据类型包装类.toString(基本数据类型),例如:Integer.toString(34)。
字符串转成基本数据类型:xxx a = Xxx.parseXxx(string)。
十进制转成其他进制:Integer.toXxxString(int)。
其他进制转换成十进制:Integer.parseInt(String s,int radix)//radix表示进制数
自动装箱与自动拆箱:这是JDK5.0之后出现的新特性,例如:Integer x = new Integer(4);可以直接写成Integer x = 4;//自动装箱;x = x + 5;//自动拆箱。通过intValue()方法。
简单代码演示:
package itheima.day13;//基本数据类型包装类最常用的操作://用于基本数据类型与字符串之间的转换public class IntegerDemo {public static void main(String[] args) {//整数类型的最大值、最小值sop("int max = "+Integer.MAX_VALUE);sop("int min = "+Integer.MIN_VALUE);//自动装箱//new Integer(4)Integer x = 4;//自动拆箱//x.intValue()x =x+2;}private static void sop(Object obj){System.out.println(obj);}}
- Java基础<八>_字符串
- java基础八:字符串
- Java基础_字符串
- 八.Java基础_集合类(一)
- Android基础_广播(八)
- Java基础(八)字符串与正则表达式
- MySQL_005_基础_字符串
- java基础<八>-------多态
- Java基础之八
- Java语言基础(八)
- python基础八_面向对象编程
- 数据结构基础_插入字符串
- Java基础_函数
- Java基础_多线程
- Java基础_序
- Java基础_环境变量
- Java基础_标识符
- Java基础_数据类型
- MySQL远程访问权限,允许远程连接的开启及局域网访问慢解决办法
- Adobe CS6和CS6.5官方简体中文英文原版版全系列迅雷下载地址
- sublime text2 用ctags插件实现方法定位
- 面试常见问题的经典回答 from http://www.nowamagic.net/
- Java设计模式:命令模式
- Java基础<八>_字符串
- Flex中将wmode设置为Opaque或Transparent时,鼠标滑轮mouseWheel事件失效的解决方法。
- MiniGUI源码分析——开始篇
- java_web学习第九天(JDBC数据库驱动------基础知识)
- Android makefile文件详解
- php无限循环分类小例子
- spring mvc 文件上传下载
- ZOJ 1926 Guessing Game
- (11) - 泛型 (图)