Java视频基础笔记第三部分;
内容包括:String字符串的内存原理、StringBuffer、StringBuilder、数组和冒泡排序
28、String字符串
实例化String对象:
1、直接赋值
String ss = "Hello";
2、new开辟内存空间
String ss = new String("Hello");
使用第一种方式可以更节省空间
29、 字符串的比较
ss.equals(ss);
return true;
== 比较的是堆内存中的地址
equals 比较的是内容
30、获取字符串的长度
ss.lenght()
字符串转数组
ss.toCharArray();
从字符串中取出指定位置的字符
ss.charAt(1); //() 内可以写0、1、2、3等等
字符串与byte数组的转换: ss.getBytes();
过滤字符串中存在的字符: indexOf();
去掉空格: trim();
从字符串中取出子字符串:subString()
大小写转换:toLowerCase() toUpperCase()
判断字符串的开头结尾字符:endsWidth() startWith()
替换String字符串中的一个字符:replace()
根据API查看各种方法;
31、StringBuffer
字符串缓冲区,本身也是操作字符串,但是StringBuffer是可以更改的;
StringBuffer是一个操作类,必须通过实例化进行操作;
StringBuffer可以加快字符串在循环追加时的计算速度,因为不用开辟新的内存空间
StringBuffer s = new StringBuffer();
s.append("极客");
常用方法:
append("A")
//覆盖
insert(0,"A")
//从哪个位置开始追加
replace(1,3,"A")//从第几位到第几位,用A替换
indexOf()
32、StringBuilder
1、用于字符串缓冲区被单个线程使用的时候;
速度比StringBuffer更快;
2、如果涉及到线程安全方面的问题,还是使用StringBuffer
3、常用方法:
append();
insert();
33、多态性:
1、方法的重载与重写
2、对象的多态性:
向上转型:把子类数据传给父类(自动完成)
父类 对象 = new 子类实例
向下转型:把父类数据传给子类(需要进行强制类型转换)
父类 对象 = new 子类实例
子类 对象 = (子类)父类对象
34、数组:
数组的每个元素都用唯一的下标作为标识~
int[] a = new int[100]; // 动态初始化
a[i] // i 就是数组 a 的下标
int[] a = {1,3,5,7,9}; // 静态初始化,直接指定数组元素 使用较多
冒泡排序:双层for循环
- int[] ar = {123,643,123,56,3234,56,34,12,2};
- int temp = 0;
- for(int i = 0; i < ar.length; i++){ //第一个循环从下标0 开始
- for(int j = i+1; j < ar.length; j++){ // 第二个循环,从下标 1 开始,所以+1
- if(ar[i] > ar[j]){ //从大到小排列,< 就是从小到大排列
- temp = ar[i]; //通过中间值 temp 进行交换操作
- ar[i] = ar[j];
- ar[j] = temp;
- }
- }
- }
35、翻转字符串:
- String st = "abcdefg";
- StringBuffer sbf = new StringBuffer(st);
- System.out.println(sbf.reverse());
36、ObjectOutputStream输出的类对象,必须先implements Serializable 这个接口,否则编译会报错。