30.可变字符串
String是一个不可变字符串,因为底层是一个 final修饰的char数组 也就是说 当我们 str = "123"的时候 此时我们将其进行字符串拼接 str += "456"; 此时str就变成了 "123456".但是 底层其实是 先创建一个 "123"在创建一个 "456" 在创建一个 "123456" 赋值给 str。
可变字符串就是能在原有的基础上进行修改
可变字符串有两种: StringBuilder 和 StringBuffer
使用方式是一样的 但是有区别 StringBuffer 添加了多线程的同步函数的buff
平时使用 StringBuilder 多
31.·集合框架
1 .1数据结构:数据结构是计算机存储,组织数据的方式,数据结构是是指相互之间存在一种或多种特定关系的数据元素的集合
通常情况下,精心选择的数据可以带来更高的运行或者存储效率,数据结构往往同高效的检索算法和索引技术有关
数组:数组是一种聚合数据类型,,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本 的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组 可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维 等表现形式。
1.2集合框架:
在编程中,存取数据为了快捷方便,所以需要选择合适的数据结构进行存取。但是数据结构写起来比较麻 烦,不容易上手,所以java面向对象思想就帮我们写好了,例如 我们当年写的 MyArray 此时再复杂的 操作 都变成了面向对象的 对象创建以及函数调用。 此时java官方 根据 不同的数据结构 封装出来很多的类 这些类统称为 集合框架。
1.3ArrayList创建
是LIst接口实现类 特点 有序 可以为null 可以重复
1.4数据的添加和删除
LIst arr = new ArrayList ()
添加 arr.add(数据)
删除 arr.remove(数据)
修改 arr.set(下标索引,数据)
1.5LinkedList 使用
LinkdedList list = new LinkedList()
添加 list.add(数据)
删除list.remove(数据)
修改 list.set(索引,数据)
32.接口的定制规则
接口的作用:1.接口多态 2.定制规则,3.添加标记
2.1HashSet
特点:去重,可以为null,无序(添加的顺序 和 最终顺序 可能不一致)
属于Set接口下的类
public void test01(){
Set set = new HashSet();
set.add("张三");
set.add("李四");
set.add(null);
set.add("王五");
set.add("张三");
//[null, 李四, 张三, 王五]
System.out.println(set);
2.3HashMap的操作
Map接口下的内容 特点是:key-value循序形式,key不能重复,value可以重复 key根据hash算法计算所以无序
public void test02(){
Map m = new HashMap();
m.put("k2" , "李四");
//存储数据
m.put("k1" , "张三");
m.put("name", "呵呵");
m.replace("name","哈哈哈哈");
我们发现Map能存储一组数据,并且有语义化,Java对象也可以存储数据,也具有语义化,也就是说 我么以后存储一组数据 可以选择使用对象或者Map
2.4自定义泛型
类的泛型 是在类的声明的时候 在类的后面添加<> 里面声明泛型的名称,代表一种数据类型
泛型这中数据类型,需要在创建对象的时候 给其指定,如果不指定就是object类型 33.File 字面意思就是文件,它是Java中用来操作 操作系统OS 中文件与文件夹的专属类
操作文件或者文件夹 就是对操作系统中的文件进行增删改查,
1.2创建File对象
public void test01 (){
File f1 = new File (”E:\\123\\666.text”)
\\ 路径分割符 但是Java代码是跨平台的也就是开发环境是Windows 生产环境是Linux,Linux操作系统中的路径分隔符是/ 所以我们在Windows中的路径分隔符Linux不识别
System.out.println(File.separator);
File.separaror 动态获取当前系统的路径分割符,
1.3File增与删
public voic test02 throws execption {
File f1 = new File(”E:/123/666”}
只能创建一个文件夹
f1.mkir()
File f2 = new File("E:/123/6/7/8/91/2/3/4/5/6/7");
可以创建中间文件夹
F2.mkdirs()
删除文件夹是f1.delete() 如果删除文件中有内容就是无法删除
1.4File的修改和查询
查询:can is get 其他
File f1 = new File (”E:/ssss/sss/sss/ss”){}
当前是否是可执行文件 读写可执行
f1.canExecute();
f1.canRead();
f1.canWrite();
1,5 递归
高斯累加
public static int hundred(int i){ //递归实现1+2+3+...+99+100
if(i == 5){
}
else {
return i + hundred (i+1);
}
}