- 字符串
String 类 引用类型 默认值null 不是”“
1.声明字符串
2.字符串的拼接
(1)+ 加号在拼接字符串和数学运算时优先级是一样的(都是从左向右开始计算)
(2)字符串和所有类型相加(+)得到的都是字符串
3.字符串比较equals
使用equals方法比较字符串 比较值。改写了Object类的equals方法,如果不改写就是比较两者的地址用==来比较。
4.String类型中常用的方法
valueOf----将传入的参数转成字符串
5.查找字符(字符串)出现的位置(index)
字符串会返回第一个元素的下标
找不到会返回-1
从后往前找使用lastindexOf()方法。
6.获取指定位置的字符charAt
7.替换replace
8.分割字符串split()
将2切掉,第一位是2的话,切割完是,开头。在最后是没有,号的
9.获取字符串的长度length()
10.去除前后空白位trim
可以去掉 空格,\n,\r,\t 但是不会去掉中间的空白位
11.大写小写(针对字母)toUpperCase toLowerCase
12.判断是否为空串isEmpty()
13.以某个字符开始或结束 startsWith endsWith
- 截取字符串substring
- 字符串常量池
String 对象 定义后就不可改变 常量 private final 修饰value数组
字符串常量池 池 容器 重用 String 字符串定义后就不可改变 存在常量池里面
字符串怎样加入到常量池------使用量的方式声明的字符串就会加入到常量池中
程序中第一次使用量的形式定义“123”,会将这个字符串存入到<字符串常量池中>,之后再使用量的形式使用该对象,就执行使用常量池中的对象
strA和strB指向的是常量池中同一个字符串”123”,所以地址相同为true
New出来的就是新的,所以指向的对象不是同一个
以下是不同的示例:
定义一个确定的变量,也可以常量优化,但是构造方法只有在执行的时候才知道是什么
intern()
(1)返回 str对象在字符串常量池中的副本对象
(2)过程:检查str是否在字符串常量中存在副本,如果不存在就复制一份存入到常量池中
(3)然后返回常量池中的副本对象
(4)如果已经存在副本对象,直接返回副本对象,所以在new出新的字符串时会创建1个或2个对象
(5)如果两个字符串equals 为true,那么两个字符串的intern方法比较是一样的
- StringBuilder和StringBuffer
在运行代码的时候,会产生中间串,会大大消耗内存,所以在拼接字符串时,不要产生中间串,可以使用StringBuilder StringBuffer
调用append 往StringBuilder数组中追加字符,其中没有产生字符串对象
StringBuilder 和StringBuffer 都默认容量是 16
追加字符时容量不够就需要扩容(value) 默认原来的容量*2+2 具体可看append的方法介绍
两者之间的区别:StringBuffer安全但效率慢,StringBuilder不安全但效率快
数组复制的实现:
参数的含义分别是:被复制的对象,开始复制的位置,目的对象,目的对象的开始复制的位置,复制数组的长度。
- 日期Date
long 类型来表示日期 开始日期为1970-1-1 00:00:00 000
日期的类型 Date
- 获取当前时间对象-------执行时的时间
- 获取时间戳,每毫秒加一,从1970-1-1 00:00:00 000开始
示例:获取两天后的时间
通过改变时间戳,将时间戳赋值给date对象
- 获取月份
- 时间格式化
首先定义时间显示的模式,然后将date对象的格式化赋值给String对象打印出来
- 其他时间表示
当地的时间显示:
- 随机数
- 假随机数 Math.random()
double类型的,Math.random()的取值范围是[0~1)之间的随机数
[8,90)可以看成[0,82),所以就是ran*82,但是还差8,所以要加8。
- 假随机数Random();
不带种子将会返回随机的数字,每次运行结果不一样
有种子无论程序运行多少次,返回结果都是一样的
- 其余
- 取整(四舍五入)Math.round()
去掉小数点后面的数
Float 类型返回的是int类型,其余返回的是long类型
- 向上取整Math.ceil()
ranNum=12.5
- 向下取整Math.floor()
ranNum=12.5