Java基础09 String类 static Arrays类 Math类

01,String 概述和特点

预习:

字符串特点

1,字符串是String类的实例,String中包含了很多关于字符串的方法

2,字符串不能被改变,但是可以被共享

什么是共享,Python中好像也有共享

3,字符串实际上是一个字符数组

底层是使用字符数组实现的

 

 

用处:

1,字符串的处理方法,都用来干什么? -->正则表达式用来做爬虫或者数据分析

应该和正则一起学习,完成一个爬虫或者聊天机器人的功能

 

 

学习路线

1,创造字符串

2,使用字符串的方法

 

 

探索练习

1,字符串为什么不能改变

uploading.4e448015.gif转存失败重新上传取消

上面其实改变的是s1这个变量引用,引用的地址指向了另一个字符串"xyz"

 

字符串都是对象

特点:

1,一旦创建不会改变(内存示意图,本质上仅仅是变量指向了新的字符串)

2,字符串是可以共享的

3,字符串与其字符串数组等效,底层就是用字符数组实现的,(JDK9之后开始使用字节数组了)

细节:

在创建字符串的时候,会先去检查内存中是否存在这个对象,如果有就共享

 

02,String 构造方法

构造方法:

1,new String(); --> 相当于创建了""一个空字符串

2,new String(char[ ])

3,new String(byte[ ])

细节:

1,""与null的区别

内存中解释,一个有引用,是""; 后者是没有引用

 

03,String 判断方法 equals equalsIgnoreCase

细节:

1, == 与 equals的区别

前者是比较变量的值

后者比较的是引用中的值

==: 基本类型是比较的数据的值,引用类型比较的是地址值

 

04,String 构造方法创建和直接创建字符串的区别

有区别吗?

问题:

1,既然Java有缓冲字符串的作用,如何验证一下呢?

两个变量都指向相同的字符串内容,测试是否有相同的地址值

uploading.4e448015.gif转存失败重新上传取消

的确是有区别的

直接创建字符串会先检查缓存中是否有相同的字符串,没有才会创建,有的会就会将变量指向内存中那变量

构造方法创建字符串都会创建字符串

官方回答:

1,构造方法方式,每次创建字符串都是创建一个新的对象

2,直接赋值创建字符串每创建一个变量,都指向同一字符串

 

 

05,String 获取方法 length concat

长度: length,因为本质上就是一个数组,字符数组

中文字符串的长度

注意: length()是方法,数组的length是属性

拼接:

xxx.concat("yyy")

注意: 一旦创建,不会改变,xxx在拼接之后没有改变,这个方法返回了新的字符串

和"+"有什么区别

+和concat的区别:

1,+可以连接null, concat不可以

2,一个+就创建一个StringBuilder对象

 

06,String 获取方法 charAt indexOf

charAt: 索引位置上的值

indexOf: 指定字符在字符串第一次出现的位置

如果是多个字符,那么就是首位字符首次在字符串中出现的位置(前提是包含整个目标字符)

如果没有找到,就返回-1

 

区别:

指定位置,获取内容

指定内容,获取位置,返回首次首位出现的位置,没有找到就返回-1

 

07,String 获取方法 subString

截取子字符串:

subString(beginning): [ ]

subString(beginning,endding): [开始,结束),

注意: 截取字符串返回的才是效果

技巧: [开始,length),这里不会越界

 

08,String 转换方法 toCharArray getBytes

获取字符数组: toCharArray()

返回char[ ]

String(char[ ])

获取字节数组: getBytes

返回byte[ ]

String(byte[ ])

 

09,String 转换方法 replace

替换字符串中的字符:

replace(target,replacement): 前面是被替换的目标字符,后面是替换成的字符

用后者换前者

作用: 替换全部,例如在敏感词屏蔽中可以替换掉敏感词

 

10,String 分割方法 split

分割字符串: 根据指定的分隔符拆分字符串,返回字符串数组

分隔符会被去掉,保留其他部分到字符串数组中

 

11,String 分割方法 split 特殊的符号

特殊的分隔符: . 表示任意符号

split使用点号"."就会将任意字符都当做分隔符

 

 

12,String 练习

13,static 概述

类变量: 使用static修饰的成员变量,被所有对象共享

静态方法: 使用static修饰的成员方法,不用创建对象即可使用

 

14,static 修饰成员变量 类变量 被共享

使用场景:

多个变量共享的变量使用共享的

好处: 省内存

 

15,static 修饰成员方法 静态方法 类名调用

使用场景:

好处: 类名调用

工具类的工具方法

为什么不把所有方法都写成静态的?

静态方法无法访问普通成员变量,只能访问静态变量

静态方法只能访问静态成员(变量或方法)

注意:

静态访问中不能有this

 

16,static 修饰代码块 静态代码块 了解

是什么?

语法格式:

static{

执行语句;

}

写在成员位置

作用:

随着类的加载而执行,优先与main方法

 

类中只能用于定义属性和方法,不能用于执行,执行写在静态代码块或者方法里面

 

17,Arrays 静态方法和Collections的静态方法

Arrays:操作数组的工具类

成员方法:

toString

sort

 

Collections:

sort: 给集合排序

reverse: 反转

 

18,Math 静态方法

Math: 数学计算的工具类

静态方法:

绝对值:abs

向上取整: 省略小数变整数ceil

向下取整: 省略小数变整数floor

四舍五入: round(负数看绝对值来进行四舍五入,然后添加负号)

 

19,API查询方法

20,方法总结

ArrayList

add

remove

set

get

size

constains

String

判断

equals

equalsIgnoreCase

获取

length

concat

charAt

indexOf

subString

转换

toCharArray()

getBytes()

replace()

分割

split()

Scanner

nextint()

next()

nextDouble

Arrays

toString()

sort()

Collections

sort()

reverse()

Math

Random

nextInt()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

能力工场小马哥

如果对您有帮助, 请打赏支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值