stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)
1.StringBuffer类的概述
* A:StringBuffer类概述
* 通过JDK提供的API,查看StringBuffer类的说明
* 1.线程安全的可变字符序列。
* 2.可将字符串缓冲区安全地用于多个线程。
* 3.StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
* 4.每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
* B:简述安全问题
* 线程安全效率低
* C:StringBuffer和String的区别
* String是一个不可变的字符序列。
* StringBuffer是一个可变的字符序列。
2.StringBuffer类的构造方法
* A:StringBuffer的构造方法:
* public StringBuffer():无参构造方法
* public StringBuffer(int capacity):指定容量(16)的字符串缓冲区对象
* public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
* B:StringBuffer的方法:
* public int capacity():返回当前容量。 理论值(16不掌握)
* public int length():返回长度(字符数)。 实际值
3.StringBuffer的添加功能和删除功能
* A:StringBuffer的添加功能
* public StringBuffer append(String str):
* 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
* public StringBuffer insert(int offset,String str):
* 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
* B:StringBuffer的删除功能
* public StringBuffer deleteCharAt(int index):
* 删除指定位置的字符,并返回本身
* public StringBuffer delete(int start,int end):
* 删除从指定位置开始指定位置结束的内容,并返回本身,包含头不包含尾。
4.StringBuffer的替换和反转功能
* A:StringBuffer的替换功能
* public StringBuffer replace(int start,int end,String str):
* 从start开始到end用str替换
* B:StringBuffer的反转功能
* public StringBuffer reverse():
* 将字符串反转
5.StringBuffer的截取功能及注意事项
* A:StringBuffer的截取功能
* public String substring(int start):
* 从指定位置截取到末尾
* public String substring(int start,int end):
* 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
* B:注意事项
* 注意:返回值类型不再是StringBuffer本身,而是String。
6.StringBuffer和String的相互转换
* A:String --> StringBuffer
* a:通过构造方法
* 1.StringBuffer sb = new StringBuffer("myworld");//创建对象,一创建就调用构造方法。
* b:通过append()方法
* 2.StringBuffer sb = new StringBuffer();
* sb.append("myworld");
* B:StringBuffer --> String
* a:通过构造方法
* 1. StringBuffer sb = new StringBuffer("wwwwh");
* String s = new String(sb);
* b:通过toString()方法
* 2. StringBuffer sb = new StringBuffer("wwwwh");
* String s = sb.toString();
* c:通过subString(0,length);
* 3. StringBuffer sb = new StringBuffer("wwwwh");
* String s = sb.substring(0,sb.length());
7.把数组转成字符串
* 需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
输出结果:
"[1, 2, 3]"
用StringBuffer的功能实现
public static void main(String[] args) {
int[] arr = {1,2,3};
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < arr.length; i++) {
if(i == 2){
sb.append(arr[i] + "]");
}else {
sb.append(arr[i] + ",");
}
}
System.out.println(sb);
}
8.字符串反转
需求:把字符串反转
举例:键盘录入"abc"
输出结果:"cba"
用StringBuffer的功能实现
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请从键盘输入一个字符串:");
String str = sc.nextLine();
StringBuffer sb = new StringBuffer(str);//利用构造把字符串对象转化成StringBuffer对象
str = sb.reverse().toString();//利用StringBuffer类中的反转功能,然后再转化成字符串
System.out.println(str);
}
9.StringBuffer和StringBuilder的区别
* A:StringBuilder的概述
* 通过查看API了解一下StringBuilder类
* 1.一个可变的字符序列。
* B:面试题
* String,StringBuffer,StringBuilder的区别?
* StringBuffer和StringBuilder的区别。
* StringBuffer是jdk1.0版本的,是线程安全的,效率低。
* StringBuilder是jdk1.5版本的,是线程不安全的,效率高。
* String和StringBuffer,StringBuilder的区别?
* String是一个不可变的字符序列。
* StringBuffer,StringBuilder是可变的字符序列。
10.String和StringBuffer分别作为参数传递
* String作为参数传递
* String不会改变原有对象的值,一旦初始化就不能被改变
* StringBuffer作为参数传递
* StringBuffer会改变原有对象的值。
11.数组高级冒泡排序原理案例
需求:
数组元素:{24, 69, 80, 57, 13}
请对数组元素进行排序。 冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
public static void main(String[] args) {
int[] arr = {24,69,80,57,13};
for (int i = 0; i < arr.length - 1; i++) { //外层循环控制的是找到最大的数为止
for (int j = 0; j < arr.length - 1 - i; j++) { //内层循环控制的是俩俩相比较的次数
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
数组高级选择排序原理
* 需求:
* 数组元素:{24, 69, 80, 57, 13}
* 请对数组元素进行排序。 * 选择排序
* 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
public static void main(String[] args) {
int[] arr = {66,55,44,33,22,11};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) { //j = i+1 的作用是:当获取到最小值后,就该从下一位进 行比较
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
12.Arrays类的概述和方法使用
* A:Arrays类概述
* 1.此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
* 2.除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。
* 针对数组进行操作的工具类。
* 提供了排序,查找等功能。
* B:成员方法
* public static String toString(int[] a) //返回指定数组内容的字符串表示形式。
* public static void sort(int[] a) //对int数组按数字升序进行排序
* public static int binarySearch(int[] a,int key) //使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
13.基本类型包装类的概述
* A:为什么会有基本类型包装类
* 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
* B:常用操作
* 常用的操作之一:用于基本数据类型与字符串之间的转换。
* C:基本类型和包装类的对应
*
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
14.Integer类的概述和构造方法
* A:Integer类概述
* 通过JDK提供的API,查看Integer类的说明
* 1.Integer 类在对象中包装了一个基本类型 int 的值。
* 2.该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,
* 3.还提供了处理 int 类型时非常有用的其他一些常量和方法
* B:构造方法
* 1.public Integer(int value) //构造一个新分配的 Integer 对象,它表示指定的 int 值。
* 2.public Integer(String s) //构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
15.String和int类型的相互转换
* A:int -- String
* 1:和""(空字符串)进行拼接
* int num = 100;
* String s = num + "";
* 2:public static String valueOf(int i) //String 类中的ValueOf()方法,可将任意类型的数据,转换成字符串
* int num = 100;
* String s = String.valueOf(num);
* 3:int -- Integer -- String(Integer类的toString方法())
* Integer i = new Integer(100);
* String s = i.ToString();
* 4:public static String toString(int i)(Integer类的静态方法)
* String s = Integer.ToString(100);
* B:String -- int
* 1:String -- Integer -- int
* public static int parseInt(String s)
* String s = "100";
* int i = Integer.parseInt(s);
16.JDK5的新特性自动装箱和拆箱
* A:JDK5的新特性
* 自动装箱:把基本类型转换为包装类类型
* 自动拆箱:把包装类类型转换为基本类型
* B:案例演示
* JDK5的新特性
* 1.自动装箱和拆箱
* 2.泛型
* 3.增强for循环
* 4.静态导入(导入的是方法)
* 5.可变参数(其实就是一个大小可变的数组)
* 6.互斥锁
* Integer ii = 100;//自动装箱
* ii += 200;//自动拆箱。
* C:注意事项
* 在使用时,Integer x = null;代码就会出现NullPointerException。
* 建议先判断是否为null,然后再使用。
stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)的更多相关文章
- JDK1.5新特性,基础类库篇,集合框架(Collections)
集合框架在JDK1.5中增强特性如下: 一. 新语言特性的增强 泛型(Generics)- 增加了集合框架在编译时段的元素类型检查,节省了遍历元素时类型转换代码量. For-Loop循环(Enhanc ...
- JDK1.6新特性,基础类库篇,集合框架(Collections)
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马). 集合框架增强如下: 1. 增加了如下新接口(Int ...
- JDK1.6新特性,基础类库篇,IO支持
1. JDK1.6中提供了java.io.Console类 JDK1.6中提供了java.io.Console 类专用来访问基于字符的控制台设备.你的程序如果要与Windows下的cmd或者Linux ...
- JDK1.5新特性,基础类库篇,线程类(Thread)增强了哪些
java.lang.Thread类增强特性如下: 线程优先级已经更改.java.lang.Thread.MIN_PRIORITY = 1 java.lang.Thread.NORM_PRIORITY ...
- JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法
一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...
- JDK1.5新特性,基础类库篇,XML增强
Document Object Model (DOM) Level 3 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.DO ...
- JDK1.5新特性,基础类库篇,System类
一. 背景 System.getenv(String)方法继续有效:增加了新的System.getenv()方法,返回保存环境变量的Map<String,String>. 同时增加了以纳秒 ...
- JDK1.6新特性,基础类库篇,Jar与Zip增强
1. API改变 增加了两个实现类 java.util.zip.DeflaterInputStream: 此类为解压缩 "deflate" 压缩格式的数据实现流过滤器.它还用作其他 ...
- JDK1.5新特性,基础类库篇,浅谈并发工具包(Concurrency Utilities)
java.util.concurrent, java.util.concurrent.atomic, 和 java.util.concurrent.locks 包提供了高性能的.可扩展的框架,保证开发 ...
随机推荐
- idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...
- polya burnside 专题
polya题目:uva 11077 Find the Permutationsuva 10294 Arif in DhakaLA 3641 Leonardo's Notebookuva 11077 F ...
- 批处理BAT替换与截取字符串的用法t1=%a:~3%是什么意思
在bat编写中,我们经常越到t1=%a:~3%之类的代码,这里简单介绍下用法,需要的朋友可以参考下: 一.替换用法 例 @echo off set a=belcome to CMD borld! ...
- Mysql 使用存储过程添加新字段
-- 1, 注意SQL 语句开始处不要空格 -- 2, 在使用 [--] 进行注释时,后面请加空格 USE `test`; -- lastUpdateTime drop procedure if ex ...
- ThinkPHP5.1入门
ThinkPHP5.1入门 ===================================Composer的官方网站:https://www.phpcomposer.com/========= ...
- hdu 3594 Cactus /uva 10510 仙人掌图判定
仙人掌图(有向):同时满足:1强连通:2任何边不在俩个环中. 个人理解:其实就是环之间相连,两两只有一个公共点,(其实可以缩块),那个公共点是割点.HDU数据弱,网上很多错误代码和解法也可以过. 个人 ...
- UVA 111
又被题意坑了... 输入的一串数字的含义是第i个数字是第a[i]个发生的.而不是编号为i的历史事件的实际发生顺序.所以第一步要做的是转换,将原始数据转换成编号为i的历史事件的实际发生顺序.然后按照实际 ...
- Java面试题总结之数据结构、算法和计算机基础(刘小牛和丝音的爱情故事1)
Java面试题总结之数据结构.算法和计算机基础(刘小牛和丝音的爱情故事1)mp.weixin.qq.com 全文字数: 1703 阅读时间: 大约6 分钟 刘小牛是一名Java程序员,由于天天9 ...
- XML Publisher Template Type - Microsoft Excel Patch
XML Publisher Template Type - Microsoft Excel Patch Oracle XML Publisher > Templates > Create ...
- keras模型总结
https://keras.io/zh/ https://keras.io/zh/models/about-keras-models/ 在 Keras 中有两类主要的模型:Sequential 顺序模 ...