黑马程序员——Java基础——集合(二)

原创 2015年11月18日 17:56:23
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


字符串缓冲区:

package cn.fu._03stringbuffer;
/**
 * StringBuffer
 * 字符串缓冲区,用于存储数据的容器
 * 
 * 特点:
 * 1.长度是可变的.
 * 2.可以吃存储不同类型的数据.
 * 3.最终要转成字符串进行使用.
 * 
 * P.S.
 * StringBuffer的字符串缓冲区初始容量为16个字符,其实质还是数组.
 * 
 * 功能
 * 1.添加
 * StringBuffer append(date);
 * StringBuffer insert(index,data);
 * 
 * 2.删除
 * StringBuffer delete(int start,int end);包含头,不包含尾
 * StringBuffer deleteCharAt(int index):删除指定的元素.
 */

public class StringBufferDemo1 {
	public static void main(String[] args) {
		bufferMethodDemo();
	}
	public static void bufferMethodDemo(){
		//创建缓冲区对象
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2 = sb1.append(4);
		//先在sb1在缓冲区添加4,然后将sb2引用变量指向了最终生成的字符串对象,故两者指向同一个对象
		System.out.println(sb1);//4
		System.out.println(sb2);//4
		System.out.println(sb1==sb2);//true
		
		System.out.println(sb1.append(5));//45
		System.out.println(sb1.append(6).append(7));//4567
		System.out.println("-------------------------------");
		StringBuffer sb = new StringBuffer();
		sb.append(2).append(4);
		sb.insert(1, "haha");//在1索引插入haha
		System.out.println(sb.toString());//2haha4
		System.out.println("===============================");
		StringBuffer ssb = new StringBuffer("laskjdlasj");
		ssb.delete(1, 3);//删除sk
		System.out.println(ssb);//lkjdlasj
		ssb.delete(0, ssb.length());//清空缓冲区
		System.out.println(ssb);
		
	}
}

输出结果:

4
4
true
45
4567
-------------------------------
2haha4
===============================
lkjdlasj

package cn.fu._03stringbuffer;
/**
 * 3.查找
 * char charAt(int index);根据索引查找字符
 * int indexOf(String str);根据字符串查找索引
 * int lastindexOf(String str);从末尾查找字符的索引
 * 
 * 4.修改
 * StringBuffer replace(int start,int end,String str);将start~end替换为str
 * void setCharAt(int index,char ch);将index位置的字符替换为ch
 * 
 * 5.其他方法
 * void setLength(int newlength);设置字符序列的长度
 * public StringBuffer reverse();将字符序列用其反转形式取代
 */

public class StringBufferDemo2 {
	public static void main(String[] args) {
		StringBuffer sb1 = new StringBuffer("abcd");
		System.out.println(sb1.charAt(1));//b
		System.out.println(sb1.indexOf("bc"));//1
		System.out.println(sb1.lastIndexOf("a"));//0
		sb1.replace(1,2,"nba");//在1~2索引的字符替换为nba
		System.out.println(sb1);//anbacd
		sb1.setCharAt(2,'q');//将2索引的字符替换为q
		System.out.println(sb1);//anqacd
		System.out.println("=========================");
		method();
	}
	public static void method(){
		StringBuffer sb2 = new StringBuffer("1234");
		
		sb2.setLength(2);
		System.out.println(sb2);//12
		System.out.println(sb2.length());//2
		
		sb2.setLength(10);
		System.out.println(sb2);//12          
		System.out.println(sb2.length());//10
		System.out.println(sb2.reverse());//       21
		System.out.println('\u0000');// 
		/*
		 * P.S.
		 * 1.使用setLength设置StringBuffer中字符序列的长度.
		 * 如果小于已有字符序列的长度,相当于清除缓冲区中的一部分内容.
		 * 如果大于已有字符序列的长度,相当于扩充缓冲区,扩充部分用空字符'\ u0000'填充.
		 * 2.当创建的StringBuffer内容长度大于16,将会新创建一个新数组,长度比旧数组长,
		 * 然后将数组内容拷贝到新数组,超出旧数组长度的内容将放在新数组的内容的后面,也可以
		 * 通过StringBuffer(int capacity);构造函数自己设置StringBuffer缓冲区长度.
		 */
	}
}

输出结果:

b
1
0
anbacd
anqacd
=========================
12
2
12


StringBulider:

package cn.fu._04stringbuilder;
/**
 * StringBulider
 * JDK1.5后出现,功能和StringBuffer一模一样
 * 
 * 不同的是:
 * StringBuffer是线程同步的,通常用于多线程.
 * StringBuilder是线程不同步,通常用于单线程,它的出现能够提高程序效率.
 * 故StringBuilder多用于多个线程是不安全的,如果需要这样的同步,建议用StringBuffer.
 */
/*
 *P.S.JDK升级的目的:
 *1.简化书写;
 *2.提高效率;
 *3.增加安全性. 
 */
//示例:将一个int素组变成字符串
public class StringBuilderDemo1 {
	public static void main(String[] args) {
		int[] arr = {3,1,5,4,8};
		String s = arrayToString(arr);
		System.out.println(s);
	}

	private static String arrayToString(int[] arr) {
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		for (int i = 0; i < arr.length; i++) {
			if(i==arr.length-1){
				sb.append(arr[i]).append("]");
			}else{
				sb.append(arr[i]).append(",");
			}
		}
		return sb.toString();
	}

}

输出结果:

[3,1,5,4,8]


基本数据类型int包装类Integer

