你真的了解java吗?java总结六
java冷知识:在方法中声明的类称为局部类(也属于内部类),局部类不仅能够访问包含它们的外部类,还可以访问局部变量。不过,可以被访问的局部变量必须被声明为final。
1.API:
1.object类:
作用:
- 一个类要么继承Object类,要么间接继承了Object类,Object类是java中的祖宗类
- Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法
在object类中,我们最常用到的两个api是equal和toString方法
官方给出的equal方法逻辑
- 先判断传进来的对象是不是自己
- 在判断这个对象是不是空以及是不是本类的类型(第一个getClass()省略this.也就是本类的意思)
- 然后就是判断每个属性的值是否相等。
细心的同学可能注意到了,这里的name判断的时候调用的是Objects.equals方法,而不是直接调用equals。
因为如果这里的name是一个null而没有做处理直接进行判断的话,则会抛出异常。而Objects.equals方法则进行了判断,避免了这种情况。
@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return id == student.id && age == student.age && Objects.equals(name, student.name);}
如果不重写toString,那么直接输出就会输出包名位置,以及地址等信息。
我们可以重写toString方法,来输出我们想要的信息
@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
2.StringBuilder:
作用:提高字符串的操作效率,比如拼接。修改等。
append()方法,参数几乎可以是各种类型
而且,StringBuilder支持链式编程。
public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("a").append(false).append(12);System.out.println(sb);}
StringBuilder只是帮我们来处理字符串,通过toString方法即可获得处理后的字符串。
StringBuilder的另一个常用方法reverse,反转字符串。
public class Builder {public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("1").append(2).append(3);sb.reverse().append("las");System.out.println(sb);}
}
3.Math类
常用的方法:
1.获取参数绝对值
2.向上取整
3.向下取整
4.四舍五入
5.获取两个int值中的较大值
6.返回a的b次幂的值
7.返回值为double的随机值,范围[0.0,1.0]
4.BigDecimal类:
double类型在进行运算时,往往会出现精度问题。
比如下列代码:
public class Builder {public static void main(String[] args) {Double a = 0.1+0.2;System.out.println(a);}
}
结果并不是0.3,那我们如何来解决这个问题呢?java给我提供了BigDecimal类去处理精度损失问题。
建议使用以下两种方式进行创建对象
一种是作为字符串类型传参,第二种是通过valueOf方法进行传参(java强制禁止使用BigDecimal(Double)构造器进行创建对象,可能存在损失精度的风险)
public class Builder {public static void main(String[] args) {BigDecimal decimal = new BigDecimal("0.1");BigDecimal decimal1 = BigDecimal.valueOf(0.2);System.out.println(decimal.add(decimal1));}
}
加减乘除方法:
public class Builder {public static void main(String[] args) {BigDecimal decimal = new BigDecimal("0.1");BigDecimal decimal1 = BigDecimal.valueOf(0.2);System.out.println("相加:"+decimal.add(decimal1));System.out.println("相减:"+decimal1.subtract(decimal));System.out.println("相乘:"+decimal.multiply(decimal1));System.out.println("相除:"+decimal1.divide(decimal));}
}
doubleValue()方法可以将BigDecimal类转化成double方法。
注:因为BigDecimal是做精度运算的,所以当我们算数除不尽的时候,则会抛出异常,这时我们需要做一步处理。
下列代码表示保留两位小数,第三位小数四舍五入。
decimal1.divide(decimal,2, RoundingMode.HALF_UP)
你真的了解java吗?java总结六相关推荐
- Java多线程闲聊(六):synchronized关键字
Java多线程闲聊(六):synchronized关键字 前言 这篇文章我会在博客置顶,为什么呢?因为,三篇引用的文章写得太好了,我害怕后面找不到,看不到,然后忘了! 让我想想,感觉昨天的前言把最近肚 ...
- 20155303 2016-2017-2 《Java程序设计》第六周学习总结
20155303 2016-2017-2 <Java程序设计>第六周学习总结 课堂笔记 高效学习法推荐 看视频学习(2h)→ 以代码为中心看课本,思考运行结果并验证(3h)→ 课后作业验证 ...
- 20172325 2018-2019-2 《Java程序设计》第六周学习总结
20172325 2018-2019-2 <Java程序设计>第六周学习总结 教材学习内容总结 本周学习第十章--树 1.什么是树 (1)树是一种数据结构,与之前学过的栈.队列和列表这些线 ...
- # 20155337 2016-2017-2 《Java程序设计》第六周学习总结
20155337 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 •串流(Stream): 数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出, ...
- 20145202马超 《Java程序设计》第六周学习总结
进程:是一个正在执行中的程序,每一个进程都有一个执行程序,该顺序是一个执行路径,或者说是一个控制单元. 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行. 一个进程至少有一线程. Java ...
- java二级考试历年真题6_2018年3月计算机二级考试JAVA试题及答案(六)
2018年计算机等级考试开考在即,小编在这里为考生们整理了2018年3月计算机二级考试JAVA试题及答案,希望能帮到大家,想了解更多资讯,请关注出国留学网的及时更新哦. 2018年3月计算机二级考试J ...
- Java开发者必备的六款工具
Java开发者必备的六款工具 摘要:对于初入行的Java开发人员来说,寻找合适的工具是困难的,并且是浪费时间的.而今天我们将列出六款Java程序员必备的工具,其中包括Notepad++.XML ...
- 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析
我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...
- 你真的以为你了解Java的序列化了吗
转载自 你真的以为你了解Java的序列化了吗 上一篇文章<Java对象的序列化与反序列化>中,简单介绍了Java中对象的序列化和反序列化的一些基础知识.看文那篇文章后,有小伙伴留言说:我终 ...
- 【Java】Java 对象头 真的是 32位 吗?
1.概述 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域: 对象头(Header) 实例数据(Instance Data) 对齐填充(Padding). 是真的吗?假的! 假的!!! ...
最新文章
- boost::mpi模块实现一个简单的点类,我们可以构建、添加、比较和 连载
- Teamtalk源码分析
- 定点化_mif文件生成
- STL中的关联式容器——set(集合)
- scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
- python2.7安装教程win7_win7下python2.7安装 pip,setuptools的正确方法
- Word VBA-图片操作汇总
- 【知乎问答】有哪些特殊的搜索引擎?
- 为什么要创建SRT?
- 开发一个类似美团的外卖小程序多少钱
- win10系统重装(无需u盘)(无需下载第三方软件)(绝对纯净版)(全网最简)
- 最热门的国人开发开源软件 TOP 50
- criterial查询
- 加拿大政府正式为IT项目管理的成本估计作出规定
- UNIAPP 怎么引入字体
- HDOJ 1282 回文数猜想
- 端智能在大众点评搜索重排序的应用实践
- labelImg 免命令安装(Windows)
- 作为一名网络工程师,分享下IT从业经验!
- python爬上去飞卢_我的文起点没签,飞卢签了,为什么?