文章目录
首先祝各位读者新年快乐,如今过年走亲戚串门也基本已经圆满完成,是时候继续我们的学习之旅了。
提示:以下是本篇文章正文内容,可供参考
API
API (Application Programming Interface):应用程序编程接口
简单理解: API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
Java API:指的就是JDK中提供的各种功能的Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
比如:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
}
上面的代码就是使用了Java的API
API帮助文档
API帮助文档:帮助开发人员更好的使用API和查询API的一个工具。
网盘下载
链接:
https://pan.baidu.com/s/1cZJIoXkTAxYtnc2EA08p8g
提取码:22jh
如何使用?
1.打开API帮助文档
2.点击显示,并找到索引下面的输入
3.在输入框中输入类名并点击显示
4.查看类所在的包
5.查看类的描述
6.查看构造方法
7.查看成员方法
使用详解
比如我们使用帮助文档来使用Scanner对象及其方法
1.打开API帮助文档
2.点击显示,并找到索引下面的输入
3.在输入框中输入类名并点击显示
4.查看类所在的包
如图所示:
5.查看类的描述
6.查看构造方法
7.查看成员方法
使用代码进行演示
public static void main(String[] args) {
// 1.根据构造方法创建对象
Scanner sc = new Scanner(System.in);
// 2.设置提示信息
System.out.println("请输入一个数");
// 3.接收数据
String a = sc.next();
// 4.打印数据
System.out.println(a);
}
根据构造方法创建对象(有参),输入流用的是system.in流
注:System.in属于Java的标准输入流,因为输入流可以包括一个文件,键盘输入,更或是一个其他的输入流等,System.in就属于控制台输入流,键盘输入是一种System.in流
字符串
1.什么是字符串?
用双引号包裹起来的就叫字符串
例如:“123” , “hello world !”
2.字符串有什么作用?
首先就是我们最熟悉的拼接操作
用任意类型的数据与字符串进行相加都是拼接操作,并产生一个新的字符串
比如:System.out.println(“hello"+true);
当然字符串还有其他很多操作,比如:
比较,替换,截取,查找,切割,检索,加密,打乱内容,等等
字符串在开发当中的应用场景
1.登录注册
其中你输入的账号密码就是一串字符串,上面的账号输入框中你只需要输入你的邮箱账号,它会帮你自动拼接一个@163.com的字符串
当你输入完成点击登录时会进行账号密码的校验,也就是字符串的比较
2.转账界面
正如上面的图片所示,其中的付款账户并没有完全显示账号而是使用*将其中的一些数字进行了字符串的替换
上面标注的部分是进行了字符串的转换功能
当然除了上面的部分还有很多,这里就不再演示
字符串学习内容
- String, StringBuilder,Stringjonier,StringBuffer,Pattern,Matcher
学会这些就可以掌握字符串的一些常见操作了。 - 实际开发中的一些常见案例
掌握分析问题,解决问题的能力。 - 字符串相关的底层原理
掌握原理更好的通过面试,处理开发中的一些复杂问题。
String
String概述
java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。
举例:
String name = "张三";
String sex = "男";
String的注意点
字符串的内容是不会发生改变的,它的对象在创建后不能被更改。
String name = "张三";
String sex = "男";
System.out.println(name+sex);
字符串拼接产生一个新的字符串
字符串的创建方式:
代码实现:
运行结果:
观察下面代码
public class StringDemo {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
}
}
从Java的内存模型分析
1.使用直接赋值的方式创建
当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。不存在则创建新的,存在则复用。
2.使用new的方式来创建一个字符串对象
此时每个对象在堆内存当中都开辟了一个空间,这种方式创建的字符串不会复用,那么当相同的字符串比较多时会浪费空间。
常用方法
字符串的比较
1.用“= =”进行比较
首先了解一下“= =”的比较原理
由上面可以看出用“= =”比较字符串的内容是否一致,这种方法是不行的
2.使用方法进行比较
下面有两种常用方法:
代码演示:
运行结果:
StringBuilder
StringBuilder概述
StringBuilder可以看成是一个容器,创建之后里面的内容是可变的
作用:提高字符串的操作效率
比如下面代码
String s1 = "aaa";
String s2 = "bbb";
String s3 = "ccc";
String s4 = s1+s2+s3;
我们想让字符串进行拼接操作,按照之前的操作是从左往右进行拼接,且字符串本身是不可变的。每次拼接都要产生一个新的字符串,例如:aaa+bbb会产生一个aaabbb,aaabbb+ccc=aaabbbccc因此会产生多个没用字符串,不但影响内存且影响效果。
此时我们可以用StringBuilder容器,我们只需要创建一个StringBuilder对象即可完成
StringBuilder构造方法
!](https://img-blog.csdnimg.cn/feffca11bc44492ab7757fa56aec7452.png)
StringBuilder常用方法
代码演示:
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
//打印//普及:
//因为stringBuilder是Java已经写好的类
//java在底层对他做了一些特殊处理。
//打印对象不是地址值而是属性值。
System.out.println(s);
}
运行结果:
方法的使用:
public static void main(String[] args) {
// 1.创建对象
StringBuilder s = new StringBuilder("abc");
// 2.添加元素
s.append(1);
s.append(true);
s.append("good");
System.out.println(s);
// 反转
s.reverse();
System.out.println(s);
// 获取长度
int len = s.length();
System.out.println(len);
}
运行结果:
// 1.创建对象
StringBuilder s = new StringBuilder("abc");
// 2.添加元素
s.append(1);
s.append(true);
s.append("good");
System.out.println(s);
对于System.out.println(s);这行代码我们打印的并不是字符串而是StringBulider容器当中的内容。如果我们想要把容器当中的内容变成字符串时就需要用到toString()这个方法。这样才可以使用字符串的方法
如下:
public static void main(String[] args) {
// 1.创建对象
StringBuilder s = new StringBuilder("abc");
// 2.添加元素
s.append(1);
s.append(true);
s.append("good");
System.out.println(s);
//3.再把StringBuilder变回字符串
String ss = s.toString();
System.out.println(s);
}
链式编程:
当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
比如上面的代码我们可以简化成:
public static void main(String[] args) {
// 1.创建对象
StringBuilder s = new StringBuilder("abc");
// 2.添加元素
s.append(1).append(true).append("good").toString();
System.out.println(s);
}
StringJoiner
StringJoiner概述
StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
心
作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
JDK8出现的
StringJoiner的构造方法
StringJoiner的成员方法
代码演示:
public static void main(String[] args) {
//1.创建一个对象,并指定中间的间隔符号
StringJoiner sj = new StringJoiner("---");
//2.添加元素
sj.add( "aaa" ).add( "bbb" ).add( "ccc" );
//3.打印结果
System.out.println(sj);
// 1.创建一个对象,并指定中间的间隔符号,开始符结束符
StringJoiner s2 = new StringJoiner(",","[","]");
//2.添加元素
s2.add( "qq" ).add( "ww" ).add( "ee" );
//3.打印结果
System.out.println(s2);
}
运行结果:
总结:
1.String表示字符串的类,定义了很多操作字符串的方法
2.StringBuilder一个可变的操作字符串的容器。可以高效的拼接字符串,还可以将容器里面的内容反转。
3.StringJoiner JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。
4.字符串拼接的底层原理
如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
5.StringBuilder提高效率原理图
所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存
6.StringBuilder源码分析
默认创建一个长度为16的字节数组添加的内容长度小于16,直接存
添加的内容大于16会扩容(原来的容量*2+2)如果扩容之后还不够,以实际长度为准