类中可以用哪些结构?
属性、方法、构造器
- String一旦声明不可改变
String既然是一个类,s1应该叫做String类的对象。类如果要创建对象用new,s1并没有用new也可以叫做对象。
- 创建对象是要调用构造器
s2、s3是通过new创建出来的String类的对象
s1指向的abcdefg和s2指向的abcdefg不在同一个区域内
双等号比较的是虚地址。
虚地址:对象在内存中的存储位置
比较字符串的内容
equals方法:
- 需要传参:传String类型的参数
- 有返回值,返回值是boolean类型
- 访问权限public
Length方法:
- 不需要传参
- 有返回值,返回值类型int
- 访问权限public
面试题:字符串获取长度的方法和数组获取长度有什么区别?
数组的length是属性,字符串的length( )是方法
取出指定位置的字符:
判断指定字符是否存在,返回值为字符串在s1的下标
- 从前往后找
- 从后往前找
实例:统计a在s1中出现了多少次
字符串的截取
如果传一个参数,从指定位置开始截取,直到字符串的末尾(考虑一下包不包括1位置的字符)
实例:键盘输入身份证号,计算出生日和性别
(注:倒数第二位的数字,奇数是男,偶数是女)
转大写
转小写
判断是否以xxxx开头
判断是否以xxxx结尾
验证码
去掉字符串前后的空格
字符串的替换
数组转字符串
字符串转成字符型的数组
字符串转成字节型的数组(一般情况下,字节型数组是在操作文件时常用(IO流))
字符串和其它数据类型的转换
- 任何数据类型和字符串类型做加法,结果都是字符串
包装类型
原理:
(自动)装箱:把int类型包装成了包装器Integer类型。基本数据类型转换成对应的包装器类型
(自动)拆箱:把Integer类型转换成int类型。包装器类型转换成对应的基本数据类型
JDK5以后的新功能:
- 自动装箱和自动拆箱
- 增强for循环(foreach)
- 枚举(switch case)
JDK7以后的新功能:
Switch...case可以用String
装箱:
拆箱:
异常:
- 数组下标越界
- 内存溢出(错误)
- 空指针
- 字符串下标越界
- 数字格式化