黑马程序员_Java基础_String和StringBuffer类
来源:互联网 发布:mac移动硬盘装win7 编辑:程序博客网 时间:2024/05/16 08:07
------- android培训、java培训、期待与您交流! ----------
例子2:
String类常用API:
1.获取
1.1 字符串中的包含的字符数,也就是字符串的长度
int length():获取长度。
1.2 根据位子获取位子上某个字符。
char chatAt(int index):
1.3 根据字符获取该字符在子串中的位子
int indexOf(String str):返回的是str在字符串中第一次出现的位子
int indexOf(String str, int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置
int lastIndexOf(String str): 从字符串后面位置开始,获取str在字符串中出现的位置
2.判断
2.1 字符串中是否包含某一个字符串
boolean contains(String str):
特殊之处:indexOf(String str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中,
所以,也可以用于对指定判断是否包含。
if(str.indexOf("aaa") != -1)
而且该方法既可以判断,又可以获取出现位置。
2.2 判断字符串是否有内容
boolean isEmpty(): 原理就相当于判断字符串长度是否为0
2.3 判断字符串中是否以指定内容开头
boolean startsWith(str);
2.4 字符串是否以指定内容结尾
boolean endsWith(str);
2.5 判断字符串内容是否相同
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();
3.转换
3.1 将字符数组转换成字符串
构造函数: String(char[])
String(cha[], offset,count): 将字符数组中的一部分转成字符串
静态方法: static String copyValueOf(char[]);
static String copyValueOf(char[], int offset ,int count)
static String valueOf(char[])
3.2 将字符串转成字符数组
char[] toCharArray();
3.3 将字节数组转成字符串
String[byte[]]
String(byte[], offset, count):将自己数组中的一部分转成字符串
3.4 将字符串转换层字节数组
byte[] getBytes()
3.45 将基本数据类型转化成字符串
static String valueOf(int)
static String valueOf(double)
特殊:字符串和字节数组在转换过程中,是可以指定编码表的
4.替换
String replace(oldchar ,newchar)
将字符串中所有的oldchar替换成newchar 如果没有找到对应的oldchar,返回原来的字符串
5. 切割(非常实用)
String[] split(str);
6.子串
String substring(begin);
String substring(begin,end); *子串中不包含end下标中的字串
7. 转换、比较、去空格
7.1 将字符串转换成大小写
String toUpperCase() 转换成大写
String toLowerCase() 转换成小写
7.2去掉字符串两端的空格
String trim();
7.3对两个字符串进行自然顺序的比较
int compareTo(String)
返回值等于零:两个字符串相等
小于零: 传入参数大于字符串
大于零:传入参数小宇字符串
例子1:
例子1:
//字符串是一个特殊的对象public class StringDemo {public static void main(String[] args) {String s1 = "abc"; // s1是一个类型变量,“abc”是一个对象,一旦被初始化就不可被改变String s2 = new String("abc");String s3 = "abc";// s1和s2的区别// 第一句在内存中只有一个对象// 第二句s2在内存中有两个对象System.out.println(s1 == s2);System.out.println(s1.equals(s2));System.out.println(s1 == s3);// 结果:false// true}}
例子2:
public class StringDemo2 { public static void test7() { String s = " Hello word! "; print(s.toUpperCase()); // 转成大写 print(s.toLowerCase()); // 转换小写 print(s.trim()); // 去掉首尾空格 String s1 = "abc"; String s2 = "abb"; print(s1.compareTo(s2)); // 比较两个字符串 } public static void sub() { String a = "abcdef"; print(a.substring(2)); // 从指定位置开始到结尾,如果下标不存在,会出现字符串下标越界异常 print(a.substring(2, 4)); // 包含头,不包含尾, } public static void split() { String str = "tomcat,apache,java"; String[] arr = str.split(","); for (String a : arr) print(a); } public static void replace_1() { String str = "hello java"; String s1 = str.replace("java", "wrod"); print(s1); } public static void change() { char arr[] = { 'a', 'b', 'c', 'd', 'e' }; String str = new String(arr); print(str); char arr2[] = str.toCharArray(); for (int i = 0; i <= arr2.length; i++) print(arr2[i]); print(str); } /* * 文件名的判断 */ public static void is() { String str = "StringDemo.java"; // 判断文件名是否以String开头 print(str.startsWith("String")); // 判断文件是不是.java格式 print(str.endsWith(".java")); // 判断文件中时候含有Demo字符串内容 print(str.contains("Demo")); } /* * String的获取方法 */ public static void get() { String str = "abcdekakf"; // 获取字符串指定下标的字符 print(str.charAt(5)); // 当下标超出字符串的长度时,或抛出StringIndexOutOfBoundsException异常 print(str.length()); // 字符串长度 print(str.indexOf("dek")); // 获取指定字符所在位子的下标 当字符串中没有指定的字符时,输出-1 print(str.indexOf("a", 3)); // 从指定位子3开始进行查找指定字符下标 当字符串中没有指定的字符时,输出-1 print(str.lastIndexOf("a")); // 从字符串的后面进行开始查找指定字符的位子 } public static void main(String[] args) { test7(); // split(); // change(); // replace_1(); // is(); // get(); } // 打印输出方法 使用的哟 public static void print(Object obj) { System.out.println(obj); }}
例子3:
/*
/*
* 模拟String中 的strim方法,去掉字符串两边的空格
*/
public class MyStrimDemo { public static void main(String[] args) { String str = " hello word "; System.out.println(mytrim(str)); } 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); }}
例子4:
/*
练习:
1. 翻转字符串
2. 计算指定字符串出现次数
3. 获取两个字符串中最大相同子串,
*/
public class DIYString { public static void main(String[] args) { // String str = "0123456789"; // print(overturn(str)); // print(overturn(str, 0, 5)); // String str = "abeeeeeeeabkkkkkkkkab"; // print(getSubCount(str, "ab")); String s1 = "gegeasgHellogege"; String s2 = "aaaaHelloooo"; print(getMaxSub(s2, s1)); } // 3. 获取两个字符串中最大相同子串 public static String getMaxSub(String s1, String s2) { String max = ""; String min = ""; max = s1.length() > s2.length() ? s1 : s2; min = max == s1 ? s2 : s1; for (int i = 0; i < min.length(); i++) { for (int j = 0, x = min.length() - i; x != min.length() + 1; j++, x++) { String temp = min.substring(j, x); if (max.contains(temp)) return temp; } } return null; } // 2.计算指定字符串出现次数 这种方式消耗资源小 public static int getSubCount(String str, String key) { int index = 0; int count = 0; while ((index = str.indexOf(key)) != -1) { str = str.substring(index + key.length()); count++; } return count; } // 选择翻转 public static String overturn(String str, int start, int end) { char[] cha = str.toCharArray(); return new String(reversalArr(cha, start, end)); } // 全部字符串反转 public static String overturn(String str) { char[] cha = str.toCharArray(); return String.valueOf(reversalArr(cha, 0, cha.length - 1)); } // 翻转数组 public static char[] reversalArr(char[] arr, int start, int end) { for (int i = start, j = end; i <= j; i++, j--) { char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } return arr; } // 打印 public static void print(Object obj) { System.out.println(obj); }}
StringBuffer类常用API:
StringBuffer: 是一个容器,是字符串缓冲区,而且长度是可以改变的,可以操作多种数据类型
StringBuffer 是线程同步的(安全)
StringBuilder是线程不同步的,但效率高(开发建议使用)
JDK1.5版本之后出现StringBuilder
升级三个因素:
提高效率
简化书写
提高安全性
1. 存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置
2. 删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end.
StringBuffer deleteCharAt(index):删除指定位置的字符。
3. 获取
int indexOf(String str)
int lastIndexOf(String str)
int length()
String sustring(int start ,int end)
4. 修改
StringBuffet replace(int start,int end,String str) 替换,不包含end
void setCharAt(int index, char ch) 只替换指定位子的一个字符
5.翻转
StringBuffer reverse();
StringBuffer例子1:
StringBuffer例子1:
public class StringBufferDemo { /** * @param args */ public static void main(String[] args) { // add(); // delete(); // update(); reverse(); } // 翻转测试 public static void reverse() { StringBuffer buf = new StringBuffer("123456789"); buf.reverse(); print(buf.toString()); } public static void update() { StringBuffer buf = new StringBuffer("123456789"); buf.replace(1, 3, "**"); // 替换不包含end位置 print(buf.toString()); buf.setCharAt(8, '0'); print(buf.toString()); } public static void delete() { StringBuffer buf = new StringBuffer("123456789"); buf.delete(1, 3); // 当下标超出时,会抛出下标越界异常 print(buf.toString()); buf.deleteCharAt(0); // 删除第一个字符 print(buf.toString()); } public static void add() { StringBuffer buffer = new StringBuffer(); buffer.append("gege").append(false).append(123); print(buffer.toString()); buffer.insert(1, "**"); print(buffer.toString()); } // 打印 public static void print(Object obj) { System.out.println(obj); }}
0 0
- 黑马程序员_Java基础_String和StringBuffer类
- 黑马程序员_Java基础_String类
- 黑马程序员_Java基础_String类
- 黑马程序员_String类和StringBuffer类
- 黑马程序员_string类和StringBuffer类
- 黑马程序员_String类和StringBuffer
- 黑马程序员_String和StringBuffer
- 黑马程序员_String类-StringBuffer
- 黑马程序员_JAVA基础5_String
- 黑马程序员_java基础_String类和基本数据类型的包装类
- 黑马程序员_笔记十四_String和StringBuffer类
- 黑马程序员_String和StringBuffer总结
- 01_Java基础_String&StringBuffer
- 黑马程序员_java语言_String类
- 黑马程序员_java语言_String类
- 黑马程序员_String类 StringBuffer类
- 黑马程序员_java入门_String
- 黑马程序员_String-StringBuffer-StringBuilder
- El表达式运算符
- About Oracle Cluster Registry
- Cocos2d-x《雷电大战》(6) 智能敌机AI来袭--飞行路径算法设计与实现(下)
- #ifndef 与 #pragma once 的区别
- MLib-Optimization模块代码阅读[to be Continued]
- 黑马程序员_Java基础_String和StringBuffer类
- 用两个栈实现队列
- 语言编程需要注意的64位和32位机器的区别
- p123 29
- JAVA 观察者模式
- 如何查看ld(连接器)的搜索顺序及编译时需要打开的库
- Eclipse中创建Maven的Web项目并用jetty运行
- OpenCV+Qt:基于PCA主成分分析的人脸识别例程
- 内存结构 堆 栈 全局区 常量区 代码区