字符串是由多个字符组成的一串数据(字符序列)字符串可以看成是字符数组 |
---|
1)先看是类还是接口呢
2)属于哪个包
3)构造函数(方法) 就是用来创建对象
简单了解一个字符串方法 =>length()
【思考】:为何没有输出地址值呢?
打印length
byte [] bytes = {97,98,99,100};
String s2 = new String(bytes);
System.out.println("s2:"+s2);
System.out.println("s2.length:"+s2.length());
观察地址值
【思考】:请问地址值为何是这个呢?
ASII码表[U5]
把字节数组的一部分转成字符串
需求:我想得到字节数组的一部分: bcd
将字符数组转成 字符串
char[]chars = {'x','m','q','a','潘','金','链'};
String s = new String(chars);
System.out.println("s:"+s);
System.out.println(s.length());
String s2 = new String(chars, 2, 4);
System.out.println("s2:"+s2);
System.out.println(s2.length());
【思考】:上面代码,执行结果是多少呢?
【中文解释】
int length() 获取字符串长度
char charAt(int index) 获取指定位置的字符
int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。
int indexOf(String str) 返回指定字符串第一次出现的字符串内的索引。
int indexOf(int ch,int fromIndex) 返回指定字符从指定位置第一次出现的字符串内的索引。
int indexOf(String str,intfromIndex) 返回指定字符串从指定位置第一次出现的字符串内的索引。
String substring(int start) 截取字符串默认情况下到末尾
String substring(int start,int end) 截取字符串从哪里开始到哪里结束
/*
* int length() => 获取字符串长度
char charAt(int index) => 获取指定位置的字符
int indexOf(int ch) => 返回指定字符第一次出现的字符串内的索引。
思考:
为何 indexOf(int ch) 是int而不是 char
因为 'a' 97 => 'a' 如果你直接定义为char 只能写'a' 写
int indexOf(String str)=> 返回指定字符串第一次出现的字符串内的索引。
int indexOf(int ch,int fromIndex)==》返回指定字符从指定位置第一次出现的字符串内的索引。
int indexOf(String str,int fromIndex)=>返回指定字符串从指定位置第一次出现的字符串内的索引。
String substring(int start) =》截取字符串默认情况下到末尾
String substring(int start,int end) =>截取字符串从哪里开始到哪里结束
【作业练习】:
1:遍历获取字符串中的每一个字符
WoAiDongNanDaXue |
---|
2:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
2.1.给定一个写死的字符
Hello123World 结果: 大写字符:2个 小写字符:8个 数字字符:3个 |
---|
2.2.把给定字符串的方式,改进为键盘录入字符串的方式。
byte[] getBytes()将字符串转成字节数组
char[] toCharArray() 将字符串转成字符数组
static String valueOf(char[] chs) 把字符数组转成字符串
static String valueOf(int i) 把int类型的数据转成字符串
String toLowerCase()将字符串中数据进行小写转换
String toUpperCase() 将字符串中数据进行大写转换
String concat(String str) 字符串的连接
代码实战:
publicstaticvoid main(String[] args) {
String str = "hello";
byte[] bytes = str.getBytes();
System.out.println(bytes); // [B@15db9742
for (inti = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
}
观察打印结果:
char[] toCharArray() 将字符串转成字符数组
publicstaticvoid main(String[] args) {
String str = "hello";
char[] charArray = str.toCharArray();
for (inti = 0; i < charArray.length; i++) {
System.out.println(charArray[i]);
}
}
连接:
【作业练习】:
把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
举例: helloWORLD结果:Helloworld |
---|
u 按字典顺序比较两个字符串 [n7]
【作业练习题:】
a)把数组中的数据按照指定个格式拼接成一个字符串
举例:int[] arr ={1,2,3}; 输出结果:[1, 2, 3]
b)字符串反转
举例:键盘录入”abc” 输出结果:”cba”
c)统计大串中小串出现的次数
举例:在字符串”woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次
d)模拟官方的trim()方法,写出如何去除字符串中间的空格
e) 自己研究 lastIndexOf(int ch)返回指定字符的最后一次出现的字符串中的索引。
f) 判断上传图片格式
图片格式限制为:png jpg
如果图片格式是png 或者jpg 提示:图片格式正确!
如果图片格式不是这些格式,一律提示:图片格式不正确,请重新上传!!
小猫.jpg
小猫.png
小猫.mp4
小猫.mp3
[n1]Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。 => String s = "abc"
- 字符串不变; 它们的值在创建后不能被更改。 字符串一旦被创建那么其中的值不可以被更改
- 字符串缓冲区支持可变字符串。 =>字符串缓冲区中定义的值可以被修改
[n2]Student st = new Student(); =>只要new了对象就必然会调用构造函数
默认调用父类的无参构造
如果定义多个构造函数,那么就不会调用默认的无参
[U3]将offset改为index更好理解
[U4]要转成字符串的长度
一共需要转换几位
[U5]https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81%E8%A1%A8&fromid=19660475&fr=aladdin
[n6]不是总长度,你要转换长度
[n7]实际上比较的ASCII码表的值