1.回顾
工具的使用
Object
toString
equals
2. Scanner 键盘录入
nextInt() -- 获取int类型(必须输入数字格式的字符,还要在int范围内)
nextLine() -- 获取一行的数据,是String类型
注意:先输入int类型,再输入String类型,并且用nextInt() 和nextLine()接收,后面的Sting类型就接收不到了。
原因:回车换行符,nextLine()捕捉到了"\r\n"
解决方案:1)重写创建键盘输入对象。
2)全部用nextLine(),接收成String类型,然后再转换成int。
3. String类
1)构造方法:
String()
String(byte[] value)
String(byte[] value, int index, int length)
String(char[] value)
String(char[] value, int index, int length)
String("abc")
String s = "abc"; -- 直接赋值方式(常用)
空串与null的区别:
空串是有对象的,在内存中有空间
null 是没有对象的,在内存中没有空间
2)数组和字符串分别通过什么方式获长度?
数组 length属性
字符串 length() 方法
3)
1. 怎么理解字符串一旦被创建不能改变,这是一个常见的面试题。
常量池。出现为了什么?为了效率。产生弊端:占用内存空间。
字符串一旦被创建就不可以改变,指的是字符串在常量池中的值不再发生改变,但是引用却可以在任意时刻改变指向。
2. String s1 = new String(“abc”);
这种方式在内存中有2个对象。
String s2 = “abc”;
直接赋值的方式 在内存中只有一个对象。
s1和s2有区别吗?
4)字符串的判断功能
equals(Object obj)
equalsIgnoreCase(String str)
-- 注意 : 只有这种明确说明了忽略大小写的方法,才忽略大小写。默认是区分的
contains(String str)
startsWith(String str)
endsWith(String str)
isEmpty() -- 判断是否是空串。(区分null)
5)字符串的获取功能
int length()
char charAt(int index)
indexOf(char ch)
indexOf(String str)
indexOf(char ch, int fromIndex)
indexOf(char ch, int fromIndex)
-- lastIndexOf()
substring(int index) -- 截取到结尾
substring(int start, int end) -- 从start截取到end,左闭右开。
注意:
左闭右开原则有普适性
获取功能对原字符串没有影响
查看下面需求,思考思路(不要求写出代码)
给定一个字符串常量,统计该串中有大写字母、小写字母、数字各有多少个。
举例:
Hello12345World
大写 : 2个
小写 : 8个
数字 : 5个
注意事项:如果使用char直接比较的方式 , 别忘了 ''
6)字符串的转换功能
byte[] getBytes() -- 转换为字节数组
char[] toCharArray() -- 转换为字符数组
static String copyValueOf(char[] chs) -- 字符数组转换成字符串
static valueOf(int i) -- 基本数据类型
static valueOf(Object obj) -- 引用数据类型(根据对象的toString方法返回)
static valueOf(char[] chs)
String toUpperCase() -- 转大写
String toLowerCase() -- 转小写
String concat(String str) -- 连接字符串(相当于+)
查看下面需求,完成代码
需求 : 把字符串的首字母转成大写,其余为小写
举例:
helloWorld
转化后结果:
Helloworld
7)字符串的其他功能
替换功能 replace(String old, String new)
切割功能 String[] split(String regex)
切割功能补充:
1、如果字符串中不包含与给定正则匹配的字符(串),那么返回的数组长度为1,数组中的这1个元素值与原字符串相同。
2、如果给定的正则表达式在字符串的开始处匹配成功,那么返回数组的第一个元素为一个空字符串(""),也就是在匹配表达式的前面截取出一个空串。
但是,如果给定的正则表达式在字符串的结尾处匹配成功,返回的数组最后一个元素并不会取空字符串,而是最后的匹配表达式前面的部分。
去除前后端空格:
trim()
字典顺序比较
int compareTo()
-- 依次拿相同索引上的字符进行比较,如果相同,继续往下,如果不同,返回字符相减的值,如果全部一样,返回0
|
|