第五天
面向对象
想要使用类的时候,要通过实例化对象,才能使用类;
继承 实现多态, 多态 使程序的可扩展性更强
实现多态的手段:
Virtual 虚方法 abstract 抽象方法 接口
字符串的 不可变性, 每次修稿字符串时都是单独的字符串副本(拷贝);原来值不变;
当程序终有多个相同的字符串常量时, 这时, 这些字符串都是指向内存中的同一个字符串, 这个特性就是字符串池;
之所以字符串池不会早成程序的混乱,是因为: 字符串具有不可变性;
String.length 指的是字符串中字符的个数, 不是字节数
判断字符串是否为null或空字符串; 无论字符串为null还是空字符串 返回值都是true;
都是表示空字符串:
String s3=null 表示没有指向内存,
判断是否为空:
要用这个判断
由于
比较字符串是否相同:
不区分大小写
其实与用”==”进行比较是相同的;
Indexof 在字符串中查找对应的字符串第一次出现的索引位置; 如果没有则返回-1;
这里的10代表索引的开始位置
Lastindexof 查找字符串中最后一次出现的位置;
Substring ()截取字符串 可以添加开始位置和结束位置;
Split 分割字符串: 可以死根据字符串分割;
可以有多个分割符:
Join 方法 与上面连着
拼接字符串
Replace 替换
读取文件
提取文件名:
找工资
在进行大量字符串拼接的时候, string的问题:
1.内存浪费,产生大量的垃圾内存;
2.由于string的不可改变性,每次拼接都会创建一个姓的string的对象,每次创建新对象的时候, 本身也是比较耗时耗资源的, 所以造成了使用string凭借字符串性能极其低下;
解决办法就是使用stringBuilder 只是在拼接字符串的时候用, 除非是大量拼接字符串的时候使用stringBuilder, 其他情况都是使用string ,因为各种方法要求的参数都是string类型, 并且string类型具有一些特性: 不可改变性, 字符串池;
最后通过stringBuilder拼接的字符串一般都会
栈中的变量如果只想的是同一块堆内存,则认为是同一对象;
Equals 验证两个对象是否是同一个对象;
通过==判断的时候,结果却是返回相同, 由于string类型重写了从object类中继承下来的equals方法,怎么重写的?
只要两个字符串中的字符完全相同,那么就会认为两者一样: 返回true;
由于equals方法子类可以重写, 所以通过equals方法判断是否是同一个对象已经不准确了, 所以判断两个对象是否是同一个对象用: object. referenceEquals();
1.不可变性 ;
2.留用性;(*)拘留
3.字符串池(常量);