2020-08-08

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);	
		} 
	}

最后是自己想出来的 ,比较麻烦

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值