java.lang包

java.lang包细讲

开篇

在java中, java.lang包是特殊的一种,使用lang包不需要像其他包一样需要在程序写import关键字进行引入。系统会自动加载,所以我们可以直接使用其中的所有类。在这个类中所包含的类如下图:在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlOcAZbe-1591274451122)(F:\笔记\java_Study\包类解析\assets\lang包.jpg)]

在lang包中包含的类有Object类、包装类、字符处理类、线程类、错误和异常处理类、数学类、过程类、系统和运行类、操作类。

lang包类

01、Object类

Object类中,相关的方法就不用说了吧:这些都是要掌握的方法

还是简单提一下吧: 在Object类中有 clone()(浅克隆)、equals()(比较方法,一般重写)、hashCode()(用在集合的hash码)、getClass()(fianl方法,获取运行时类型)、wait()(多线程知识点,使当前线程睡眠)、notify()(唤醒线程,一般与synchronized和wait一起使用)、notifyAll()(作用也是唤醒线程,但唤醒的是所用线程)、toString()(转化为字符串)。

02、包装类

包装类的话:

原始数据类型包装类
byte(字节)Byte
char(字符)Character
int(整型)Integer
long (长整型)Long
float(浮点型)Float
double (双精度)Double
boolean (布尔)Boolean
short(短整型)Short

在了解这些包装的时候,其实重点了解他们在对象和基本类型的比较问题上(因为这里涉及到包装类 中Cache问题),具体的可以上网查查范围什么的,下面我就简单的介绍下缓存机制是什么和包装类中各Cache情况:

1、java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存、提高性能的功能,只有在自动装箱时有效

2、java的包装类中:Byte,Short,Integer,Long,Character使用static代码块进行初始化缓存,其中Integer的最大值可以通过java.lang.Integer.IntegerCache.high设置;Boolean使用static final实例化的对象;Float和Double直接new的对象没有使用缓存

03、字符处理类

String、StringBuffer、StringBuilder三者之间的关系是经常被用来提问的问题,而这三者的比较主要是从三方面去比较(不变性、线程安全、性能)。

字符串String中常用的提取方法

方法返回值功能描述
indexOf(int ch)int搜索字符 ch 第一次出现的索引
indexOf(String value)int搜索字符串 value 第一次出现的索引
lastIndexOf(int ch)int搜索字符ch最后一次出现的索引
lastIndexOf(String value)int搜索字符串 value 最后一次出现的索引
substring(int index)String提取从位置索引开始到结束的字符串
substring(int beginindex, int endindex)String提取beginindex和endindex之间的字符串部分
trim()String返回一个前后不含任何空格的调用字符串的副本

StringBuffer中的构造方法:

构造方法说明
StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
StringBuffer(CharSequence seq)构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符
StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

StringBuffer类的常用方法:

方法返回值功能描述
insert(int offsetm,Object s)StringBuffer在 offetm 的位置插入字符串s
append(Object s)StringBuffer在字符串末尾追加字符串s
length()int确定 StringBuffer 对象的长度
setCharAt(int pos,char ch)void使用 ch 指定的新值设置 pos 指定的位置上的字符
toString()String转换为字符串形式
reverse()StringBuffer反转字符串
delete(int start, int end)StringBuffer删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列
replace(int start, int end, String s)StringBuffer使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束

不仅就这些方法,其他的可以去参考下JDK文档。

有人有疑问了,是不是讲漏了一个字符串类StringBuilder?

其实这个类和StringBuffer差不多,里面的方法和StringBuffer基本相同,因为他们都是继承同一个接口,但只是StringBuilder是牺牲安全去换取性能,而StringBuffer是牺牲性能去换取安全的差别而已。

04、线程类

别看这里面就几个类而已,但学起来的话,这里是写不完的。故这里就简单的提一下。

Thread类是java.lang包下的一个很重要的类,他是继承自Runnable接口,里面的知识点就与今后你的高度有关了。

在Thread有很多常用的方法:

