狂神说--javase08--常用类学习

java中的常用类其实吧,真的不用特意记,用的多了自然就会。学java还是得多看源码,多用,不用死记硬背,咔咔就是学,用就完了

狂神老师目前还没有推出次课,但是我可以自己去学了。


断更好几天了,我的天哪,因为最近我呀太忙了,因为5.1之后忙着上线还有新需求的迭代,一直没时间更新。

最近感慨也比较多吧,总共接触了3个项目。

  • 一个纯后端:提供java接口,在后台配置网关供前端调用。(这个项目比较简单,目前掌握50%)
  • 一个前后端:前后端不分离的项目,前端用的vue element ui.后端java,我改了一个前端页面,其实也不是特别难,只要肯学肯弄,就没什么难的。
  • 一个纯后端:这个项目其实也是提供接口,没什么难的

但是自己的基础知识还是太薄弱了,趁着最近这一周工作还能轻松些,接着学习下吧。


本身java中有那么多个类,但是我们没有必要一一学习。但是对于一些常用的类还是有必要学习下的,这样也不至于在最基础的代码上卡主。

之前开发需要将时间戳转换为Date类型,就被无情的卡住了。。。。。。后来还亏好心同事提醒。因此这些基础的东西是必知必会的!!!!


我把一些比较常用的记录一下。以下学习内容仅适合个人:

0.java.lang包

其实一些比较常用的类就是看java.lang包中的类,我们多多学习这个包下的类,这是java的基础。

1.Object类

这个类还蛮有意思的,我们一边学一边看源码。

可以看出所有的类都派生自Object类,Object类所在的包是java.lang。这个包下存放的都是java的系统类,是java中最基础的包,因此它是和jdk、jre在一起的。

从这里可以看到Object类的结构,这里可以看到很多常用的方法:equals() hashCode() toString()(这几个方法是经常需要重写的) 。也可以看到在Objet类中wait方法进行了重载。

这里明确在Object类中每个方法的作用。以后慢慢的用起来就记住了。

这里需要对 Class类有一个印象,在实际开发中有很多地方用到:获取类的字节码文件对象,写日志的时候经常用

 private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ScheduleService.class);

这里使用类名.class获取类的字节码文件对象。 JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象

2.String类

String类也是比较常用的,string类的定义。被final修饰的类是不可继承的,因此string类没有子类。

可以看到String类的属性value,是被final修饰的,因此说String类型的变量是无法修改的。

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {

   private final char value[];
}

String类中有很多常用的方法,没事可以看一下,但是还是不用记住,用的时候去查就ok。

还记得接口中的属性默认定义的是常量嘛,接口中的类默认定义的是抽象方法嘛  ,String类型的变量也是final的,因此如果要定义常量字符串:就上接口和String!!!

和其他类不同的是:String类创建对象是直接通过字面量的形式,当然也可以通过new。因此这块涉及到内存:字面量存储在字符串常量池,new的存储在堆中。

字符串常量池中不会存在内容相同的字面量,

3.StringBuilder类

这个类和String类的区别就是他的字符串是可变的,看看这个类也是被final修饰的。StringBuilder是线程不安全的,效率高。适用于单线程操作字符串缓冲区的大量数据,

public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
}

4.StringBuffer类

可变的字符串,是线程安全的,效率低。用于多线程操作字符串缓冲区的的大量数据

5.Math类

Math类还是比较常用的,Math类中有一些比较常用的方法。不用特殊记,用到的时候多查查,反复就会形成鸡肉记忆。Math类一般提供的都是静态方法。

看了下Math的源码,发现他也是一个final类,并且它的构造方法是私有的。如果类的构造函数声明为私有那么他是不能创建对象的,。

public final class Math {

    /**
     * Don't let anyone instantiate this class.
     */
    private Math() {}

    /**
     * The {@code double} value that is closer than any other to
     * <i>e</i>, the base of the natural logarithms.
     */
    public static final double E = 2.7182818284590452354;

    /**
     * The {@code double} value that is closer than any other to
     * <i>pi</i>, the ratio of the circumference of a circle to its
     * diameter.
     */
    public static final double PI = 3.14159265358979323846;

    /**
     * Returns the trigonometric sine of an angle.  Special cases:
     * <ul><li>If the argument is NaN or an infinity, then the
     * result is NaN.
     * <li>If the argument is zero, then the result is a zero with the
     * same sign as the argument.</ul>
     *
     * <p>The computed result must be within 1 ulp of the exact result.
     * Results must be semi-monotonic.
     *
     * @param   a   an angle, in radians.
     * @return  the sine of the argument.
     */
    public static double sin(double a) {
        return StrictMath.sin(a); // default impl. delegates to StrictMath
    }

}

6.Date类

这个类我理解应该还是很常用的,因为一般开发的时候都会有关于日期的东西。

Date这个类只需 要记住一些常用的即可。

1)构造方法
Date():以当前时间毫秒值创建Date对象
Date(long time):以指定的毫秒值创建Date对象
2)成员方法
long getTime():获取Date对象的毫秒值
setTime(long time):设置Data对象的毫秒值

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>
{
//无参构造函数
public Date() {
        this(System.currentTimeMillis());
    }
//有参构造函数
   public Date(long date) {
        fastTime = date;
    }


}

7.DateFormat类

Date类主键被废弃,DateFormat类登场,format类和dateformat类都继承自Object类,都是抽象类。SimpleDateFormat类是实现类。

1)构造方法
SimpleDateFormat():以默认模式创建对象
SimpleDateFormat(String pattern):以指定模式创建对象

常用模式
yyyy:年     MM:月    dd:日
HH:时    mm:分    ss:秒

2)常成员方法
String format(Date date):格式化
Date parse(String time):解析

8.Calendar类

这个类是一个抽象类,不能被实例化

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {
}

成员方法
static Calender getInstance():以默认时区和语言创建日历
int get(int field):获取指定字段的日历值
set(int field,int value):给指定的日历字段设置指定的值
set(int year,int month,int date):设置年月日
Date getTime():获取日历对象的日期
setTime(Date d):设置日历对象的日期
add(int field,int amount):对指定的日历字段添加指定的值
9.System类

这个类居然也是被final修饰,而且构造函数也是私有的。System类中一般常用的方法及属性:exit() gc() in out

public final class System {

    /** Don't let anyone instantiate this class */
    private System() {
    }

 public final static InputStream in = null;
public final static PrintStream out = null;

  public static void gc() {
        Runtime.getRuntime().gc();
    }

 public static void exit(int status) {
        Runtime.getRuntime().exit(status);
    }

  public static native long currentTimeMillis();
}

10.BigInteger和BigDecimal

BigInteger

Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的,最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。
java.math包的BigInteger可以表示不可变的任意精度的整数BigInteger提供所有Java的基本整数操作符的对应物,并提供java.lang.Math的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。
构造器

BigInteger(String val):根据字符串构建BigInteger对象

 BigDecimal

●一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类
BigDecimal类 支持不可变的、任意精度的有符号十进制定点数。
构造器

➢public BigDecimal(double val)
➢public BigDecimal(String val)

11.Class类 

1、Class类是什么
当Java虚拟机载入一个类的时候,它就会自动创建一个Class类的实例来表示这个类,并且是在生成.class文件时创建
2、获得实例的3种途径
(1)对象.getClass()获取该对象的Class实例
Class classObj = ClassName.getClass()
(2)Class.forName()
(3)类.class

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值