本片主要介绍String,StringBuffer,StringBuilder的特点和运用。
下图是对String,StringBuffer,StringBuilder的详细描述
示例代码段1:给定一个字符串数组。按照字典顺序进行从小到大的排序。
{"nba","abc","cba","zz","qq","haha"}
package cn.itcast.p1.string.test; /* * 1,给定一个字符串数组。按照字典顺序进行从小到大的排序。 * {"nba","abc","cba","zz","qq","haha"} * * 思路: * 1,对数组排序。可以用选择,冒泡都行。 * 2,for嵌套和比较以及换位。 * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。 * 字符串对象怎么比较呢? 对象中提供了用于字符串对象比较的功能。 * * */ public class StringTest_1 { /** * @param args */ public static void main(String[] args) { String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" }; printArray(arr); sortString(arr); printArray(arr); } public static void sortString(String[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if(arr[i].compareTo(arr[j])>0)//字符串比较用compareTo方法 swap(arr,i,j); } } } private static void swap(String[] arr, int i, int j) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void printArray(String[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) System.out.print(arr[i] + ", "); else System.out.println(arr[i] + "]"); } } }
示例代码段2:需求:2,一个子串在整串中出现的次数。 "nbaernbatynbauinbaopnba
package cn.itcast.p1.string.test;
/*
* 2,一个子串在整串中出现的次数。
* "nbaernbatynbauinbaopnba"
* 思路:
* 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
* 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
* 而剩余字符串的起始位是出现位置+子串的长度.
* 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。
*
*/
public class StringTest_2 {
/**
* @param args
*/
public static void main(String[] args) {
String str = "nbaernbatnbaynbauinbaopnba";
String key = "nba";
int count = getKeyStringCount_2(str,key);
System.out.println("count="+count);
}
public static int getKeyStringCount_2(String str, String key) {
int count = 0;
int index = 0;
while((index = str.indexOf(key,index))!=-1){
index = index + key.length();
count++;
}
return count;
}
/**
* 获取子串在整串中出现的次数。
* @param str
* @param key
* @return
*/
public static int getKeyStringCount(String str, String key) {
//1,定义计数器。
int count = 0;
//2,定义变量记录key出现的位置。
int index = 0;
while((index = str.indexOf(key))!=-1){
str = str.substring(index+key.length());
count++;
}
return count;
}
}
示例代码段3:需求:3,两个字符串中最大相同的子串。 "qwerabcdtyuiop" * "xcabcdvbn"
package cn.itcast.p1.string.test; /* * 3,两个字符串中最大相同的子串。 * "qwerabcdtyuiop" * "xcabcdvbn" * * 思路: * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。 * 如果存在,短的那个字符串就是最大子串。 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。 * 如果存在就已找到,就不用在找了。 * * */ public class StringTest_3 { /** * @param args */ public static void main(String[] args) { String s1 = "qwerabcdtyuiop"; String s2 = "xcabcdvbn"; String s = getMaxSubstring(s2, s1); System.out.println("s=" + s); } /** * 获取最大子串 * * @param s1 * @param s2 * @return */ public static String getMaxSubstring(String s1, String s2) { String max = null,min = null; max = (s1.length()>s2.length())?s1:s2; min = max.equals(s1)?s2:s1; System.out.println("max="+max); System.out.println("min="+min); for (int i = 0; i < min.length(); i++) { for(int a = 0,b = min.length()-i; b != min.length()+1; a++,b++){ String sub = min.substring(a, b); // System.out.println(sub); if(max.contains(sub)) return sub; } } return null; } }
示例代码段4:需求模拟一个trim功能一致的方法。去除字符串两端的空白
package cn.itcast.p1.string.test; /* * 4,模拟一个trim功能一致的方法。去除字符串两端的空白 * 思路: * 1,定义两个变量。 * 一个变量作为从头开始判断字符串空格的角标。不断++。 * 一个变量作为从尾开始判断字符串空格的角标。不断--。 * 2,判断到不是空格为止,取头尾之间的字符串即可。 */ public class StringTest_4 { /** * @param args */ public static void main(String[] args) { String s = " ab c "; s = myTrim(s); System.out.println("-" + s + "-"); } public static String myTrim(String s) { int start = 0, end = s.length() - 1; while (start <= end && s.charAt(start) == ' ') { start++; } while (start <= end && s.charAt(end) == ' ') { end--; } return s.substring(start, end + 1); } }
相关推荐
String、StringBuffer和StringBuilder - `String`:不可变字符串,适合频繁比较字符串。 - `StringBuffer`:线程安全的可变字符串,适合多线程环境下的字符串操作。 - `StringBuilder`:非线程安全的可变字符串,...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...
7. **字符串处理**:详细解析String类,包括字符串的创建、操作和比较,以及StringBuilder和StringBuffer的使用。 8. **多线程**:介绍线程的概念,讲解如何创建和控制线程,以及同步机制,如synchronized关键字和...
### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...
综上所述,黑马程序员Java面试宝典2019最新版本为应聘者提供了一整套全面的Java面试知识点,详细解释了包括面向对象编程、Java基础语法、多态性、异常处理、常用API以及数据类型在内的多个重要领域。通过学习这些...
4. **字符串处理**:掌握String类的基本用法,包括字符串的创建、比较、拼接、查找、替换等操作,以及StringBuilder和StringBuffer类的使用。 5. **异常处理**:理解Java中的异常分类,如检查性异常和运行时异常,...
6. **字符串处理**:学习String类的常用方法,包括字符串拼接、查找、替换、分割等操作,以及StringBuilder和StringBuffer的使用。 7. **输入/输出流**:学习Java I/O流的概念,包括文件操作、字符流和字节流的使用...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...
1.2 String、StringBuffer和StringBuilder的区别: - String:由于String类的对象是用final修饰的char数组存储,且被声明为private和final,所以是不可变的。每次对String对象进行改变时,都会生成新的对象并改变...
本文主要参考黑马程序员的Java面试宝典上的内容 我们都知道,在Java中字符串可以用+连接,也可以使用StringBuilder或StringBuffer连接。 String str = abc+xyz; 那么这几种方式由什么区别呢。当然你可能会知道以下...
《JAVA面试宝典》是程序员在应聘时的重要参考资料,它由黑马程序员精心制作,涵盖了面试中经常遇到的技术问题和知识点,为求职者提供了系统的复习指南。这份宝典不仅包括Java基础知识点,还涉及了面向对象、JavaSE...
它们是通过`String`类或`StringBuilder`/`StringBuffer`类来创建和操作的。字符串对象可以通过字面量(如`"hello"`)或者构造函数(如`new String("hello")`)来创建。字符串在内存中的存储通常涉及常量池,字符串...
4. **String、StringBuilder、StringBuffer的区别**: - `String`是不可变的,`StringBuilder`和`StringBuffer`都是可变的字符串。 - `StringBuffer`对方法加了同步锁,适用于多线程环境;`StringBuilder`没有同步...
7. **字符串处理**:理解String类的特性,学习StringBuilder和StringBuffer的区别与使用。 8. **输入输出流**:介绍IO流的概念,学习文件读写,以及字符流和字节流的使用。 9. **集合框架**:了解ArrayList、...
- String是不可变的,而StringBuilder和StringBuffer是可变的字符串。 - 在循环体内,使用StringBuilder或StringBuffer比使用"+"进行字符串连接更高效。 以上这些知识点都是Java程序员在面试中常常遇到的问题,...
【描述】:“这份JAVA笔记详尽记录了黑马程序员线下课程的基础语言部分,涵盖了JAVA编程的核心概念和技术。” 【知识点详解】 1. **JAVA语言基础** - 变量与数据类型:JAVA支持基本数据类型(如int, double, char...
在"黑马程序员_毕向东_Java基础视频教程第06天-09-面向对象(单例设计模式).avi" 这个文件中,毕向东老师可能会详细讲解以下内容: 1. **字符串基础**: - 字符串对象的创建:通过`new String()`或字面量`"abc"`。 ...