`
Luob.
  • 浏览: 1588834 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之13天 字符串 (一)

    博客分类:
  • Java
阅读更多
字符串

/**
 * String 类适用描述字符串事物
 * 那么他提供了多个方法对字符串进行操作
 * 
 * 常见的操作有那些呢?
 * "abc"
 * 
 * 1.获取 
 *   1.1  字符串中的包含的字符数,也就是字符串的长度
 *      int length() :获取 长度
 *   1.2 根据位置获取位置上的某个字符
 *      char charAt(int index);
 *   1.3 根据字符 获取字符在 字符串中第一次出现的位置
 *      int indexOf(int ch);  //接受的 ASCII码
 *      int indexOf(int ch,int fromIndex);//从fromIndex指定位置开始,获取ch 在字符串中出现的位置
 *      
 *      int indexOf(String str); 返回的是str在字符串中第一初相的位置
 *      int indexOf(String ch,int fromIndex);//从fromIndex指定位置开始,获取ch 在字符串中出现的位置
 *      int lastIndexOf(String ch,int fromIndex);//从fromIndex指定位置开始,获取ch 在字符串中出现的位置
 *      int codePointAt(int index) 返回指定索引处的字符(Unicode 代码点)。
 *      int codePointBefore(int index) codePointBefore(int index) 
 *      int codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本范围中的 Unicode 代码点数。
 *      
 * 2.判断
 *    2.1 字符串中是否包含某一子字符串
 *         boolean contains(str);
 *         indexOf(str) 功能都可以实现
 *    2.2 字符串是否有内容
 *         boolean  isEmpty(); 原理就是判断 长度是否为0 
 *    2.3 字符串是否以指定内容开头
 *         boolean startsWith(str)
 *    2.4 字符串是否 以制定内容结尾
 *		   boolean endsWith(str)  
 *    2.5 判断字符内容是否相同  复写了Object类中的equals 方法
 *        boolean equals();
 *    2.6 判断内容是否相同,并忽略大小写.
 *        boolean equalsIgnoreCase(); 
 *        
 * 3.转换
 *    3.1 将字符数组转成字符串
 *        构造函数  String (char[])
 *              String (char[],int offset,count); 将字符数组中的一部分转成字符串
 *        静态方法
 *              static String copyValueOf(char[])
 *              static copyValueOf(char[] data, int offset, int count)
 *              static String valueOf(int);
 *    3.2 将字符串转成字符数组
 *           char[] toCharArray();
 *           
 *         
 *    3.3 将字节数组转成字符串
 *    	    构造函数  String (byte[])
 *              String (byte[],int offset,count); 将字节数组中的一部分转成字符串
 *    3.4 将字符串转成 字节数组
 *           byte[] getBytes();
 *    3.5 将基本类型数据转成字符串
 *        static String valueOf(int);
 *        static Stirng valueOf(double);
 *      
 *     特殊: 字符串和字节数组在转换的过程中,是可以指定编码表的 
 *     
 * 4. 替换
 *    String replace(oldchar,new char);
 *    Stirng replace(oldcharsequence,newcharsequence);
 *    
 * 5.切割
 *    String[] split(regex);
 *
 * 6.子串,获取字符串中的一部分 
 *   String substring(int begin);
 *   String substring(int begin,int end);
 * 7.转换, 去除空格,比较
 *   7.1 将字符串转换成大写或者小写
 *     String toUpperCase()
 *     String toLowercase()
 *   7.2 将字字符串两端的多个空格去掉
 *   	String  trim()
 *   7.3 对字符串进行自然顺序的比较
 *      int compareTo   this< param  <0  this=param =0 this> param >0
 *
 *   
 */
public class StringDemo {
	
	public static void method_7(){
		String s="    Hello   java     ";
		sop(s.toUpperCase());
		sop(s.toLowerCase());
		sop(s.trim());
	}
	
	
	public static void method_subString(){
		String s="hellojava";
		sop(s.substring(2));  //从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常
		sop(s.substring(2,4));// 包含头,不包含尾
	}
	public static void method_split(){
		String s="zhangs,lisi,wangwu";
		String[] names=s.split(",");
		
		for (String string : names) {
			sop(string);
		}
	}
	public static void method_replace(){
		String s="hello java";
		String s1=s.replace('q', 'n');  //如果替换的字符串在原字符串中不存在 ,则返回的还是原字符串
		sop(s);
		sop(s1);
		String s2=s.replace("java", "word");
		sop(s2);
	}
	
	public static void method_trans(){
		char[] arr={'a','b','c','d','e','f','g'};
		String s=new String(arr);
		sop("s="+s);
		s=new String(arr,1,3);   // 1.是角标  3 是个数 
		sop("s="+s);
		
		sop(String.copyValueOf(arr));
		sop(String.copyValueOf(arr,1,3));
		/*sop(str);
		sop(str);
		sop(str);
		sop(str);
		sop(str);*/
		
	}
	
	public static void method_is(){
		String str="ArrayDemo.java";
		sop(str.startsWith("Array"));
		sop(str.endsWith(".java"));
		sop(str.contains("Demo"));
		
	}
	public static void method_get(){
		String str="abcdeakpf";
		//长度
		sop(str.length());
		//根据索引获取字符
		sop(str.charAt(4));   //当访问到字符从中不存在的角标的时候 会发生,StringIndexOfBoundsException.
		
		//根据字符获取索引
		sop(str.indexOf('m',3));//当找不到 制定的字符的时候 返回-1
		
		//反向索引一个字符出现的位置
		sop(str.lastIndexOf('a'));  //脚本还是从左边开始 标识,  只是从右边开始查找 
		
		//返回制定脚本上的ASCII码 
		sop(str.codePointAt(3));  // c 的ASCII 
		//返回指定索引之前的字符的 SCAII嘛
		sop(str.codePointBefore(3));  // b 的ASCII
		//指定文本范围中的 Unicode 代码点数。
		sop(str.codePointCount(0,6));
		
		
	}
	
	public static void sop(Object obj){
		System.out.println(obj);
		
	}
	
	public static void main(String[] args) {
		String s1="abc";// s1是一个类类型的变量,"abc"是一个对象   "abc" 存在 常量池中 
		  //字符串最大的特点,是一旦被初始化就不可以被改变
		s1="kk";
		System.out.println(s1);  //只是 s1的指向 改变了  abc 这个对象 还是没有改变
		
		String s2=new String("abc"); //new String()  "abc"
		String s3="abc";  //由于常量池中有 abc  所以 不会再开辟空间来 新建对象
		
		//s1和s2 有什么区别?
		//s1 代表一个对象
		//s2代表 两个对象.
		
		System.out.println(s1=s2); //false
		System.out.println(s1.equals(s2));// true -->String 类复写了Object类中的equals方法
		//该方法用于判断字符串是否相同
		System.out.println(s1==s3);
		
		System.out.println("====================================");
		method_get();
		System.out.println("====================================");
		method_trans();
		System.out.println("====================================");
		method_replace();
		System.out.println("====================================");
		method_subString();
		System.out.println("====================================");
		method_7();
		
	}

}


字符串的练习
/**
 * 字符串的练习
 * 1.模拟一个trim方法.去掉字符串两端的空格.
 *    思路
 *    1)判断字符串第一个位置是否为空格,如果是继续乡下判断,知道不是空格为止
 *       结尾处判断空格也是如此
 *    2)当开始和结束都判断到不是空格时,就是要获取的字符串.
 *    
 * 2.将一个字符串进行反转,将字符串中指定的部分进行反转.
 *   思路
 *    1)曾经学习过对数组的元素进行反转
 *    2)将字符串编程数组,对数组反转
 *    3)将反转后的数组变成字符串
 *    4)只要将反转的部分的开始和结束位置作为参数传递即可  
 * 
 * 3.获取一个字符串在另一个字符串中出现的次数
 *   思路
 *   1)定义个计数器
 *   2)获取kk第一次出现的位置
 *   3)从第一次出现的位置后剩余的字符串中继续获取kk出现的位置
 *     每获取一次计数器加一
 *   4)当获取不到十计数器完成
 * 
 * 4.两个字符串中最大相同子串,第一个动作,将短的那个串进行长度一次递减的子串打印.
 *   "abcwerthelloyuiodef"
 *   "cvhelloohnm"
 *   思路:
 *   1)将短的那个子串安装长度递减的凡是获取到.
 *   2)将每个获取到的子串去长串中判断是否包含.如果包含,已经找到!
 *
 */

public class StringDemo1 {

	public static void sop(String str){
		System.out.println(str);
	}
	public static void main(String[] args) {
		String s="     Hello  world     ";
		
		String str="kkabkkcdHellokkefghkks";
		sop(myTrim(s));
		sop(reversString(s,7,13));
		sop(reversString(s));
		sop("count="+getSubCount(str,"kk"));
		sop("count====="+getSubCount2(str,"kk"));
		
		sop(getMaxSubString(str,"ssdHellokefghk"));
	}
	//练习四
	public static String getMaxSubString(String s1,String s2){
		String max="",min="";
		max=s1.length()>s2.length()? s1:s2;
		min=max==s1?s2:s1;
		
		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);
				if(max.contains(temp))  //s1.indexOf(temp)!=-1 return temp
					return temp;
			}
		}
		return "";
	}
	
	
	//练习三,方三
	public static int getSubCount3(String str,String key){
		int count=0,index=0;
		while((index=str.indexOf(key,index))!=-1){
			count++;
			index=index+key.length();
		}
		return count;
	}
	
	public static int getSubCount2(String str,String key){
		//不建议 使用这个 因为如果开头为 key 的话 就会出现有时候多一个情况
		return str.split("kk").length; 
	}
	
	//练习三,获取一个字符串在另一个字符串中出现的次数
	public static int getSubCount(String str,String key){
		int count=0;
		int index=0;
		while((index=str.indexOf(key))!=-1){
			count++;
			str=str.substring(index+key.length());
		}
		return count;
	}
	
	
	
	//练习二 ,将字符串反转
	public static String reversString(String s,int start,int end){
		//字符串编程数组
		char[] chs=s.toCharArray();
		
		//反转数组
		revers(chs,start,end);
		
		//将数组编程字符串
		return new String(chs);
	}
	
	public static String reversString(String s){
		return reversString(s,0,s.length());
	}
	private static void revers(char[] arr,int x,int y){
		for(int start=x,end=y-1;start<end;start++,end--){
			swap(arr,start,end);
		}
	}
	
	private static void swap(char[] arr,int start,int end){
		char temp=arr[start];
		arr[start]=arr[end];
		arr[end]=temp;
	}
	
	
	
	//练习一,取出字符串两端空格.
	public static String myTrim(String str){
		int start=0,end=str.length()-1;
		while(start<=end && str.charAt(start)==' ')
			start++;
		while(start<=end && str.charAt(end)==' ')
			end--;
		return str.substring(start,end+1);
	}

}


0
5
分享到:
评论

相关推荐

    毕向东13字符串01

    在第一部分“黑马程序员_毕向东_Java基础视频教程第13天-01-String(概述).avi”中,讲解了字符串的基础知识。字符串在Java中是不可变的对象,这意味着一旦创建,就不能改变其内容。它们是通过`String`类或`...

    字符串1302

    本节视频教程"Java基础视频教程第13天 string字符串02"深入探讨了Java中字符串对象的创建、常用方法以及一些核心特性。下面将详细解析这些知识点。 1. **字符串对象的创建** Java中的字符串是不可变的,这意味着...

    字符串1303

    本教程“Java基础视频教程第13天 string字符串03”深入探讨了Java中的字符串处理,特别是关于切割、替换、比较和去除空格的功能。以下是这些知识点的详细说明: 1. **字符串对象的创建与不可变性** 在Java中,字符...

    字符串1306

    在本教程"字符串1306"中,我们将深入学习Java中的字符串处理,特别是通过`StringBuffer`类来实现字符串的高效修改和管理。本教程对应于Java基础视频教程的第13天,由知名教育机构黑马程序员的讲师毕向东讲解。 首先...

    字符串1304

    在第13天的学习中,讲师毕向东深入讲解了字符串的操作和应用,特别是通过两个实践练习——字符串练习2和字符串练习3,来巩固学员对字符串的理解。 Java中的String类是不可变的,这意味着一旦创建了String对象,它的...

    字符串1307

    本节视频教程"Java基础视频教程第13天 string字符串07"深入探讨了Java中的字符串处理,特别是围绕基本数据类型与对象包装类之间的交互。 首先,字符串在Java中是不可变的,这意味着一旦创建了一个字符串对象,就不...

    java教程-每日一课,27天java从入门到进阶

    第12天:字符串王者地位 第13天:算法工具类包装类 第14天:正则及其他类 第15-18天:数组到集合 第19天:文件操作IO 第20、21天:IO流文件操作类图 第22天:其他流 第23天:多线程 第24天:多线程深入 第25天:GUI ...

    字符串1305

    在本套Java基础视频教程的第13天,主要讲解了字符串对象的使用,特别是`String`类以及与之相关的`StringBuffer`和`StringBuilder`类。以下是关于这些知识点的详细解释: 1. **String类**: - `String`是Java中的一...

    黑马程序员_Java基础辅导班教程课件[第01期]第13天

    【Java基础辅导班教程...总之,"黑马程序员_Java基础辅导班教程课件[第01期]第13天"是一个全面覆盖Java基础的教程,结合课堂内容、视频、源码和图解,为学员提供了丰富的学习资源,助力他们稳步迈进Java开发的世界。

    java判断时间大小

    1. **时间格式化**:首先需要将字符串形式的时间转换为`Date`对象,这通常需要借助`SimpleDateFormat`类来完成。 - **代码示例**: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss...

    与众不同的 Java 日期格式化大全

    Java 日期格式化大全是 Java 中一个非常重要的知识点,它对于将时间字符串转换为日期或将日期转换为时间字符串起着关键作用。在 Java 中,我们通常使用 `java.text.SimpleDateFormat` 类来处理日期和时间字符串的...

    韩顺平30天学java

    5. **字符串**:Java中的String类是不可变的,你需要掌握它的特性和常用方法,如substring、concat、indexOf等。 6. **异常处理**:理解Java的异常处理机制,包括try-catch-finally语句块,以及自定义异常的创建。 ...

    java小练习,Java练习小程序,Java必用

    - 给定一个字符串,如果第一个字符是字母,则将它移到字符串末尾。 - 使用String类的方法实现字符串的截取和拼接操作。 27. **质数判断**: - 判断100以内的所有数字是否为质数。 - 可以使用循环结构进行判断,...

    【IT十八掌徐培成】Java基础第13天-06作业辅导.zip

    9. **字符串处理**:String类在Java中非常重要,理解其不可变性、字符串连接、子串提取等操作对于日常编程至关重要。 10. **调试与测试**:学习如何使用IDE进行断点调试,理解日志记录和单元测试的基本原理,可以...

    Java基础学习第二天

    在Java的基本语法部分,学习了第一个HelloWorld程序,包括关键字public、class、static、void、main,以及字符串数组String[] args。这是一个程序的入口点,是运行Java程序时首先被调用的方法。此外,还学习了print...

    java 15天教程下载,可供java初学者学习使用

    11 JAVASE第11天字符串.docx 12 JAVASE第12天.docx 13 第13天集合.docx 14 第14天集合下.docx 15 第15天Map集合.docx 16 第16天IO流.docx 17 第17天字节流.docx 18 线程.docx 19 网络编程.docx 2 拓薪教育-java基础...

    【IT十八掌徐培成】Java基础第13天-03.BufferedReader.zip

    1. `readLine()`: 读取一行文本,返回一个字符串,如果没有更多行可读,则返回null。 2. `read()`和`read(char[] buffer)`: 读取单个字符或填充缓冲区直到遇到换行符或文件结束。 3. `skip(long n)`: 跳过指定数量的...

    java代码获取myeclipse注册码.txt

    `change`方法实现了一个简单的字符替换算法,该算法会遍历输入字符串中的每个字符,并根据不同的字符范围进行替换: - 数字字符(48-57):通过加5取模后转换回数字。 - 大写字母字符(65-90):通过加13取模后转换...

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 ...23、根据传入的日期返回前一季度字符串 24、根据传入的日期返回相应的季度 .......

    21天学通JAVA(高清版)

    5. **字符串处理**:掌握String类的特性,学习如何创建、操作和比较字符串。 6. **异常处理**:理解Java的异常体系,学习如何使用try-catch-finally语句进行异常处理。 7. **输入/输出流**:了解I/O流的概念,学习...

Global site tag (gtag.js) - Google Analytics