JAVA中常用几个类的用法

Java中最基本的类有Object类、String类、StringBuffer类、包装类(基本数据类型的包)、Math类、Random类、传统的处理日期/时间类、新的处理日期/时间类、BigDecimal类(上)

Object类

object类是所有类的祖先,是所有类的父类
所有类都继承了Object类的方法,其中有

  1. equals(Object obj) 比较方法
  2. notify()线程唤醒方法(唤醒单个线程)
  3. notifyAll() 唤醒等待池中的所有线程
  4. wait() 使线程进入等待状态
  5. hashcode() 返回对象的哈希码
  6. toString() 返回对象的字符串表示
  7. finalize()对象回收方法,当垃圾回收器准备回收该对象所占用的内存时,调用该方法。

以上是Object类中所有的方法,其中的常用的equals和toString是比较常用的方法,作为初学者在未学多线程编程时,未了解数据结构时,只要了解以及会运用这两个方法就足以了。equals是对象比较方法,一些类会覆盖这个方法就比如之后我们要说的String类。之后在讲到String类覆盖这个方法的时候,我会详细说明这个方法。toString方法同样在后面讲到Sting类时,也会详细讲解这个方法。

String类和StringBuffer类

String类是Java中的字符串类,有多种构造方法,并且还支持13种操作,

  1. 返回字符串长度。length
  2. 获取字符串上指定位置的字符。charAt()
  3. 复制指定字符串中指定的字符。getChars()
  4. 判断相等 equals和 equalsIgnore 忽略大小写判断是否相等(一会儿会详细说)
  5. 比较两个字符串首字符在Unicode码中的位置。compareTo()
  6. 查找字符,从前开始,从后开始。indexOf lastIndexOf()
  7. 附加字符。 concat()
  8. 求子字符串。subString()
  9. 字符串分离 spilt()
  10. 全部字符替换 replaceAll() 第一个字符替换 replaceFirst()
  11. 去字符串首尾的空格。trim()
  12. 将其他基本数据类型转为String类型 valueOf()
  13. 字符大小写转换 转换为大写toUpperCase() 转换为小写 toLowerCase()
    以上的所有方法均可在API查到用法,用法比较简单,除此之外,String类还有作为基本数据类型的方法,可以直接采用String str1+ String str2 方法将字符串合成在一起,同时也可以和其他基本数据类型一起运用。
    StringBuffer类是一个完整的类,没有任何的基本数据类型的特性,所以StringBuffer必须采用方法才能调用,但是他与String类有很多相似的方法,常用StringBuffer共有7种常用的基本方法,与String类有共同的方法有length(),toString(),charAt(), getChars(),subString(),这些方法与String类中的方法调用和作用是相同的,有几种不同的方法,添加新的字符串(append),向字符串中插入字符,StringBuffer类的操作与String类基本是相同的,但是也有不同的地方,这就是引入StringBuffer类的原因,众所周知,写程序要遵循极简原则,所以编程语言在设计的时候,不会出现具有相同作用的两个方法,这个也是如此,那么为什么要引入StringBuffer类呢?原因就是这个类在处理一些字符串问题中,时间复杂度和空间复杂度都比较小,最简单的说法就是运行起来快,而且处理一些问题是比较容易。StringBuffer表示字符串缓存,他与String相比,他是可变的,这个可变的可以这样理解,当我们对String类进行操作的时候,其实String对象没有发生变化,只是引入了一个创建了一个新的对象,并且将新的引用赋给了原来的对象,而StringBuffer并不是这样,他是真的变化了,比如在给一个对象做添加字符的操作中,这个对象在自身的基础上进行添加,并不是和第一个一样。所以StringBuffer对象占用的内存比较小,而且他还增加一个插入字符的操作,这就可以在实际应用中解决很多的问题。因为我们知道,无论是字符串还是数组,都是不能进行插入操作的。所以StringBuffer类是一个很好的工具。
    后面就是关于正则表达式:正则表达式是描述特定的字符串模式。有特定的规则来表示一些

我对String类的理解。

我认为String在Java中的作用就是Java中所有向外展示的数据都需要转化String类,相当于办公软件中的PDF一样,String是专门为输出而设计的类,所有每一个类中都会有toString方法,几乎每一种基本数据类型也有这个方法,然后String类还有调整输出形式的方法,String.format,可以根据你的所需将String对象的输出形式变成任何你想要输出的形式,最简单二进制输出,八进制输出,到复杂一点数据格式化。String都可以做到,所有很明显,String类就是转为为输出而设计的,几乎任何一个数据要输出都必须转换为String的形式。

