【JAVA】 05-String类和JDK5
链接:
-
笔记目录:毕向东Java基础视频教程-笔记
-
GitHub库:JavaBXD33
目录:
<>
内容待整理:
API-String
特点
- String类:
1、String类都是对象。
2、一旦初始化,就不可以被更改。因为是常量。
3、通过String类的构造函数可以知道,将字节数组或者字符数组转成字符串。
字符串方法查找
- 1、字符串是一个对象,那么它的方法必然是围绕操作这个对象的数据而定义的。
- 2、你认为字符串中有哪些功能呢?
- 2.1 有多少个字符
int length()
// 返回此字符串的长度。空参,用this - 2.2 字符的位置
int indexOf(int ch, int fromIndex)
// 返回指定字符在此字符串中第一次出现处的索引。
// 参数:ch - 一个字符(Unicode 代码点)。 - 2.3 获取指定位置上的字符
char charAt(int index)
// 返回指定索引处的 char 值。
// 不存在的角标会抛出异常: java.lang.StringIndexOutOfBoundsException - 2.4 获取部分字符串
String substring(int beginIndex, int endIndex)
// 返回一个新字符串,它是此字符串的一个子字符串。
// 该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
// 因此,该子字符串的长度为 endIndex-beginIndex。
// 开始角标和结束角标时:100%是左闭右开的。
- 2.1 有多少个字符
字符串方法查找练习
- 1、字符串是否以指定字符串开头。结尾同理。
boolean startsWith(string)
boolean endsWith(string) - 2、字符串中是否包含另一个字符串。
boolean contains(string)
int indexOf(string) //如果返回-1,表示不存在 - 3、字符串中另一个字符串出现的位置。
int indexOf(string) - 4、将字符串中指定的字符串替换成另一个字符串。
String replace(oldstring, newstring) - 5、字符串如何比较大小。
int compareTo(String anotherString) - 6、将字符串转成一个字符数组。或者字节数组。
char toCharArray()
byte getBytes() - 7、将字母字符串转成大写的字母字符串。
String toUpperCase()
String toLowerCase() - 8、将字符串按照指定的方式分解成多个字符串,"lisi, wangwu, zhaoliu"获取三个姓名。
String[] split(string)
字符串练习
-
案例一:字符串数组排序
- 思路:
- 1、曾经:int[]排序,选择,冒泡
- 2、字符串排序同理
- 3、for嵌套循环
- 4、循环中进行元素的大小比较,满足条件就位置置换
-
案例二:字符串出现的次数
* "witcasteritcasttskitcasteiieocitcast"有几个itcast
- 思路:
- 1、无非就是在一个字符串中查找另一个字符串。indexOf。
- 2、查找到第一次出现的指定字符串后,如何查找第二个呢?
- 3、无需再从头开始,只要从第一次出现的位置 + 要找的字符串的长度的位置开始向后查找下一个第一次出现的位置即可
- 4、当返回的位置是-1时,查找结束。
-
案例三:按照长度递减获取字符串
- "itcast_sh"要求,将该字符串按照长度由长到短打印出来
- "itcast_sh"要求,将该字符串按照长度由长到短打印出来
StringBuffer:
-
使用:
-
1、是一个字符串缓冲区,其实就是一个容器。
-
2、长度可变,任意类型都可以。注意:是将任意数据都转成字符串进行存储。
-
3、容器对象提供很多对容器中数据的操作功能,比如:添加、删除、查找、修改。
-
4、必须所有的数据最终变成一个字符串。
-
和数组最大的不同:
-
数组:存储完可以单独操作每一个元素,每个元素都是独立的。
-
字符串缓冲区:所有存储的元素都被转成字符串,而且最后拼成了一个大字符串。
//1、创建一个字符串缓冲区对象,用于存储数据。 StringBuffer sb = new StringBuffer(); //2、添加数据。不断添加数据后,要对缓冲区中的最后的数据进行操作,必须转成字符串才可以。 sb.append(true).append("hehe").append(123);//方法调用链 sb.append("haha"); //String str = sb.append(true).append("hehe").append(123).toString(); //run:truehehe123haha sb.insert(2, false);//在索引位置2开始插入,包括2 //run:trfalseuehehe123haha //删除:delete和remove //deleteCharAt(int index); //删除指定位置的元素 sb.delete(1, 4);//左闭右开 //run:tlseuehehe123haha //替换:replace sb.replace(1, 4, "12345");//左闭右开,字符串可以比start到end长 //run:t12345uehehe123haha //反转:reverse sb.reverse(); //run:ahah321eheheu54321t //设置为定长(裁掉多余部分) sb.setLength(2); //run:ah System.out.println(sb); //“+”的底层过程展示 //String s = "a"+5+'c'; //s = new StringBuffer().append("a").append(5).append('c').toString();
-
String典型问题
-
作业1:获取两个字符串的最大相同子串。
-
思路:
2、存在,已找到,说明短串就是最大相同;
不存在,就将短串按照长度递减的方式获取短串中的子串并到长串中判断。
3、一旦存在,便结束查找。 -
-
作业2:对字符串中字符进行自然顺序的排序
-
思路:
1、排序熟,但是都是对数组排序
2、数组中的元素在哪里?在字符串中。把字符串转成数组。
3、对数组排序。
4、将排序后的数组转成字符串。
-
-
作业3:String类的trim()
- 1、写代码演示该方法的使用
- 2、trim什么时候用?
-
用户名,文本框输入,获取用户文本时,
- 3、模拟一个和trim功能一样的函数。参阅源码。
API-基本类型包装类
概述
-
场景:
- 通过文本框获取用户输入的数字数据,但是得到的都是字符串。
- 如果想要对字符串中的数字进行运算,必须将字符串转成数字。
-
java中提供了相应的解决的对象。
- 基本数据类型对象包装类:java将基本数据类型值封装成对象。
- 封装成对象的好处:可以提供更多的操作基本数值的功能。
- 基本数据类型:8种
自动拆箱装箱
-
示例:
JDK1.5以后,有了一个包装类的新特性:目的是简化书写。自动装箱。
Integer i = 4;//引用数据类型指向的必然是对象。
//自动装箱。基本数值--->包装对象:三种方法。Integer i = Integer.valueOf(4);
//valueOf源码中仍是new Integer(i);
i = i + 5;//原理:等号右边将i对象转成基本数值。
//i.intValue() + 5; 自动拆箱。加法运算后,再次装箱。
//1.4里:i = Integer.valueOf(i.intValue()+5); -
Integer重写equals方法
综合练习-面试题
- "23 9 -4 18 100 7"
- 要求对这串数字按照从小到大排序,生成一个数值有序的字符串。
-
思路:
- 1、只有排序会。排序需要数组,数组中就要有元素。
- 2、元素:在字符串里,怎么取出来?要获取字符串中的内容,需要String对象
- 3、从字符串获取到数值后存储到一个int数组中。因为要排序。
- 4、将排序后的数组变成字符串。
- 即:字符串转int[] ----> int[]排序 ----> int[]转字符串
API-集合框架
集合引入
集合方法演示
迭代
-
迭代原理:
- 取元素,无论是什么数据结构,最终共性的取出方式:
一个一个取,取之前判断。有,取一个。没有,结束 - 这种共性的方式称为:迭代。
- 取元素,无论是什么数据结构,最终共性的取出方式: