2020-08-08
我的Java之旅-----笨鸟
StringBuffer
- 线程安全的可变字符序列,效率低 提供了一些方法改变字符序列
- StringBuffer -->String
- 1 通过StringBuffer的对象调用StringBuffer的toString()方法
- 2 new String(StringBuffer)
- 3 String.valueOf(Object);
//测试StringBuffer的append()方法
public static void testAppend() {
//append()返回的是StringBuffer对象得一个引用
StringBuffer sb1 = new StringBuffer("java");
//再Java后面添加 1
StringBuffer sb2 = sb1.append(1);
System.out.println(sb2);//结果:java1
//在java1后添加big
StringBuffer sb3 = sb1.append("big");
StringBuffer append = sb2.append("big");
System.out.println(sb3);//结果;java1big
System.out.println(append);//结果:java1big
//在java1big后面添加true
StringBuffer sb4 = sb1.append(true);
StringBuffer append1 = sb2.append(true);
StringBuffer append2 = sb2.append(true);
System.out.println(append1);//结果:java1bigtrue
System.out.println(append2);//结果:java1bigtrue
System.out.println(sb4);//结果:java1bigtrue
//将输出结果的语句换一下顺序会有不一样的结果,试试吧
}
//===============================================================
//测试StringBuffer的insert()方法
public static void testInsert() {
StringBuffer sbf = new StringBuffer("java");
System.out.println(sbf);//结果:java
sbf.insert(2, 1.1);
//结果:ja1.1va,字符串的下标从0开始 在下标为2的字符前面插入值 1.1
System.out.println(sbf);
}
//===============================================================
//测试StringBuffer的delete()方法
public static void testDelete() {
StringBuffer sbf = new StringBuffer("java");
//delete([start,end)) "[" 包含 , ")" 不包含
//sbf.delete(1, 3);
//System.out.println(sbf);//结果:ja j, , , a 删除了 a v
sbf.deleteCharAt(1);
System.out.println(sbf);//结果:jva
}
//===============================================================
//测试StringBuffer的set()方法
public static void testSet() {
StringBuffer sbf = new StringBuffer("java");
sbf.setCharAt(1, 'A');
System.out.println(sbf);//结果:jAva
}
public static void main(String[] args) {
//testInsert();
//testAppend();
//testDelete();
// testSet();
testPackageType();
}
StringBulider
- 不保证线程安全的可变字符序列,与StringBuffer的API一致,效率高.
包装类
包装类主要指 将8种基本数据类型包装成对应的类.

- 大多数情况,包装类的主要作用是用于 基本数据类型与字符串的相互装换.
//测试包装类
public static void testPackageType() {
System.out.println(Integer.MAX_VALUE);//结果:2147483647
//装箱
Integer i1 = new Integer(111);
System.out.println(i1);//结果:111
Integer i2 = new Integer("222");//只能是数字形式的字符串
System.out.println(i2);//结果:222
int i3 = Integer.parseInt("123");//只能将数字形式的字符串转换成integer形式的对象
System.out.println(i3);//结果:123
/*
* 8中基本数据类型中除了Character 以外都有parseXxx(String s)
* 将字符串转换为对应的基本数据类型
*/
//自动装箱:可以直接将基本数据类型赋值给对应的包装类
Integer i5 = 111;
//拆箱:可以直接将包装类对象转换为基本数据类型
int i6 = i5;
}
/*
* 返回字符不重复的字符串方法1
*/
public static void m(String str){
//
int temp[] = new int[128];
//遍历字符串
for(int i = 0;i<str.length();i++) {
//利用charAt()获得字符串的每一个字符 传进temp[] temp[] 会将字符转换成ASCII值
//ASCII最大的值为127 所以不会溢出 ,并将该下标处的值赋为 1 ,如果有重复的就+1,直到便利结束
temp[str.charAt(i)]++;
//System.out.println(Arrays.toString(temp));
//System.out.println(str.charAt(i)+"==");
}
for(int i = 0;i<str.length();i++) {
//判断temp[str.charAt(i)]处的值是否大于0,如果大于0 代表该处有值 且该值可以为1,2,3
if(temp[str.charAt(i)]>0) {
//输出str.charAt(i),就是该字符
System.out.println(str.charAt(i));
temp[str.charAt(i)] = 0;
}
}
}
/*
* 返回字符不重复的字符串方法2
*/
private static String sString(String str) {
//新建一个空字符串用来存储去重以后的字符串
String s = "";
//遍历需要去重的字符串
for(int i = 0;i < str.length();) {
//将字符拼接到s
s += str.charAt(i);
//将字符拼接到s以后 将string中的所有和该字符相等的都替换成""
str = str.replaceAll(String.valueOf(str.charAt(i)), "");
}
return s;
//去重原理 :创建一个空字符串用来拼接单个字符,遍历字符串 ,先将单个字符拼接到 s
//再将 str 中的所有和该字符一样的都替换成空字符,经过多次循环 来达到去除重复字符
}
public static void main(String[] args) {
String str = "adgfasdaf";
//m(str);
sString(str);
}
public class Test {
/*
* 返回字符不重复的字符串方法3
* 作业六 设计方法: 实现 输入一个字符串,将字符串中的重复的字符去除后 再返回. m1(“javabigdata”) return “javbigdt”
*/
public static void main(String[] args) {
String arraySet = arraySet("tjavavbibgddata".toCharArray()); System.out.println(arraySet);
}
private static String arraySet(char[] oldArr) {
// 创建临时数组用于存放找到的不重复的元素
char[] tempArr = new char[oldArr.length];
// 为了计算将来新数组的长度
int length = 0;
// 为了得到原数组中的每个元素
for (int i = 0; i < oldArr.length; i++) {
// 判断是否重复的标准: false是不重复 true是重复
boolean isRepeat = false;
// 为了得到原数组中的下一个元素
for(int j = i+1;j < oldArr.length;j++) {
// 当前元素与后面的元素比较相等
if(oldArr[i] == oldArr[j]) {
isRepeat = true;
break;
}
}
// 如果不重复
if(!isRepeat) {
// 将不重复的元素放在临时数组中
tempArr[length] = oldArr[i];
// 计数:存储了多少个不重复的元素
length++;
}
}
// 再创建新数组
char[] newArr = new char[length];
// 将临时数组的元素放入新数组
for(int i = 0;i < newArr.length;i++) {
newArr[i] = tempArr[i];
}
// 以字符数组 创建出字符串对象
return new String(newArr);
}
}
最后是自己想出来的 ,比较麻烦
296

被折叠的 条评论
为什么被折叠?