String.format方法的各种形式输出
我们以多种形式的日常输出举例子

Date date=new Date();
System.out.println(String.format("%tc",date));

1.日期、时间格式化
在例子中%tc代表输出的形式,date代表时间
具体的输出形式,可以百度,这个不需要记,什么时候用的话,查一下表就可以了。这只是一部分
在这里插入图片描述

2.常规类型数据的格式化
同样的形式
在这里插入图片描述
然后就说一下关于equals方法
equals是在Object类定义的方法

public boolean equals(Object obj){
return this==obj;
}

这就是最开始定义的equals方法,他与“==”是相同的
表示两个对象是不是同一个对象,若是同一个对象则返回true否则返回false,这里又要提到String类对象的创建

String str1="hello world";
String str2=new String("hello world");

两种创建方法创建的对象是不同的,众所周知,String算是基本数据类型的一种类型,因为可以直接创建就像str1,所以这种创建的String拥有String的特性。str2算是具有对象的数据类型。

String str3="abc";
String str4="abc";

这种创建String类型时与创建基本数据类型相同,系统不会给str4分配新的内存,只是指向str3,

str3==str4;
str3.equals(str4);

前一个返回true,因为两个是相同的,但是第二个方法不一样了,因为在String类中覆盖了了equals方法,覆盖之后,方法内容就是比较两个对象内容是否相同

String str5=new String("abc");
String str6=new String("abc");
str5==str6;
str5.equals(str6);

此时创建的两个对象,在系统中占有两个内存空间,也就是说两个对象指向的不是同一个,所以第一个方法返回值为false,因为他们不是同一个对象,第二个方法返回true,因为他们的内容是相同的。
此时我们就能想到基本数据类型在判断是否相同时用的时什么方法。

包装类

包装类是将几种基本的数据类型包装起来的类,因为存在八种基本数据类型,所以就有八个包装类,每种基本数据类型对应一个包装类。为了与Java的面向对象思想对齐,每种基本数据类型也要有与之对应的对象。所以其实包装类也很容易理解。
包装类常用的几个方法就是不同类型的转换等等。
这里有一个面试被问频率较高的问题,就是什么是自动装箱和自动拆箱?
这个其实就是包装类对象和基本数据类型转换过程。

List<Integer> list=new List<Integer>();//集合类
list.add(2);//自动装箱
int i=list.get(0); //自动拆箱

list集合中应该要放入Integer类型对象,但是直接存入基本数据类型的 2,这时系统自动把2打包转为Integer类型对象,放到集合中这个过程就叫做自动装箱。
反过来就是自动拆箱,将Integer类型数据在集合中取出来,赋给基本数据类型,这个过程中要把Integer类型对象转为基本数据类型,存在一个拆包的过程,所以叫做自动拆箱。

Math类和Random类

Math类在Java中是提供数学运算方法的类。
其中的主要方法有

  • abs(),返回绝对值
  • ceil():返回大于等于参数的最小整数
  • floor():返回小于等于参数的最大整数
  • max():返回两个参数的最大值
  • min():返回两个参数的最小值
  • random():返回0.0到1.0之间的double类型的随机数
  • round():返回四舍五入的整数值
    等等,还包括我们用的三角函数,正弦函数、余弦函数、正切函数、对数函数、指数函数、根运算、幂运算都包含了。这个就是Math类的方法和作用。
    然后就是Random类,这个类是在random方法的基础上进行开发所得出的类。random方法返回一个大一0小于1的double类型的数,但是我们一般都用随机数的时候用的都是比较大的,所以我们需要对random方法进行其他操作来获取我们想要获得的随机数。但是Random类帮助我们解决了这个问题,Random类其实就是采用了random方法来获取我们想要的随机数。
    Random类提供了以下几个方法
  • nextInt():返回一个Int类型大于0的随机数,
  • nextInt(int n):返回一个Int类型大于0小于n的随机数
    同样的还有nextLong、nextFloat、nextDouble、nextBoolean方法,作用是相同的,只不过返回类型不同。

以上是我对这几个基本类的理解,均参考官方API文档,若用问题,可查看官方文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值