JAVA零基础入门笔记(十二)
程序员文章站
2022-07-09 21:54:04
...
一.API
概念:
别人写好的类, 我们来用, 这个别人写好的类我们称为API
API 文档:
就是一个说明书, 我们可以通过这个文档很好的学习别人定义好的类
如何看这个API文档
1.看包
为了找到这个类
import java.util.Scanner
2. 看构造
为了造对象
3.使用对象的成员方法
为了我们想要的效果!!!
1.方法名
2.看方法的参数
3.看方法的返回值
快捷方式:
alt + ctrl + v
.var
alt + enter
二.String
**1.看包 : java.lang**
在java.lang包的类不需要导包就可以使用
**2.看构造:**
**String();**
创建了一个空白的字符串 String s = "";
String s = "";
**String(char[] arr);**
可以将字符数组转成字符串对象
已知一个"字符数组"想要变成"字符串"的时候才有机会用到这个
**String(String s);**
将字符串变成字符串!!!!
String s = "字符串"
注意事项:
String s = “字符串” ,初始化在字符串常量池中初始化, 如果出现重复的字符串可以复用
如果采用构造函数初始化, 通过new 就会在堆内存中开辟空间
== , 如果是基本数据类型比较的是具体的值, 如果是引用数据类型比较的是地址
3.看方法:
int length();
可以获取字符串中有多少个字符
boolean equals(Object obj);
将"本字符串"和obj比较内容
boolean equalsIgnoreCase(String obj);
将"本字符串"和obj比较内容, 不区分大小写
char charAt(int index);
根据传入的索引得到对应的字符
遍历字符串
1. length()和charAt()结合
String s = "123";
for(int i = 0 ; i < s.length(); i++){
char c = s.charAt(i);
}
2.将字符串变成字符数组
String s = "123";
char[] arr = s.toCharArray();
for(int i = 0 ; i < arr.length; i++){
char c = arr[i];
}
特点
1.所有的字符串常量都是String的对象
String s = “abc”;
2. 字符串是常量, 一旦创建不能改变, 如果非要改变, 其实其实改的是地址!!!是地址替换
3.字符串常量是可以复用, 可以优化
常见面试题
String s1 = "123";
String s2 = "123";
s1 == s2;//true
采用常量初始化,会复用
String s1 = "123";
String s2 = new String("123");
s1 == s2;//false
s1在常量池中初始化, 但是s2在堆里面初始化
String s1 = "123";
String s2 = "12"
String s3 = s2 + "3";
s1 == s3;//false
s1在常量池初始化, 但是s3出现了变量字符串拼接, 在堆内存中造一个StringBuilder的对象并且使用它的append功能, 拼接完后调用toString()将StringBuilder转换成字符串, toString()底层采用new的方式变成的字符串, 所有初始化在堆中
String s1 = "123";
String s2 = "12" +"3";
s1 == s2;//true
java有常量优化机制, 在编译期间将"12"+“3"变成"123”, 此时也是在常量池中初始化得到复用, 所以地址一样
byte a = 120;
a = a + 1;
//因为a会提升int类型, 最终结果是int类型不能用byte来接受
byte a = 120 + 1
//常量优化机制, 会在编译期间将120 + 1变成121赋值a是可以的
结论:以后建议大家创建字符串都采用第四种方式, 节约内存!!!!!