常用方法功能描述
static Thread currentThread()返回对当前正在执行的线程对象的引用。
long getId()返回该线程的标识符。
String getName()返回该线程的名称。
int getPriority()返回线程的优先级。
void interrupt()中断线程。
boolean isAlive()测试线程是否处于活动状态。
void join()等待该线程终止。
void join(long millis)等待该线程终止的时间最长为 millis 毫秒。
void join(long millis, int nanos)等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
void setDaemon(boolean on)将该线程标记为守护线程或用户线程。
void setPriority(int newPriority)更改线程的优先级。
static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
static void sleep(long millis, int nanos)在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
static void yield()暂停当前正在执行的线程对象,并执行其他线程。

想想就恐怖,不过这些知识点掌握起来还是可以的,学过操作系统之后来学习就更容易一点,学习这方面的时候,要注意: 实践+分析实践+分析!实践+分析

05、错误和异常处理类

这一部分,在往后学习中不会经常遇到,但在企业的时候是经常接触的,并且是自己去定义异常。

在java中,如果我们的程序中出现了不可挽回的错误(即代码编写错误等),这类的错误叫error错误,而由于JVM中发生的错误等,大多都是Exception错误。

这一类的话,可以去看看网上的,这里也不细究

06、数学类

在编程的时候,有时候我们需要用到一些数学上的知识点的时候,例如sin等,如果要自己去写的话,虽然可以去编写程序,但一直这样的话,太浪费时间了,故java中自己提供了一个Math类,进行一些数学操作。

方法返回值功能描述
sin(double numvalue)double计算角 numvalue 的正弦值
cos(double numvalue)double计算角 numvalue 的余弦值
acos(double numvalue)double计算 numvalue 的反余弦
asin(double numvalue)double计算 numvalue 的反正弦
atan(double numvalue)double计算 numvalue 的反正切
pow(double a, double b)double计算 a 的 b 次方
sqrt(double numvalue)double计算给定值的正平方根
abs(int numvalue)int计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
ceil(double numvalue)double返回大于等于 numvalue 的最小整数值
floor(double numvalue)double返回小于等于 numvalue 的最大整数值
max(int a, int b)int返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
min(int a, int b)int返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数
rint(double numvalue)double返回最接近 numvalue 的整数值
round(T arg)arg 为 double 时返回 long,为 float 时返回 int返回最接近arg的整数值
random()double返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

上面都是一些常用的方法,如果以后还会用到极坐标、对数等,就去查一查手册吧。

07、过程类

对于过程类,就以后在讲吧。

我不会告诉你,我也不太会的。

08、系统和运行类

也就是相当于C语言中的print语句一样,《Java 编程思想》一书中也有介绍到这些类,对于java他不像C语言一样,它没有格式化的输入和输出,但在后来java引进了一系列的格式化输入输出,在format类中,如果有需要的话,可以去了解这个类。

老规矩,不细讲。这里倒不是不会的问题,在《Java 编程思想》这里面讲的比我的详细,这里吊大家胃口,让大家学会自己去看书,并学会自己去解决知识的盲点。

09、操作类

对于java.lang包下的Class在反射的时候经常会接触到。

Class 类的实例表示正在运行的 Java 应用程序中的类或接口。在 Java 中,每个 Class 都有一个相应的 Class 对象,即每一个类,在生成的.class文件中,就会产生一个 Class 对象,用于表示这个类的类型信息。我们获取 Class 实例有三种方法:

利用对象调用 getClass()方法获取该对象的 Class 实例

使用 Class 类的静态方法 forName(String className),用类的名字获取一个 Class 实例

运用.class的方式来获取 Class 实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的 Class 实例

forName()这一方法可以与newInstance搭配去创建对象,具体的,可以去自行查阅书籍。

ng className)`,用类的名字获取一个 Class 实例

运用.class的方式来获取 Class 实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的 Class 实例

forName()这一方法可以与newInstance搭配去创建对象,具体的,可以去自行查阅书籍。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值