学习笔记_JavaSE_13_StirngBuffer类、数组高级、Arrays工具类、自动拆装箱

1: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 offset,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):从start开始到end,用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:建议通过构造方法
String s = "hello";
//通过构造方法
StringBuffer sb = new StringBuffer(s); 
//通过append()方法
StringBuffer sb2 = new StringBuffer(); 
sb2.append(s);
StringBuffer -- String:建议通过toString()方法   不通过构造方法
StringBuffer buffer = new StringBuffer("java");
String str = new String(buffer);  构造方法
String str2 = buffer.toString();  toString()方法
B:字符串的拼接
// 用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:把字符串反转
// 用StringBuffer的reverse()功能
public static String myReverse2(String s) {
/* 通过append()方法    String -- StringBuffer
* StringBuffer sb = new StringBuffer(); 
sb.append(s);

//通过构造方法    String -- StringBuffer 
StringBuffer sb = new StringBuffer(s);     1

sb.reverse();  //反转                     2

return sb.toString();  返回的是String    3

*/


// 简易版   1,2,3步合为一步
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:判断一个字符串是否对称
// 一个一个的比较   
// 版本1
// 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 false
// }
// }
//
// return true; 最终如果没有进去,就return true;
// }

// 一个一个的比较   
// 版本2
public static boolean isSame(String s) {
boolean flag = true;//先定义一个boolean类型的flag


// 把字符串转成字符数组
char[] chs = s.toCharArray();


for (int start = 0, end = chs.length - 1; start <= end; start++, end--) {
if (chs[start] != chs[end]) {
flag = false;//一旦有问题了,flag的值就改了
break;
}
}


return flag;
}

//用字符串缓冲区的反转功能
public static boolean isSame2(String s) {
return new StringBuffer(s).reverse().toString().equals(s);
//new StringBuffer(s).reverse().toString()  表示反转后的字符串
}

(5)面试题
小细节:StringBuffer和StringBuilder,可以看成一样的,不过还是有区别:
StringBuffer: 同步的,数据安全,效率低。
StringBuilder: 不同步的,数据不安全,效率高。

A:String,StringBuffer,StringBuilder的区别?
首先回答,String和StringBuffer,StringBuilder的区别?
String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
再回答,StringBuffer(多线程)和StringBuilder(单线程)的区别?
StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高
注意:此处的安全指的是多线程的情况下。而我们常用的单线程的程序不会有问题的。所以,用的最多的是StringBuilder

B:StringBuffer和数组的区别?

(6)注意的问题:
String作为形式参数,特殊的引用类型   形式参数改变,String不变   因为String相当于常量,main方法里放的是常量值
StringBuffer作为形式参数。 形式参数,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  就进入循环; 
if(arr[mid] > value) { //value在左边
max = mid - 1;
}else if(arr[mid] < value) { //value在右边
min = mid + 1;
}

if(min > max) { //肯定找不到 别玩了
return -1;
}

mid = (min+max)/2;    重新计算   因为没找到,还得继续在这走啊
}

return mid;   //if arr[mid] == value  直接return mid;
}

(3)Arrays工具类
A:是针对数组进行操作的工具类。包括排序和查找等功能。
B:要掌握的方法(自己补齐方法)
把数组转成字符串:public static String toString(int[] a) 把数组转成字符串  可对任意数据类型进行操作 我以int举例

排序:public static void sort(int[] a) 对数组进行(升序)排序      可对任意数据类型进行操作 我以int举例

二分查找:public static int binarySearch(int[] a,int key) 二分查找

(4)Arrays工具类的源码解析


(5)把字符串中的字符,进行排序
举例:
"edacbgf"
得到结果"abcdefg"


3:Integer (掌握)  int对应的包装类类型
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型,提供了对应的包装类类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");    注意:这里的字符串,必须是由数字字符组成。

(3)String和int的相互转换
A:String -- int:
Integer.parseInt("100");
Integer这个类就记住这一个方法
类比:找到该类型对应的包装类,调用parseXxx()
String -- float:
Float.parseFloat(s)  Integer这个类就记住这一个方法
B:int -- String:
String.valueOf(100);


(4)其他的功能(了解)
进制转换  2-26进制
* 1常用的基本进制转换
* public static String toBinaryString(int i)   十进制到2进制
* public static String toOctalString(int i) 十进制到8进制
* public static String toHexString(int i) 十进制到16进制

* 2十进制到其他进制
* public static String toString(int i,int radix)  radix指多少进制
* 由这个我们也看到了进制的范围:2-36
* 为什么呢? 0,...9,a...z

* 3其他进制到十进制
* public static int parseInt(String s,int radix)
(5)JDK5的新特性
自动装箱 基本类型--引用类型
自动拆箱 引用类型--基本类型

把下面的这个代码,理解即可:
Integer i = 100;
i += 200;

(6)面试题
-128到127之间的数据缓冲池问题


4:Character  (了解)     char对应的包装类类型
(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)案例:
统计 字符串中大写,小写及数字字符出现的次数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值