#第三日 笔记 7/21

/*
* 字符串缓冲区。StringBuffer
* 特点:
* 1,缓冲区就是用来缓存数据,意味着他是一个容器
* 2,该容器的长度是可变的
* 3,提供了对容器中的内容操作的方法
* (最多无外乎四种:增删查改)
* 4,该缓冲区可以添加多种类型的元素,基本类型和引用类型
* 5, 无论怎样改变容器中的数据,最终要使用结果,还是必须将其转换成字符串,使用toString()方法

* 6, sb.delete(0,length()); //清空缓冲区

* append(); 追加:在结尾处添加。
*/

//创建一个字符串缓冲区
// StringBuffer sb = new StringBuffer();


// //使用其添加方法,往缓冲区加入元素
// StringBuffer s1 = sb.append(45);
//
// System.out.println(sb == s1);//true  ,append返回的还是原来的缓冲区
//
// sb.append(45).append(true).append("abc");//连续添加,调用动作:方法调用链
//
// System.out.println(sb.toString());



//想要在任意位置添加怎么办    用的是insert()方法



/*
* StringBuilder含义:
* jdk1.5版本出现了一个新的字符串缓冲区
* 功能跟stringBuffer一模一样

* 区别
* StringBuffer是线程安全的
* StringBuilder是线程不安全的。为了提高效率,因为不用判断同步锁


* 对于容器而已,被多线程操作,容器容易出现问题。因为
* 一个线程负责添加,一个线程负责删除。
* 因为线程的随机性会出现安全问题

* 加锁,一个线程在执行容器中的内容时,其他线程不可以执行。
* 所以凡事可以操作容器数据的方法都需要明确这个锁。

* 每调用一次操作容器的方法(添加,删除,)都需要判断这个锁
* 对于多线程而言,安全了,但效率低
* 对于单线程而言,不涉及安全,但效率低。所以对于线程提供了StringBuilder.

* 实际开发时,建议使用StringBuilder,只有在多线程的时候,采用StringBuffer。

* 升级:
* 1,简化书写
* 2,提高效率
* 3,提高安全性
*/

/*
* StringBuffer和数组容器的区别?

* 1,数组容器是固定长度的
* StringBuffer是可变长度的。
* 2,数组容器一但初始化就明确了元素的类型
* StringBuffer可以存储任意类型。包括基本和引用。
* 3,数组存储完元素可以对元素进行操作(通过角标)。
* StringBuffer存储完了元素后,都会变成字符串,只能用字符串的方法来操作。

* int[] arr = {65,22,4,45};

* StringBuffer sb = new StringBuffer();
* sb.append(65);
* sb.append(22);
* sb.append(4);
* sb.append(45);

* 什么时候用StringBuffer或者StringBuilder?
* 数据个数是可以固定的,可是是不固定的,数据类型也可以是固定的,或者不固定的。
* 只要最终这些数据都需要变成字符串操作时,就可以是用字符串缓冲区
*/






/*
 * jdk1.5以后出现的新方式。
 * 
 * Collection 有一个父类接口。Iterable
 * 该接口封装了iterator方法,同时提供了一个新的语句。foreach语句。
 * 格式:
 * for(变量:Collection 集合 or数组){
 *
 * }
 * 
 * 通常结合泛型使用
 * 
 * 例子:
 * ArrayList<String> al = new ArrayList<String>();
 * 
 * al.add("abc1");
 * al.add("abc2");
 * al.add("abc3");
 * al.add("abc4");
 * al.add("abc5");
 * 
 * for(String s: al){
 * System.out.println(s);
 * }
 * 
 * 
 * 1, foreach循环简化了迭代器。迭代器还用吗?
 * 用,因为迭代过程中还可以removed()。
 * 一般只对基本遍历简化使用
 * 
 * 2,和传统for循环有什么区别?
 * foreach循环特点:必须明确遍历的目标。没有目标没用。目的只能是数组或者Collection集合
 * 如果要对数组中的元素进行特定操作时,建议船用For循环,通过角标完成。
 * 
 */


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值