package cn.fu._05Integer;
/**
 * 常用对象:
 * 基本数据类型包装类
 * 为了方便操作基本数据类型,将其封装成了对象,在对象中定义了书写和行为丰富了该数据的操作.
 * 用于描述该对象的类就称为基本数据类型的包装类.
 * byte    Byte
 * short   Short
 * int     Integer
 * long    Long
 * float   Float
 * double  Double
 * char    Character
 * boolean Boolean
 * 该包装对象主要用于基本类型和字符串之间的转换
 * 基本类--->字符串
 * 1.基本类型的数值+""
 * 2.用String类中的静态方法valueOf(基本类型数值);
 * 
 * 字符串--->基本类型
 * 1.使用包装类中的静态方法xxx parseXxx("xxx");
 * int parseInt(String str);
 * long parseLong(String str);
 * boolean ParseBoolean(String str);
 * 只有character没有parse方法.(但是有toCharArray(),charAt())
 * 2.如果字符串被Intege进行对象的封装,可以使用另一个非静态的方法,intValue.
 * 将一个Integer对象转换成基本类型数据.
 * 3.用Integer的静态方法valueOf(String s)
 * 
 * 整数具备不同的进制体现.
 * 十进制--->其他进制方法:
 * String toBinaryString(int i);
 * String toOctalString(int i);
 * String toHexString(int i);
 * String to String(int i,int radix);
 * 
 * 其他进制--->十进制方法:
 * int parseInt(String s, int radix);
 */

public class IntegerDemo {
	public static void main(String[] args) {
		//整型最大值
		System.out.println(Integer.MAX_VALUE);//2147483647
		//十进制转换成二进制
		System.out.println(Integer.toBinaryString(6));
		Integer i = new Integer(5);//110
		System.out.println(Integer.parseInt("123")+i);//128
		if(Boolean.parseBoolean("true")){
			System.out.println("true");//true
		}
		Integer i2 = new Integer("123");
		System.out.println(i2.intValue());//123
		System.out.println("===========================");
		//十进制转换其他进制
		System.out.println(Integer.toBinaryString(17));//10001
		System.out.println(Integer.toOctalString(17));//21
		System.out.println(Integer.toHexString(17));//11
		System.out.println(Integer.toString(17, 4));//101
		System.out.println("===========================");
		//其他进制转换为十进制
		System.out.println(Integer.parseInt("10",2));//2 (前面的参数表示数组大小,后面的参数表示前面的参数的进制)
		System.out.println(Integer.parseInt("aba",16));//2746
	}
}

输出结果:

2147483647
110
128
true
123
===========================
10001
21
11
101
===========================
2
2746

package cn.fu._05Integer;
/**
 * 需求:对一个字符串中的数值进行从小到大的排序。
 * "20 78 9 -7 88 36 29"
 * 
 * 分析:
 * 1.将字符串切割为字符数组
 * 2.将字符数组转行为Int数组
 * 3.对Int数组进行排序
 * 4.将Int数组转换为StringBuilder对象
 * 5.使用toString方法返回排序后的新字符串
 */

public class IntegerDemo2 {
	public static void main(String[] args) {
		String s = "20 78 9 -7 88 36 29";
		System.out.println(s);
		//1.将字符串切割为字符数组
		String[] stringArray = s.split(" +");
		//2.将字符数组转行为Int数组
		int[] intArray = new int[stringArray.length];//建立相同长度的int数组
		for (int i = 0; i < intArray.length; i++) {
			intArray[i]=Integer.parseInt(stringArray[i]);
		}
		//3.对Int数组进行排序
		int temp=0;
		for (int i = 0; i < intArray.length-1; i++) {
			for (int j = i+1; j < intArray.length; j++) {
				if(intArray[i]>intArray[j]){
					temp = intArray[i];
					intArray[i] = intArray[j];
					intArray[j] = temp;
				}
			}
		}
		//4.将Int数组转换为StringBuilder对象
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < intArray.length; i++) {
			sb.append(intArray[i]+" ");
		}
		//5.使用toString方法返回排序后的新字符串
		String ss = sb.toString();
		System.out.println(ss);					
	}	
}
输出结果:

20 78 9 -7 88 36 29
-7 9 20 29 36 78 88 


黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1371

黑马程序员——Java基础---练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础---练习题 1.写出程序结果class Demo { public stat...
  • liu007004
  • liu007004
  • 2015年01月19日 16:35
  • 660

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1521

传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁。           void unlock():释放锁。 ...
  • juliantem
  • juliantem
  • 2016年04月15日 00:40
  • 4934

黑马程序员----0704期java基础班心得

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员----0704期java基础班心得            对于任何一个刚接触ja...
  • DreamStartDemo
  • DreamStartDemo
  • 2015年07月28日 12:49
  • 388

黑马程序员_java多线程的一些总结(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、    进程和线程 1、   进程和线程的关系。 一般来说,我们运行一个应用程序的,就启动...
  • u011449569
  • u011449569
  • 2015年10月29日 00:23
  • 285

黑马程序员_HTML基础

a标签
  • u013168363
  • u013168363
  • 2013年12月29日 01:14
  • 445

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1537

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2404

关于我在黑马程序员培训毕业后的亲身体验

首先申明:我本人已经于2016年5月份在广州传智播客java培训完毕业,和黑马程序员官网没有任何的利益往来,也没有人出钱给我帮他们做软文推广,这是我在黑马程序员的亲身体验,不存在虚构。...
  • wjycgl
  • wjycgl
  • 2017年04月20日 15:27
  • 1645
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——Java基础——集合(二)
举报原因:
原因补充:

(最多只允许输入30个字)