Java 01简单集合
之前的笔记分享一下
StringBuilder
1.程序运行时间
long time=System.currentTimeMills();
获得1970年1月1日000时到现在的毫秒值
这样就可以知道程序的时间了
2.简介
1.一个可变的字符序列
2.是字符串缓冲区,其理解为容器,可以储存任意数据类型,但只要进入这个容器,就会成为字符串
3.使用
StringBuilder sb=new StringBuilder();
sb.append("字符串");在后面添加字符串
4.构造
1.StringBuilder():初始容量为16个字符,但是在append的时候会进行自动扩容
2:StringBuilder(String str);
也就是静态钩构造和动态构造,创建字符串缓冲区
5.成员方法
append
append(任意类型)在后面进行添加数据,返回对象自己
是true 因为返回的对象自己,也就是他们指向的地址是相同的
所以注意一点,由于返回的是对象自己,所以一点,sb2进行改变的时候,sb也会进行改变
下面为链式编程
只有返回的是对象的时候才能进行链式编程
reverse
反转
s.reserve();
返回的也是对象
length()
返回长度int
toString
将缓冲区的内容,以String字符串类型返回
也就是当String有StringBuilder里面的没有的函数的时候,就将他转化成String
spilt
String s;
String[] sArr=s.spilt("哈");
返回的是s以哈为界限分割出来的String
6.使用
先说一下
String a="1";
StringBuilder b="1";
两个是不相等的,因为类型不一样
可以这样写
a.equals(b.toString());
这样就是相等的了
7.内存
怎么提高的效率
当创建一个string的时候,会先检测栈内存中有没有,没有的话就去创建,指向堆内存中的当前字符串
当使用加号的时候,会在堆内存中自动创建一个StringBuilder,然后调用他的append方法,此时的String方法指向的堆内存中的String
StringBuffer
简介
跟StringButter是差不多的
StringBuilder是多个线程是不安全的
但是StringBuffer是线程安全的;
但是需要的一点是,效率StringBuilder是效率较高的也就是安全的东西他的效率低,不安全的效率高
集合ArrayList
1.简介
为啥要用
因为数组是固定长度的,但是集合可以自由扩容,也就是可变的
2.ArrayList(类)
原理(为什么可以变)
1建立的时候会创建一个长度大小为10的空数组
2.装不下的时候,扩容原数组1.5倍大小的新数组
3.将原数组copy新的数组当中
4.将新元素放进去
3.构造
ArrayList list=new Arraylist();
list.add("q");
System.out.println(list);
//返回的是[q];
//封装的很完美,不需要关系数组的大小
因为可以存入任意数据类型,所以啥都能存入进来
相当于double int 或者obiect都是可以的
4.限制
只添加一个数据类型
ArrayList<String> arr=new ArrayList<String>();
JDK7之后可以不用加右边的尖括号了
<>也就是泛型****
使用泛型可以对集合中的数据进行限制
细节:泛型不允许存入基础数据类型
解决:使用对应的包装类
int Integer**
char Character**
其他的都是首字母大写
byte Byte
short Short
long Long
float Float
double Double
boolean Boolean
隐式转化也不可以***
5.增删改查
增
add
1.添加在末尾
返回值为boolean
2add(int index,E e);
在指定位置添加对应的元素,会将当前的踢到后面
删
remove
remove(int index);
根据索引进行删除,返回被删除的元素
如果是remove("元素");
返回值变成了boolean
改
set
arr.set(index ,元素);
将指定位置修改为需要的元素;
返回值为被覆盖掉的元素
查
get
get(index);
根据索引返回对应位置的元素,返回的是list类型
大小
size
返回的是长度
6.使用
创建一个对象的时候,直接print的话,返回的是地址的值
7.next和nextline
next以空格分开,
nextLine是吸入一行
8.内存
简述:1.建立集合,因为有new 在堆空间内建立对象,返回指针;
2.调用方法,传入一个遍历arraylist,所以会在栈内存中产生一个对象,
3.使用new,在堆内存中建立对象,返回地址,就实现了对象的添加
9技巧
尽量使用常量调用方法
10.删除中的问题
arr.add("1");
arr.add("1");
for(int i=0;i<arr.size();i++){if("1".equals(arr.get(i))){arr.remove(i);}
}
会发现还有一个1,因为相当于i向后了一步解决:i--删除完毕之后*也可以倒着删除就不需要--了
11.技巧
int x=f(da);
点击f加就会自动产生方法啦alt+回车
12.一些扩展函数
System.exit();
退出程序