怎么学Java程序
作者:adminjiang发布时间:2021-07-06分类:计算机教程浏览:548
Java的广泛应用,造就了Java工程师的辉煌年代,在所有程序员中,Java开发工程师就占据20%的比例,使其在软件工程师的领域里独占鳌头!Java开发工程师的也相对较高,因为也吸引了更多人都来加入Java数据开发的行列之中。今天小编给大家快速扫盲一下Java基础指南,让你了解Java,知道怎么学java程序!
一、Java基本概念
JVM:java虚拟机,负责将编译产生的字节码转换为特定机器代码,实现一次编译多处执行;
JRE:java运行时环境,包含了java虚拟机jvm,java基础类库。是使用java语言编写的程序运行所需要的软件环境;
JDK:java开发工具包,是编写java程序所需的开发工具。JDK包含了JRE,同时还包含了编译器javac,调试和分析工具,JavaDoc。
二、Java是如何编译和执行的?
上图表示了Java代码是怎么编译和加载的。
从Java源码开始到javac程序处理后得到类文件,这个文件中保存的是编译源码后得到的Java字节码。类文件是Java平台能处理的最小功能单位,也是把新代码传给运行中程序的唯一方式。
新的类文件通过类加载机制载入虚拟机,从而把新类型提供给解释器执行。
三、Object的重要方法
有一种类,定义了很多种有用的方法,还可以根据需求重写这些方法,它就是java.lang.Object类
1、toString方法
toString方法的作用是返回对象的文本表示形式。连接字符串或使用System.out.println等方法时,会自动在对象上调用这个方法。给对象提供文本表示形式,十分利于调试或记录日志,而且精心编写的toString方法还能给报告生成等任务提供帮助
Object类中的toString方法返回的字符串由对象所属的类名和对象的十六进制形式哈希码(由hashCode方法计算得到,本章节稍后会介绍)组成。这个默认的实现方式提供了对象的类型和标识两个基本信息,但一般并没什么用。
2、equals方法
==运算符测试两个引用是否指向同一个对象(比较两个内存单元的内容是否一样)。如果要测试两个不同的对象是否相等,必须使用equals方法。任何类都能覆盖equals方法,定义专用的相等比较方式。Object.equals方法直接使用==运算符,只有两个对象是同一个对象时,才判定二者相等。
很多类以及自定义类的equals方法都需要重写,是需要根据场景与需求来定制的。JDK自带的许多类往往都是:
对比一些简单的属性值
再对比复杂的属性值or对比业务上最快能区分对象的值
再对比其他的值or对比地址、长度
主要为了将那些不匹配的情况尽快排除
3、hashCode方法
Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。
此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;
如果存在该hashcode值,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了。
另外注意,默认的hashCode会发起native调用,如果用hashCode对两个对象对比,会导致开销增大。
hashcode方法的作用:
只要覆盖了equals方法,就必须覆盖hashCode方法。hashCode方法返回一个整数,用于哈希表数据结构。如果两个对象经equals方法测试是相等的,它们就要具有相同的哈希码。
不相等的对象要具有不相等的哈希码(为了哈希表的操作效率),这一点很重要,但不是强制要求,最低要求是不相等的对象不能共用一个哈希码。为了满足最低要求,hashCode方法要使用稍微复杂的算法或位操作。
Object.hashCode方法和Object.equals方法协同工作,返回对象的哈希码。这个哈希码基于对象的身份生成,而不是对象的相等性。(如果需要使用基于身份的哈希码,可以通过静态方法System.identityHashCode获取Object.hashCode方法的返回值。)
4、hashCode和equal方法
hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
如果两个对象相同,就是适用于equals(java.lang.Object)方法,那么这两个对象的hashCode一定要相同;
如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object)方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们"存放在同一个篮子里"。
5、Comparable::compareTo方法
如果一个类实现了Comparable接口,就可以比较一个实例是小于、大于还是等于另一个实例。这也表明,实现Comparable接口的类可以排序。
因为compareTo方法不在Object类中声明,所以由每个类自行决定实例能否排序。如果能排序就定义compareTo方法,实现实例排序的方式。
compareTo方法返回一个int类型的值,这个值需要进一步说明。如果当前对象(this)小于传入的对象,compareTo方法应该返回一个负数;如果两个对象相等,应该返回0;如果当前对象大于传入的对象,应该返回一个正数。
6、clone方法
Object类定义了一个名为clone的方法,这个方法的作用是返回一个对象,并把这个对象的字段设为和当前对象一样。clone方法不常用,原因有两个。
其一,只有类实现了java.lang.Cloneable接口,这个方法才有用。Cloneable接口没有定义任何方法(是个标记接口),因此若想实现这个接口,只需在类签名的implements子句中列出这个接口即可。
其二,clone方法声明为protected,因此,如果想让其他类复制你的对象,你的类必须实现Cloneable接口,并覆盖clone方法,而且要把clone方法声明为public。
clone方法很难正确实现,而副本构造方法实现起来更容易也更安全。
7、finalize方法
一种古老的资源管理技术叫终结(finalization),开发者应该知道有这么一种技术。然而,这种技术几乎完全废弃了,任何情况下,大多数Java开发者都不应该直接使用。只有少数应用场景适合使用终结,而且只有少数Java开发者会遇到这种场景。如果有任何疑问,就不要使用终结,处理资源的try语句往往是正确的替代品。
终结机制的作用是自动释放不再使用的资源。垃圾回收自动释放的是对象使用的内存资源,不过对象可能会保存其他类型的资源,例如打开的文件和网络连接。垃圾回收程序不会为你释放这些额外的资源,因此,终结机制的作用是让开发者执行清理任务,例如关闭文件、中断网络连接、删除临时文件,等等。
终结机制的工作方式是这样的:如果对象有finalize方法(一般叫作终结方法),那么不再使用这个对象(或对象不可达)后的某个时间会调用这个方法,但要在垃圾回收程序回收分配给这个对象的空间之前调用。终结方法用于清理对象使用的资源。另外注意,这是一个实例方法。而在类上,没有等效的机制。
以上就是广州北大青鸟java培训机构的小编针对“怎么学Java程序?Java基础指南”的内容进行的回答,希望对大家有所帮助。
- 上一篇:Java大数值转换
- 下一篇:学习Java编程如何入门?
相关推荐
- 清远信息:2024年广清杯清远南粤家政技能大赛举行决赛|||计算机培训机构
- 汕尾信息:陈良川带队到汕尾技师学院调研|||计算机职业技能培训班
- 东莞信息:凤岗凤岗镇组织召开社保参保缴费及劳动用工政策宣讲会|||计算机软件培训学校
- 阳江信息:2024年度注册城乡规划师职业资格考试的合格标准是怎样的?|||计算机软件培训学校
- 阳江信息:职业技能提升补贴对象有哪些?|||大学生计算机培训学校
- 清远信息:清远市首家社保服务合作网点在清城区举办启动仪式|||计算机职业技能培训班
- 汕头信息:招聘658名中高端人才!2024年汕头市引进中高端人才专场招聘会举行|||北大青鸟计算机培训中心
- 东莞信息:广东省社保智能经办现场会在东莞召开|||大学生计算机培训学校
- 东莞信息:东坑镇举办2024年重点群体系列招聘活动|||计算机职业技能培训班
- 东莞信息:万江万江街道成功举办第四届粤菜师傅烹饪技能竞赛|||广州计算机编程培训
- 计算机教程排行
-
- 1汕头信息:“公共就业服务进校园”粤东专场在汕头大学举行|||计算机网络培训学校
- 2江门信息:构建和谐劳动关系优化提升营商环境江门市开展推进新时代和谐劳动关系创建活动|||广州学电脑培训学校
- 3汕头信息:2024年广东省公共就业服务进校园粤东片区专场活动诚邀各用人单位参会|||广州计算机编程培训
- 4广州中考成绩公布,高中阶段学校录取控制分数线公布,普高最低控制线502分
- 5清远信息:校企双向奔赴清远市人社部门携企赴省内外高校招才引智|||广州计算机编程培训
- 6江门信息:工伤保险缴费误区:最低工资非缴费基准,违规用人单位将面临法律风险!|||计算机软件培训学校
- 7惠州信息:2024年第一季度惠州人力资源市场供求情况|||北大青鸟计算机培训中心
- 8惠州信息:“惠州市就业驿站巡礼”之惠阳新圩站|||大学生计算机培训学校
- 9汕尾信息:世界技能大赛获奖选手全省巡回宣讲交流活动走进汕尾|||电脑计算机编程培训学校
- 标签列表
-
- Java (3694)
- 北大青鸟 (3713)
- 软件开发 (3613)
- JAVA (3413)
- UI设计入门 (2093)
- 惠州北大青鸟 (4375)
- 惠州IT培训 (2558)
- UI设计培训 (2090)
- 惠州UI设计培训 (2095)
- 惠州UI设计培训学校 (2090)
- 惠州计算机软件培训 (6260)
- 惠州计算件软件开发 (6260)
- 惠州计算机软件基础 (6261)
- 惠州计算机JAVA培训 (3574)
- 惠州计算机Java软件开发 (3620)
- 惠州计算机JAVA软件开发 (4645)
- 惠州计算机JAVA软件开发学校 (3338)
- 惠州计算机Java软件开发培训 (3338)
- 北大青鸟IT计算机学校 (5048)
- 北大青鸟IT软件学校 (5062)
- 北大青鸟IT学校 (5059)
- 惠州计算机UI设计软件开发 (2088)
- UI设计基础教程 (2088)
- UI设计是什么 (2088)
- UI设计教程 (2088)
- 网站分类
-
- 计算机教程
- 计算机入门
- 职业学校
- 新闻动态
- 专业课程
- 热门技术
- SEO
- 培训教程
- windows
- linux教程
- 系统集成
- 网站开发
- Html5
- 办公软件
- 师资力量
- 热点问答
- 联系我们
- 计算机学校
- 惠州计算机学校
- 河源计算机学校
- 广州计算机学校
- 深圳计算机学校
- 湛江计算机学校
- 佛山计算机学校
- IT计算机培训信息
- 设计专业
- UI
- 影视特效
- 游戏动漫设计
- Photoshop
- AI设计
- 软件教程
- Java技术
- C语言/C++语言培训
- C#
- Python技术
- PHP
- 数据库
- SQL Server
- 网络教程
- 网络安全
- 网络营销
- 软件专业
- 大数据专业
- 前端开发专业
- 软件测试专业
- Python专业
- 软件实施
- 珠海计算机学校
- 初中生学什么好
- 计算机认证
- 文章归档
-
- 2024年11月 (14)
- 2024年10月 (32)
- 2024年9月 (29)
- 2024年8月 (68)
- 2024年7月 (59)
- 2024年6月 (43)
- 2024年5月 (48)
- 2024年4月 (80)
- 2024年3月 (65)
- 2024年2月 (54)
- 2024年1月 (25)
- 2023年12月 (12)
- 2023年11月 (73)
- 2023年10月 (134)
- 2023年9月 (34)
- 2023年8月 (3)
- 2023年7月 (3)
- 2023年6月 (12)
- 2023年5月 (30)
- 2023年4月 (72)
- 2023年3月 (11)
- 2023年2月 (34)
- 2023年1月 (37)
- 2022年12月 (78)
- 2022年11月 (359)
- 2022年6月 (1193)
- 2022年5月 (570)
- 2022年4月 (1567)
- 2022年3月 (982)
- 2022年2月 (54)
- 2022年1月 (182)
- 2021年9月 (308)
- 2021年8月 (1704)
- 2021年7月 (2423)
- 2021年6月 (1806)
- 2021年5月 (1569)
- 2021年4月 (1380)
- 2021年3月 (1255)
- 2021年2月 (709)
- 2021年1月 (1521)
- 2020年12月 (3626)
- 2020年11月 (1646)
- 2020年10月 (1046)
- 2020年9月 (592)
- 最近发表
-
- 清远信息:2024年广清杯清远南粤家政技能大赛举行决赛|||计算机培训机构
- 汕尾信息:陈良川带队到汕尾技师学院调研|||计算机职业技能培训班
- 东莞信息:凤岗凤岗镇组织召开社保参保缴费及劳动用工政策宣讲会|||计算机软件培训学校
- 阳江信息:2024年度注册城乡规划师职业资格考试的合格标准是怎样的?|||计算机软件培训学校
- 阳江信息:职业技能提升补贴对象有哪些?|||大学生计算机培训学校
- 清远信息:清远市首家社保服务合作网点在清城区举办启动仪式|||计算机职业技能培训班
- 汕头信息:招聘658名中高端人才!2024年汕头市引进中高端人才专场招聘会举行|||北大青鸟计算机培训中心
- 东莞信息:广东省社保智能经办现场会在东莞召开|||大学生计算机培训学校
- 东莞信息:东坑镇举办2024年重点群体系列招聘活动|||计算机职业技能培训班
- 东莞信息:万江万江街道成功举办第四届粤菜师傅烹饪技能竞赛|||广州计算机编程培训