一:StringBuffer(掌握)

(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了一个字符串缓冲区类。StringBuffer供我们使用。
(2)StringBuffer的构造方法A:StringBuffer()B:StringBuffer(int size)C:StringBuffer(String str)
(3)StringBuffer的常见功能(自己补齐方法的声明和方法的解释)A:添加功能public StringBuffer append(String str)public StringBuffer insert(int oddset,String str)B:删除功能public StringBuffer deleteCharAt(int index)public StringBuffer delete(int start,int end)C:替换功能public StringBuffer replace(int start,int end,String str)D:反转功能public StringBuffer reverse()          E:截取功能(注意这个返回值:返回值类型是String类型,本身没有发生改变)public String substring(int start)public String substring(int start,int end)
(4)StringBuffer的练习(做一遍)A:String和StringBuffer相互转换String -- StringBuffer构造方法:StringBuffer sb = new StringBuffer(s);StringBuffer -- StringtoString()方法:String str2 = buffer.toString();B:字符串的拼接
public class StringBufferTest2 {public static void main(String[] args) {// 定义一个数组int[] arr = { 44, 33, 55, 11, 22 };// 定义功能// 方式1:用String做拼接的方式String s1 = arrayToString(arr);System.out.println("s1:" + s1);// 方式2:用StringBuffer做拼接的方式String s2 = arrayToString2(arr);System.out.println("s2:" + s2);}// 用StringBuffer做拼接的方式public static String arrayToString2(int[] arr) {StringBuffer sb = new StringBuffer();sb.append("[");for (int x = 0; x < arr.length; x++) {if (x == arr.length - 1) {sb.append(arr[x]);} else {sb.append(arr[x]).append(", ");}}sb.append("]");return sb.toString();}// 用String做拼接的方式public static String arrayToString(int[] arr) {String s = "";s += "[";for (int x = 0; x < arr.length; x++) {if (x == arr.length - 1) {s += arr[x];} else {s += arr[x];s += ", ";}}s += "]";return s;}
}
 C:把字符串反转
public class StringBufferTest3 {public static void main(String[] args) {// 键盘录入数据Scanner sc = new Scanner(System.in);System.out.println("请输入数据:");String s = sc.nextLine();// 方式1:用String做拼接String s1 = myReverse(s);System.out.println("s1:" + s1);// 方式2:用StringBuffer的reverse()功能String s2 = myReverse2(s);System.out.println("s2:" + s2);}// 用StringBuffer的reverse()功能public static String myReverse2(String s) {// StringBuffer sb = new StringBuffer();// sb.append(s);// StringBuffer sb = new StringBuffer(s);// sb.reverse();// return sb.toString();// 简易版return new StringBuffer(s).reverse().toString();}// 用String做拼接public static String myReverse(String s) {String result = "";char[] chs = s.toCharArray();for (int x = chs.length - 1; x >= 0; x--) {// char ch = chs[x];// result += ch;result += chs[x];}return result;}
}
 D:判断一个字符串是否对称
/** 判断一个字符串是否是对称字符串* 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串* * 分析:*         判断一个字符串是否是对称的字符串,我只需要把*          第一个和最后一个比较*             第二个和倒数第二个比较*            ...*        比较的次数是长度除以2。*/
public class StringBufferTest4 {public static void main(String[] args) {// 创建键盘录入对象Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String s = sc.nextLine();// 一个一个的比较boolean b = isSame(s);System.out.println("b:" + b);//用字符串缓冲区的反转功能boolean b2 = isSame2(s);System.out.println("b2:"+b2);}public static boolean isSame2(String s) {return new StringBuffer(s).reverse().toString().equals(s);}// public static boolean isSame(String s) {// // 把字符串转成字符数组// char[] chs = s.toCharArray();//// for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {// if (chs[start] != chs[end]) {// return false;// }// }//// return true;// }public static boolean isSame(String s) {boolean flag = true;// 把字符串转成字符数组char[] chs = s.toCharArray();for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {if (chs[start] != chs[end]) {flag = false;break;}}return flag;}
}
(5)面试题小细节:StringBuffer:同步的,数据安全,效率低。StringBuilder:不同步的,数据不安全,效率高。A:String,StringBuffer,StringBuilder的区别B:StringBuffer和数组的区别?
(6)注意的问题:String作为形式参数,StringBuffer作为形式参数。

2:数组高级以及Arrays(掌握)
(1)排序
A:冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

public static void bubbleSort(int[] arr) {for(int x=0; x<arr.length-1; x++) {for(int y=0; y<arr.length-1-x; y++) {if(arr[y] > arr[y+1]) {int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}
}
 B:选择排序把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。
public static void selectSort(int[] arr) {for(int x=0; x<arr.length-1; x++) {for(int y=x+1; y<arr.length; y++) {if(arr[y] < arr[x]) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}}}
}
(2)查找A:基本查找针对数组无序的情况public static int getIndex(int[] arr,int value) {int index = -1;for(int x=0; x<arr.length; x++) {if(arr[x] == value) {index = x;break;}}return index;}B:二分查找(折半查找)针对数组有序的情况(千万不要先排序,在查找)public static int binarySearch(int[] arr,int value) {int min = 0;int max = arr.length-1;int mid = (min+max)/2;while(arr[mid] != value) {if(arr[mid] > value) {max = mid - 1;}else if(arr[mid] < value) {min = mid + 1;}if(min > max) {return -1;}mid = (min+max)/2;}return mid;}
(3)Arrays工具类A:是针对数组进行操作的工具类。包括排序和查找等功能。B:要掌握的方法把数组转成字符串:public static String toString(int[] a)排序:public static void sort(int[] a)二分查找:public static int binarySearch(int[] a,int key)
(4)Arrays工具类的源码解析
(5)把字符串中的字符进行排序举例:"edacbgf"得到结果"abcdefg"

3:Integer(掌握)

(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型byte      Byteshort       Shortint            Integerlong         Longfloat           Floatdouble     Doublechar          Characterboolean    Boolean
(2)Integer的构造方法A:Integer i = new Integer(100);B:Integer i = new Integer("100");注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换A:String -- intInteger.parseInt("100");B:int -- StringString.valueOf(100);
(4)其他的功能(了解)进制转换
(5)JDK5的新特性自动装箱 基本类型--引用类型自动拆箱  引用类型--基本类型把下面的这个代码理解即可:Integer i = 100;i += 200;
(6)面试题-128到127之间的数据缓冲池问题:通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间

4:Character(了解)

(1)Character构造方法 Character ch = new Character('a');
(2)要掌握的方法:A:判断给定的字符是否是大写:public static boolean isUpperCase(char ch)B:判断给定的字符是否是小写:public static boolean isLowerCase(char ch)C:判断给定的字符是否是数字字符:public static boolean isDigit(char ch)D:把给定的字符转成大写:public static char toUpperCase(char ch)E:把给定的字符转成小写:public static char toLowerCase(char ch)
(3)案例:统计字符串中大写,小写及数字字符出现的次数
import java.util.Scanner;/** * 分析:*       A:定义三个统计变量。*            int bigCount=0;*           int smalCount=0;*          int numberCount=0;*        B:键盘录入一个字符串。*       C:把字符串转换为字符数组。*         D:遍历字符数组获取到每一个字符*       E:判断该字符是*           大写  bigCount++;*          小写  smalCount++;*             数字  numberCount++;*       F:输出结果即可*/
public class CharacterTest {public static void main(String[] args) {// 定义三个统计变量int bigCount = 0;int smallCount = 0;int numberCount = 0;//键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String line = sc.nextLine();// 把字符串转换成字符数组char[] chs = line.toCharArray();// 遍历字符数组获取到每一个字符for(int x =0;x<chs.length;x++) {char ch = chs[x];// 判断该字符是 大写 bigCount++if(Character.isUpperCase(ch)) {bigCount++;}else if(Character.isLowerCase(ch)) {smallCount++;}else if(Character.isDigit(ch)) {numberCount++;}}System.out.println("大写字母:" + bigCount + "个");System.out.println("小写字母:" + smallCount + "个");System.out.println("数字字符:" + numberCount + "个");}
}

JAVA自学-day13-StringBuffer类、数组高级以及Arrays、Integer类相关推荐

  1. 什么是类数组,怎么实现一个类数组

    #类数组顾名思义 类似数组 的什么什么东西.... 这里封装了一个方法 将dom层中的四个元素节点依次插入自定义的类数组temp中之后返回. 其实类数组就是定义了一个{} 空对象,里面添加length ...

  2. 数组、对象、类数组对象的不同以及类数组转数组方法总结

    一.数组.对象.类数组对象数据结构的异同 1.数组 一组有序的数据集合,其索引为从0开始且自然增长的整数,其元素值可以是任何js数据!并且包含一个名为length的属性,该属性表示数组元素的个数! v ...

  3. java对类数组进行排序_Java比较器类对数组进行排序

    小编典典 [-]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 [-] 这是使用Java 8的完整示例: import java.util.*; public class ...

  4. Java基础-第五章(数组高级)

    一.方法参数的值传递机制 Java方法的参数传递只有一种: 值传递,所谓值传递,就是将实际参数值的副本,传入方法内,而参数本身不会收到任何影响; main方法的数组参数 public class He ...

  5. java 类的高级特性_java程序-类的高级特性

    创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方 ...

  6. java inputstream类_Java高级[7]:DataInputStream相关类的使用

    将数据以格式化读出,并在显示器上显示出来: //将数据读出 DataInputStream in = new DataInputStream(new FileInputStream("ord ...

  7. java中的mod运算_Java源码中Integer类位运算分析

    在这里对源码中Integer的部分位运算方法做一个分析解读.同理,可以比较一下其他Number的子类,对位运算部分的设计和性能有一个理解. 在java中,Integer是int类型的包装类型,占4个字 ...

  8. System类、包装类、Math类、Random、Arrays工具类

    目录: 1.System类 2.包装类 3.Math类 4.Random类 5.Arrays 1.System类 (1)常用方法: 1.public static long currentTimeMi ...

  9. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法

    目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...

  10. JDK1.8源码(二)——java.lang.Integer 类

    上一篇博客我们介绍了 java.lang 包下的 Object 类,那么本篇博客接着介绍该包下的另一个类 Integer.在前面 浅谈 Integer 类 博客中我们主要介绍了 Integer 类 和 ...

最新文章

  1. Python之面向对象进阶
  2. 2017年流行的字体排版大全
  3. Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间
  4. Codeforces Round #481 (Div. 3)【完结】
  5. Cypress EZ-USB FX3 DMA模式下的串口通讯
  6. 积木报表对比帆软报表有什么区别?
  7. idea maven项目的移除添加
  8. 关于if嵌套性能的问题
  9. leetcode547 朋友圈
  10. 烽火戏诸侯暂排第四,第四届橙瓜网络文学奖入围20年十佳仙侠大神
  11. IDEA插件系列(88):Tab Shifter插件——选项卡移动工具
  12. 三、GTK-按钮(微调按钮、复选按钮、单选按钮)、快捷键、热键
  13. realityOS会是苹果的新操作系统吗?
  14. JDK的多版本安装 及 切换
  15. 基于OpenXR,Collabora推开源VI-SLAM AR/VR定位系统
  16. 窗口最小化后在任务栏上看不到
  17. 挤奶牛Crowded Cows 洛谷p3088
  18. 阅读Skeleton.css源码,改善睡眠质量(尽管它只有419行代码)
  19. STM32平台下官方DMP库6.12超详细移植教程
  20. 辟谣:关于南航计算机考研的谣言

热门文章

  1. ubuntu死机咋办_ubuntu16.04经常死机 ubuntu电脑经常死机如何解决
  2. DNN常见激活函数与其求导公式及来源
  3. 打开优盘显示要格式化怎么办?
  4. SHU OJ 420 购买装备(假装背包,其实贪心)
  5. 用Photoshop抠图
  6. JAVA版12306抢票工具
  7. unpack python_python数据处理之 ddt,@data, @unpack
  8. Android 的窗口管理系统 (View, Canvas, WindowManager)
  9. linux如何使用ntfs格式的优盘
  10. 微信小程序:选择图片、上传图片(应用:切换用户头像)及过程中遇到的问题