2021-06-06 Java学习笔记

194 常用API-Math

通过查看帮助文档发现Math没有构造方法,那怎么调用里面的方法或者量呢?注意到此时Math的方法和变量都是用static修饰,都是“共享的”,因此直接使用类名就可以调用变量和方法
在这里插入图片描述
个人:最后一个方法生成随机数,以前学的Random类应该也是可以完成这样的操作。

System类

System包含几个有用的类字段和方法,不能被实例化。
在这里插入图片描述

196 Object类的toString方法

内容:1.学习源码观看方式,如System.out.println(....);,鼠标选中println,右键,然后按图操作即可

在这里插入图片描述

在这里插入图片描述
3.如果定义了一个学生,那么创建对象s为学生类,直接System.out.println(s);,输出一串字符,通过观看源码发现字符的意义,即s如果不为null,返回的值相当于是s.toString,因此为了方便观看s的内容,直接重写toString方法。流程为:
1.在定义的学生类里右键,
2.出现菜单选择Generate,
3.然后选择toString()。
就会自动生成toString的重写方法。
在这里插入图片描述
这样以后System.out.println(s);,输出就不会是一串码了,而是s内部的数据。
以后这样的类内部最好把toString方法重写一下。由此也可以学到不是基本类型和String类型的对象,比如由类创建的对象却能直接输出内部内容的就是改写了toString方法。

197 Object的equals()方法

equals方法需要的参数是(object obj),但是用常常是字符串.equals(字符串),为什么可以这样用呢?
ANS:多态的向上转型

与上一条196同样的问题,如果想直接比较两个学生类的成员变量(姓名,年龄)是否全部相同,那么直接s1.equals(s2),比较的是两者的地址值,怎么快捷比较两者的具体内容是否相等呢?–重写方法equals(),与上一条相同,在generate菜单下选中equals() and hashCode();,再选择蓝标所示的IDEA Default然后一路next,finish即可。此时会同时生成equals()和hashCode(),如果不想要生成的hashCode删除即可。在这里插入图片描述
生成的代码以及解读(重在理解):

public boolean equals(Object o) {
    if (this == o) return true;//首先比较地址值是否相同,地址相同肯定是一个对象,内容肯定相等,直接返回true
    if (o == null || getClass() != o.getClass()) return false;//判断参数是否为null,和判断两个对象是否来之一个类。

    Phone phone = (Phone) o;//将Object o向下转型(多态那节的知识点)

    if (price != phone.price) return false;//比较price是否一样
    return brand != null ? brand.equals(phone.brand) : phone.brand == null;//比较姓名是否相同
}

总结:定义具体类的时候可以将toString和equals方法重写。
在这里插入图片描述

198 Arrays-冒泡排序

冒泡排序介绍:https://www.runoob.com/w3cnote/bubble-sort.html
冒泡排序特点:1.n个数据比较n-1次。
2.每排序一次下一次就可以少排一个数据

200 Arrays类

在这里插入图片描述
由Arrays类学习到工具类的设计思想:
1.成员用public static修饰(直接使用类名即可访问变量和方法)
2.构造方法用private修饰(防止外界创建对象)

即构造方法私有,成员方法静态
个人:对1的补充,成员方法使用public static进行修饰,方便共享。成员变量使用public static final修饰,加一个final防止外部类修改工具类定义的数值。

基本类型包装类–Integer

1.红标需要掌握
在这里插入图片描述

2.int的包装类Integer内部的两个常量值。
在这里插入图片描述
3.Integer的创建方法:(过时的方法也可以使用,只是不建议使用)
在这里插入图片描述
4.int类型的数据与String类型数据的转换:
个人感悟:在本节(203)的学习过程中学习到了一些查找帮助手册的一些窍门,在int→String的方法可以优先去String类里面找,在String→int的方法可以优先去int的包装类Integer里面寻找!!
以下是int和String类型转换的具体方法:
在这里插入图片描述

204 案例:对字符串中的数据进行排序

思路与及解析:
在这里插入图片描述
小技巧:如果忘记方法可以填写什么参数,在可以填写参数的地方按照ctrl+p即可。
新方法:按照某个固定字符(比如空格)分割字符串。具体为:String.split() 方法。

205 自动装修和拆箱

在这里插入图片描述
图片红字需掌握;
拓展:在图片举出的案例中,Interger i =100;过程中程序内部其实执行了Interger i =new Interger.valueof(100);,不过这个就叫手动装箱了,而按图片中那么写,就是自动装箱。

206 日期类-Date类

搜索Date,发现两个包里面都有Date类,本次学习的是util包下的。
在这里插入图片描述在这里插入图片描述
System.currentTimeMillis();返回的是运行到此语句时间与1970差距的毫秒,在程序开始和结束分别写一次然后作差可以计算程序的运行时间。而Date需要创建一个Date类。
直接sout(创建的Date类);,Date类内部应该是重写了toString方法,不会显示地址,而是显示设定的时间。

207 Date常用方法

在这里插入图片描述
这与System.currentTimeMillis();区别就是图片中的两个常用方法是可以修改创建的Date类的值的,而System那个语句是固定获取程序运行时间的与1972年的差值的。

日期类-SimpleDateFormat类

在这里插入图片描述
构造方法:
在这里插入图片描述
在这里插入图片描述
代码演示:
1.将Date数据按照给定的s1的模式格式化成字符串了。

        Date d1 =new Date();
        SimpleDateFormat s1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s1.format(d1));
        //输出结果为:2021年06月06日 21:00:05

2.将给定的字符串按照s1的模式解析成日期格式了。输入下列代码:

        SimpleDateFormat s2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String time ="1998年03月01日 16:16:16";
        Date d2 = new Date();
        d2 = s2.parse(time);

注意此时给的字符串的格式必须按照设定的解析(parse)的格式进行给定,否则程序将会运行异常!!

附加:其实对于代码块2会在parse处报错,提示:

未报告的异常错误java.text.ParseException; 必须对其进行捕获或声明以便抛出

先不对这个异常进行讲解,解决方案是按照系统提示或在错误处按下alt+enter,自动添加了一小块代码:
在这里插入图片描述

209 案例:日期工具类

可以观看视频,注意工具类的简历构造方法私有,成员方法静态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值