String类、static、Arrays类、Math类

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(值);四舍五入

猜你喜欢

转载自blog.csdn.net/qq_38353993/article/details/82016915