1、String类概述、使用
java.lang.String类(引用类型)
1)、表示字符串
2)、所有双引号引起来的内容都是字符串对象
3)、最常用的类,没有之一,方法最多的类,没有之一
字符串创建对象
1)、双引号“ ”;
2)、new出来的;
打印时会做特殊处理,直接打印其字符串内容
2、字符串对象的特点
1)、不可变性
字符串是不可改变的,如果发现字符串变化了,那就是又创建了新的字符串,旧的并没有改变
字符串常量池(在堆heap之下):
1)、程序先看是否存在
1)、存在,就返回地址
2)、不存在,创建新的字符串,返回地址
2)、拼接,创建新的:拼接后给一个新的地址,拼接前的字符串不会改变,地址也不会改变
2)、共享性
把字符串常量池中相同的字符串放在同一个地址,当有多个变量要获取时,都会指向同一个地址(优化代码)
3)、字符串的底层是字符数组
String s = "Hello";
char[] c = {'H','e','l','l','o'};
String ss = new String(c);//可以创建,因为底层是相同的
4)、String直接赋值与new String对象赋值的区别
String自接赋值常用
直接赋值会将字符串放在常量池中,而new出对象在写入字符串是放在堆中的,其地址不互通
3、String类常用构造方法
1)、使用双引号
String s = “内容”;
2)、new 构造方法
String s1 = new String();//直接创建对象
String s2 = new String("内容");//创建对象后写入字符串内容
char[] c = {内容};
String s3 = new String(c);//创建对象后将字符数组写入内容
byte[] bytes = {数字内容};
String s4 = new String(bytes);//用字节数组根据acsii表写入字符,效率比字符数组高(电脑识别数字更快)
4、String的第一组方法:判断功能
String s = "内容1";
s.equals("内容2");//比较俩字符串内容(区分字母大小写)boolean值;
s.equalsIgnoreCase("内容3");//比较俩字符串内容(不区分字母大小写)boolean值;
5、String的第二组方法:获取功能
String s = "内容";
s.length();//获取字符串的长度
s.charAt(int a);//返回a索引处的字符(注意索引a不可越界)
s.indexof(char c);//返回第一次出现c字符的索引(字符串同样可以用)
s.substring(int 开始索引);//截取从开始索引到结束索引的子字符串
s.substring(int 开始索引,int 结束索引)//截取从开始索引到结束索引-1的字符串
s.concat(String ss);//拼接俩字符串,不常用,开发中不常用,不如使用+=ss
6、String的第三组方法:转换功能
String s = "内容";
s.toCharArray();//转为字符数组
s.getBytes();//转为字节数组
s.replace(旧字符串,新字符串);//字符串替换,必须接收
7、String的第四组方法:分割功能
String s = "内容";
s.split("切口处内容");//不可以直接使用. 因为.代表任意字符 非要使用.就在前面加//
8、static关键字概述
static是java的一个关键字
1)、修饰语句,不创建对象,直接调用修饰的成员变量/成员变量
2)、让成员变量在内存中只有一份
9、static修饰成员变量
public class 类名{
static 成员变量;
}
1)、创建对象(不建议,不专业,low)
类名 变量名 = new 类名();
Syetem.out.println(对象名.成员变量名);
2)、类名.成员变量名
System.out.println(类名.成员变量名);
10、static关键字—静态原理图解
1)、被static修饰的成员变量/成员方法,类一加载就有了,不创建对象就可以直接使用了
2)、被static修饰的成员变量,属于类,不属于某个对象,而是一起拥有的,是共享的,有一个对象对其改变,其他对象也会受影响
11、static修饰成员方法
public class 类名{
public static 返回值类型 方法名(参数){
}
}
使用时:
类名.静态成员方法名()
12、静态方法的注意事项
1)、static修饰成员,直接调用
2)、静态访问静态(先创建好的)
3)、非静态访问所有(后创建好的)
就像后代可以拜访先辈,而先辈不可以拜访后代(后代还没有出生)
13、static关键字-静态代码块(优先级最高)
static{
语句体
}
写在类中,方法外
用来在对象出现之前,初始静态变量
静态代码块最优先执行-优先于main方法执行
14、Arrays类-概述及常用方法
这个类的成员方法全部都是静态的,所以使用方便
该类用于数组的排序,搜索等
基本数据类型[] 数组名 = {数组内容};
Arrays.sort(数组名);//将数组内容进行排序
Arrays.toString(数组名);//将数组内容转为字符串
15、Math类-概述及常用方法
Math包含执行基本数字运行的方法 绝对值 取整
Math.abs(数字);//求绝对值
Math.ceil(数字);//向上取整,大于原值的整数
Math.floor(数字);//向下取整,小于原值的整数
Math.round(数字);//四舍五入
复习
[ ] 能够使用String类的构造方法创建字符串对象
String 对象名 = new String(“字符串内容”);
不这样用,一般直接赋值
[ ] 能够明确String类的构造方法创建对象,和直接赋值创建字符串对象的区别
直接赋值创建字符串对象,会将字符串放在heap的常量池中
而使用构造方法创建字符串对象会heap中new出对象再写入字符串
[ ] 能够使用文档查询String类的判断方法
对象名.equals(“内容”); 对象所存字符串与括号中字符串对比内容,返回boolean值,不区分大小写
对象名.equalsIgnoreCase(“内容”);区分大小写
[ ] 能够使用文档查询String类的获取方法
对象名.length();获取字符串长度
对象名.charAt(索引);获取索引处字符
对象名.indexof(字符);获取第一个出现括号内字符的索引
对象名.subString(开始索引,结束索引);截取从开始索引到结束索引-1的字符串,结束索引留空时,就是到字符串结尾
[ ] 能够使用文档查询String类的转换方法
对象名.toCharArray();将字符串转换为char类型
对象名.getBytes();将字符串转换为byte类型
对象名.replace(旧字符串,新字符串);使用新字符串替换旧字符串
[ ] 能够理解static关键字
在创建对象前就会创建的东西,可以是成员变量也可以是成员方法,可直接使用类名.静态成员/静态方法使用
[ ] 能够写出静态代码块的格式
static{代码块}
static静态代码块优先级最高,优于main运行
[ ] 能够使用Arrays类操作数组
Arrays.toString(数组名);将数组装换为字符串
Arrays.sort(数组名);将数组进行升序排序
[ ] 能够使用Math类进行数学运算
Math.abs(值);求绝对值
Math.ceil(值);向上取整,大于括号内值
Math.floor(值);向下取整,小于括号内值
Math.round(值);四舍五入