版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1:StringBuffer(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类。StringBuffer供我们使用。(2)StringBuffer的构造方法A:StringBuffer()B:StringBuffer(int size)C:StringBuffer(String str)(3)StringBuffer的常见功能(自己补齐方法的声明和方法的解释)A:添加功能B:删除功能C:替换功能D:反转功能E:截取功能(注意这个返回值)(4)StringBuffer的练习(做一遍)A:String和StringBuf
2、fer相互转换String - StringBuffer构造方法StringBuffer - StringtoString()方法B:字符串的拼接C:把字符串反转D:判断一个字符串是否对称小细节:StringBuffer:同步的,数据安全,效率低。StringBuilder:不同步的,数据不安全,效率高。A:String,StringBuffer,StringBuilder的区别B:StringBuffer和数组的区别?(6)注意的问题:String作为形式参数,StringBuffer作为形式参数。2:数组高级以及Arrays(1)排序A:冒泡排序相邻元素两两比较,大的往后放,第一次完毕,最
3、大值出现在了最大索引处。同理,其他的元素就可以排好。public static void bubbleSort(int arr) for(int x=0; xarr.length-1; x+) for(int y=0; y arry+1) int temp = arry;arry = arry+1;arry+1 = temp;B:选择排序把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。public static void selectSort(int arr) for(int x=0; xarr.length-1; x+) for(i
4、nt y=x+1; yarr.length; y+) if(arry arrx) int temp = arrx;arrx = arry;arry = temp;(2)查找A:基本查找针对数组无序的情况public static int getIndex(int arr,int value) int index = -1;for(int x=0; x value) max = mid - 1;else if(arrmid max) return -1;mid = (min+max)/2;return mid;(3)Arrays工具类A:是针对数组进行操作的工具类。包括排序和查找等功能。B:要掌
5、握的方法(自己补齐方法)把数组转成字符串:排序:二分查找:(4)Arrays工具类的源码解析(5)把字符串中的字符进行排序举例:edacbgf得到结果abcdefg3:Integer(掌握)(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型byte ByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean(2)Integer的构造方法A:Integer i = new Integer(100);B:Integer i = new Integer(100
6、);注意:这里的字符串必须是由数字字符组成(3)String和int的相互转换A:String - intInteger.parseInt(100);B:int - StringString.valueOf(100);(4)其他的功能(了解)进制转换(5)JDK5的新特性自动装箱基本类型-引用类型自动拆箱引用类型-基本类型把下面的这个代码理解即可:Integer i = 100;i += 200;(6)面试题-128到127之间的数据缓冲池问题4:Character(了解)(1)Character构造方法Character ch = new Character(a);(2)要掌握的方法:(自己
7、补齐)A:判断给定的字符是否是大写B:判断给定的字符是否是小写C:判断给定的字符是否是数字字符D:把给定的字符转成大写E:把给定的字符转成小写(3)案例:统计字符串中大写,小写及数字字符出现的次数二份查找数组冒泡排序选择排序1 数组排序冒泡排序package cn.itcast_01;/* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */public class ArrayDemo public static void main(String args) / 定义一个数组int arr = 24, 69, 80, 57, 13 ;Syste
8、m.out.println(排序前:);printArray(arr);/*/ 第一次比较/ arr.length - 1是为了防止数据越界/ arr.length - 1 - 0是为了减少比较的次数for (int x = 0; x arrx + 1) int temp = arrx;arrx = arrx + 1;arrx + 1 = temp;System.out.println(第一次比较后:);printArray(arr);/ 第二次比较/ arr.length - 1是为了防止数据越界/ arr.length - 1 - 1是为了减少比较的次数for (int x = 0; x
9、arrx + 1) int temp = arrx;arrx = arrx + 1;arrx + 1 = temp;System.out.println(第二次比较后:);printArray(arr);/ 第三次比较/ arr.length - 1是为了防止数据越界/ arr.length - 1 - 2是为了减少比较的次数for (int x = 0; x arrx + 1) int temp = arrx;arrx = arrx + 1;arrx + 1 = temp;System.out.println(第三次比较后:);printArray(arr);/ 第四次比较/ arr.len
10、gth - 1是为了防止数据越界/ arr.length - 1 - 3是为了减少比较的次数for (int x = 0; x arrx + 1) int temp = arrx;arrx = arrx + 1;arrx + 1 = temp;System.out.println(第四次比较后:);printArray(arr);*/ 既然听懂了,那么上面的代码就是排序代码/ 而上面的代码重复度太高了,所以用循环改进/ for (int y = 0; y 4; y+) / for (int x = 0; x arrx + 1) / int temp = arrx;/ arrx = arrx +
11、 1;/ arrx + 1 = temp;/ / / /*/ 由于我们知道比较的次数是数组长度-1次,所以改进最终版程序for (int x = 0; x arr.length - 1; x+) for (int y = 0; y arry + 1) int temp = arry;arry = arry + 1;arry + 1 = temp;System.out.println(排序后:);printArray(arr);*/由于我可能有多个数组要排序,所以我要写成方法bubbleSort(arr);System.out.println(排序后:);printArray(arr);/冒泡排
12、序代码public static void bubbleSort(int arr)for (int x = 0; x arr.length - 1; x+) for (int y = 0; y arry + 1) int temp = arry;arry = arry + 1;arry + 1 = temp;/ 遍历功能public static void printArray(int arr) System.out.print();for (int x = 0; x arr.length; x+) if (x = arr.length - 1) System.out.print(arrx);
13、 else System.out.print(arrx + , );System.out.println();2 数组排序选择排序package cn.itcast_02;/* * 数组排序之选择排序: * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处 */public class ArrayDemo public static void main(String args) / 定义一个数组int arr = 24, 69, 80, 57, 13 ;System.out.println(排序前:);printArray(arr);/*/ 第一次int x
14、= 0;for (int y = x + 1; y arr.length; y+) if (arry arrx) int temp = arrx;arrx = arry;arry = temp;System.out.println(第一次比较后:);printArray(arr);/ 第二次x = 1;for (int y = x + 1; y arr.length; y+) if (arry arrx) int temp = arrx;arrx = arry;arry = temp;System.out.println(第二次比较后:);printArray(arr);/ 第三次x = 2;
15、for (int y = x + 1; y arr.length; y+) if (arry arrx) int temp = arrx;arrx = arry;arry = temp;System.out.println(第三次比较后:);printArray(arr);/ 第四次x = 3;for (int y = x + 1; y arr.length; y+) if (arry arrx) int temp = arrx;arrx = arry;arry = temp;System.out.println(第四次比较后:);printArray(arr);*/*/通过观察发现代码的重复
16、度太高,所以用循环改进for(int x=0; xarr.length-1; x+)for(int y=x+1; yarr.length; y+)if(arry arrx)int temp = arrx;arrx = arry; arry = temp;System.out.println(排序后:);printArray(arr);*/用方法改进selectSort(arr);System.out.println(排序后:);printArray(arr);public static void selectSort(int arr)for(int x=0; xarr.length-1; x+
17、)for(int y=x+1; yarr.length; y+)if(arry arrx)int temp = arrx;arrx = arry; arry = temp;/ 遍历功能public static void printArray(int arr) System.out.print();for (int x = 0; x arr.length; x+) if (x = arr.length - 1) System.out.print(arrx); else System.out.print(arrx + , );System.out.println();3 字符串中的数组排序pac
18、kage cn.itcast_03;/* * 把字符串中的字符进行排序。 * 举例:dacgebf * 结果:abcdefg * * 分析: * A:定义一个字符串 * B:把字符串转换为字符数组 * C:把字符数组进行排序 * D:把排序后的字符数组转成字符串 * E:输出最后的字符串 */public class ArrayTest public static void main(String args) / 定义一个字符串String s = dacgebf;/ 把字符串转换为字符数组char chs = s.toCharArray();/ 把字符数组进行排序bubbleSort(chs
19、);/把排序后的字符数组转成字符串String result = String.valueOf(chs);/输出最后的字符串System.out.println(result:+result);/ 冒泡排序public static void bubbleSort(char chs) for (int x = 0; x chs.length - 1; x+) for (int y = 0; y chsy + 1) char temp = chsy;chsy = chsy + 1;chsy + 1 = temp;4 二份查找package cn.itcast_04;/* * 查找: * 基本查找
20、:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序 * * 分析: * A:定义最大索引,最小索引 * B:计算出中间索引 * C:拿中间索引的值和要查找的值进行比较 * 相等:就返回当前的中间索引 * 不相等: * 大左边找 * 小右边找 * D:重新计算出中间索引 * 大左边找 * max = mid - 1; * 小右边找 * min = mid + 1; * E:回到B */public class ArrayDemo public static void main(String args) /定义一个数组int arr = 11,22,33,44,55,66,77;
21、/写功能实现int index = getIndex(arr, 33);System.out.println(index:+index);/假如这个元素不存在后有什么现象呢?index = getIndex(arr, 333);System.out.println(index:+index);/* * 两个明确: * 返回值类型:int * 参数列表:int arr,int value */public static int getIndex(int arr,int value)/定义最大索引,最小索引int max = arr.length -1;int min = 0;/计算出中间索引in
22、t mid = (max +min)/2;/拿中间索引的值和要查找的值进行比较while(arrmid != value)if(arrmidvalue)max = mid - 1;else if(arrmid max)return -1;mid = (max +min)/2;return mid;5 不能使用的二分排序package cn.itcast_04;/* * 注意:下面这种做法是有问题的。 * 因为数组本身是无序的,所以这种情况下的查找不能使用二分查找。 * 所以你先排序了,但是你排序的时候已经改变了我最原始的元素索引。 */public class ArrayDemo2 publi
23、c static void main(String args) / 定义数组int arr = 24, 69, 80, 57, 13 ;/ 先排序bubbleSort(arr);/ 后查找int index = getIndex(arr, 80);System.out.println(index: + index);/ 冒泡排序代码public static void bubbleSort(int arr) for (int x = 0; x arr.length - 1; x+) for (int y = 0; y arry + 1) int temp = arry;arry = arry
24、+ 1;arry + 1 = temp;/ 二分查找public static int getIndex(int arr, int value) / 定义最大索引,最小索引int max = arr.length - 1;int min = 0;/ 计算出中间索引int mid = (max + min) / 2;/ 拿中间索引的值和要查找的值进行比较while (arrmid != value) if (arrmid value) max = mid - 1; else if (arrmid max) return -1;mid = (max + min) / 2;return mid;6
25、针对数组进行的工具类package cn.itcast_05;import java.util.Arrays;/* * Arrays:针对数组进行操作的工具类。比如说排序和查找。 * 1:public static String toString(int a) 把数组转成字符串 * 2:public static void sort(int a) 对数组进行排序 * 3:public static int binarySearch(int a,int key) 二分查找 */public class ArraysDemo public static void main(String args)
26、 / 定义一个数组int arr = 24, 69, 80, 57, 13 ;/ public static String toString(int a) 把数组转成字符串System.out.println(排序前: + Arrays.toString(arr);/ public static void sort(int a) 对数组进行排序Arrays.sort(arr);System.out.println(排序后: + Arrays.toString(arr);/ 13, 24, 57, 69, 80/ public static int binarySearch(int a,int
27、key) 二分查找System.out.println(binarySearch: + Arrays.binarySearch(arr, 57);System.out.println(binarySearch: + Arrays.binarySearch(arr, 577);7 Arrays工具类public static String toString(int a)public static void sort(int a) 底层是快速排序,知道就可以了。有空看,有问题再问我public static int binarySearch(int a,int key)开发原则:只要是对象,我们就要判断该对象是否为null。int arr = 24, 69, 80, 57, 13 ;System.out.println(排序前: + Arrays.toString(arr);public static String toString(int a) /a - arr - 24, 69, 80, 57, 13 if (a =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文中考题目作用及答案
- 2026年南京中考历年试卷及答案
- 2026年工程管理部主任考试试题及答案
- 政治方向面试题目及答案
- AI赋能大提琴教学:弓法识别与情感分析实践【课件文档】
- 2026年完整性管理与员工满意度的关系
- 2026年了解Python在商业分析中的案例
- 精神疾病心理干预
- 自动化系统的安全性分析
- 江苏南京第六十六中学2026届高三四月第一次检测数学(二模)+答案
- 赤峰市2025届高三年级4•20模拟考试生物试卷(含答案)
- 学校在校家社协同育人教联体中的核心作用
- 老年陪诊项目创业计划
- 2025年中考语文复习阅读专题 名著勾连整合及综合训练 课件
- 乳腺医学影像学的进展和挑战
- 2025年村级工作计划范文
- 《交通事故车辆及财物损失价格鉴证评估技术规范》
- 《港口工程竣工验收规程》
- 文化古迹旅游规划与开发
- 《麻醉药品和精神药品管理条例》
- 2024年新人教版六年级数学下册《教材练习8练习八》教学课件
评论
0/150
提交评论