导航
课程首页
  • PM-Summit 全球产品经理大会云会员
  • SDCon 全球软件研发技术大会云会员
  • ML-Summit 全球机器学习技术大会云会员
  • C++性能优化高端培训
  • AI全栈开发实战营
精品课 极客时间

AI 搜索

登录
登录后您可以:
  • 复制代码和一键运行
  • 与博主大V深度互动
  • 解锁海量精选资源
  • 获取前沿技术资讯
立即登录
会员中心
消息
历史
创作中心
创作
学习中心
成为讲师

核心Java程序设计技术 对Java基本技术介绍(An Introduction to Java) Java在各种语言中的排名(Java Rank)

核心Java程序设计技术
共335节 1371人在学 课程详情
课程目录
讨论留言
  • 对Java基本技术介绍(An Introduction to Java)

    • 开篇介绍(Getting Started)
    • Java在各种语言中的排名(Java Rank)
    • Java平台的特征(Java Platform)
    • 作者对Java的评价(Flack to Author)
    • Java历史(Java History)
    • 对Java的一些误解(The Misconceptions about Java)
  • Java编程环境(The Java Programming Environment)

    • JDK,JRE和Server JRE(JDK, JRE and Server JRE)
    • Java集成开发环境(Java IDEs)
    • 建立Java开发环境(Java Programming Environment)
    • Java版本选择(Java Versions)
    • JDK安装
  • Java基础编程结构(Fundamental Programming Structures in Java)

    • 第一个Java程序(The First Java Program)
    • 运行第一个Java程序(Running the First Java Program)
    • Java数据类型(Java Data Types)
    • 浮点数和字符数据类型(float and char)
    • 变量命名(Variables Naming)
    • 变量初始化(Variables Initialization)
    • Java常量(Java Constants)
    • 为多个方法服务的常量(Constants for Multiple Methods)
    • 数据类型转换(Data Types Conversion)
    • 组合操作符(Compound Operators)
    • 位操作符(Bitwise Operators)
    • 操作符总结(Operators Summary)
    • Java字符串(Java String)
    • 字符编码单位和编码值(Code Units and Code Points)
    • 字符串应用程序接口和字符输出控制台(String API snad Humble Console))
    • 输出格式控制(Formatting Output)
    • 时间和文件输入输出(Time and File I/O)
    • 流程控制基本概念(Introduction to Control Flows)
    • 条件语句(Conditional Statements)
    • while和do while循环语句(while and do while loops)
    • for循环(for loop)
    • switch语句(switch statement)
    • break和continue语句(break and continue statements)
    • 数组的基本概念(Introduction to Arrays)
    • 对数组的存取(Accessing Arrays)
    • 复制数据(Array Copying)
    • 多维数组(Multi-Dimensional Arrays)
    • 锯齿状数组(Ragged Arrays)
  • 对象和类(Objects and Classes)

    • 面向对象程序设计基本概念(Object-Oriented Programming)
    • 对类的理解(Introduction to Classes)
    • 对象的基本概念(Introduction to Objects)
    • 类之间的关系(Class Relationships)
    • 使用已有类编程(Using Predefined Classes)
    • 理解对象变量概念(Object Variables)
    • 对象的改写和只读方法(Mutators and Accessors)
    • 对日历类编程(Programming with Calendar)
    • 编写第一个类(Writing Your First Class)
    • 对类的详细解刨(Dissecting Classes)
    • 对空引用(空对象变量)编程(Working withh Null References)
    • 封装的价值(Benefits of Encapsulation)
    • 最终数据成员(Final Fields)
    • 静态数据成员(static fields)
    • 静态工程方法(Static and Factory Methods)
    • 方法的参数(Method Parameters)
    • 方法的实参和形参调用(Calling by Value or by References)
    • 构造对象(Object Construction)
    • 初始化组合语句(Initialization Blocks)
    • 静态初始化组合语句(Static Initialization Blocks)
    • 销毁对象(Object Destruction)
    • 包的基本概念(Packages)
    • 包的存取权限(Package Access)
    • ant开发环境(ant Development Environment)
    • 在Ubuntu上设置ClassPath(Set ClassPath on Ubuntu)
    • 在Ubuntu上安装ant(Install ant on Unbuntu)
    • 类设计总结(Class Design Summary)
  • 继承(Inheritance)

    • 继承的基本概念(Introduction to Inheritance)
    • 子类和方法改写(Subclasses and Method Override)
    • 子类的构造方法(Subclass Constructors)
    • 继承的层次结构(Inheritance Hierarchy)
    • 多态的基本概念(Polymorphism)
    • 多态运行时可能产生的错误(Polymorphism Runtime Error)
    • 最具体方法调用原则(Most Specific Method Calling Rule)
    • 兼容返回类型(Covariant Return Types)
    • 静态方法是否可以改写?(Static Method Overriding)
    • 最终类、最终方法和强制转换(final classes, final methods, cast)
    • 抽象的基本概念(Abstraction)
    • 抽象类和抽象方法(Abstract Classes and Methods)
    • 是否可以生成抽象类实例?(Abstract Instances are Allowed?)
    • 保护存取权限(Protected Access)
    • 保护存取方法(Protected Methods)
    • 最顶端基础类(Object Class)
    • 改写equals方法(Overriding equals)
    • hashCode方法(hashCode Method)
    • 改写hashCode方法(Overriding hashCode Method)
    • 改写toString方法(Overriding toString Method)
    • 范型化的ArrayList(Typed Array List)
    • 对象包裹(Object Wrappers)
    • 传递对象包裹(Passing Object Wrappers)
    • 枚举类型(Enumerated Types)
    • 反射的基本概念(Introduction to Reflection)
    • Class类型(Class Type)
    • 动态获得类的实例(Getting Instances Dynamically)
    • 对资源的处理(Processing Resources)
    • 动态分析类(Analyzing Classes Dynamically)
    • 动态分析对象(Analyzing Objects Dynamically)
    • 用反射技术高动态处理数组(Reflective Arrays)
    • 动态调用方法构造方法(Invoking Arbitrary Methods Constructor)
    • 反射的问题(The Problems of Reflection)
  • 接口、Lambda表达式和内部类(Interfaces, Lambda Expressions and Inner Classes)

    • 接口是面向对象的延伸(Introduction to Interfaces)
    • 接口的基本概念(Interface Concept)
    • 接口就是抽象类(Interfaces are Abstract Classes)
    • 接口的属性(Interface Properties)
    • 静态技术对面向对象风格的破坏(Bad Practice of Static)
    • 接口中定义静态方法(Static Methods in Interfaces)
    • 接口中的默认方法(Default Methods in Interfaces)
    • 解析接口默认方法冲突(Resolving Default Methods Conflicts)
    • 接口和回调(Interfaces and Callbacks)
    • Comparator和clone(Comparator & clone)
    • 浅复制和深复制(Shallow Copy & Deep Copy)
    • Lambda表达式基本概念(The Concept of Lambda Expression)
    • Lambda表达式各种形式(The Details of Lambda Expressions)
    • 函数接口基本概念(Functional Interfaces)
    • Java内置的函数接口(Built-In Functional Interfaces)
    • 内置函数接口:Supplier, Function(Supplier, Function)
    • 方法引用(Method References)
回复
切换为未回复评论
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
    轻敲空格完成输入
    • 显示为
    • 卡片
    • 标题
    • 链接

    反馈

    播放页问题反馈
    视频学习中有任何产品建议都可由此反
    馈,我们将及时处理!

    课时介绍

    Java在各种语言中的排名(Java Rank)

    课程介绍

    《Core Java》介绍和我的课程计划

     

    李冰

    Email: bing.li@asu.edu

    WeChat: libertymama

    2021年4月15日

     

    这是我第一次通过录屏的方式讲授主流程序设计技术。从今年二月底至今,我已经录制了105讲52.5小时的视频课程。通过这段时间的工作,我认为借助互联网强大的传播能力,这种新型教育方式完全具备超越传统实体模式的巨大优势,一定会成为未来教育的发展趋势。我会积极投入到这项事业当中,尽我所能提供更多高质量在线教学课程。

     

    一、本课程内容

     

    本课程将以Cay Horstmann的经典著作《Core Java》(第11版,2019年)为蓝本面向广大程序设计爱好者以及专业人员讲授基础Java程序设计技术。对于主流程序设计语言的教学,教材的选用对教学效果具有决定意义。我虽然有大量Java语言开发经验,但并没有时间和精力按照我自己的理解写一部教材。在这种情况下,不妨在现有资料中做出恰当选择。在长期Java程序开发过程中,我收集的各种Java程序设计书籍超过50部。它们包括基础技术、设计模式、并发技术、数据处理、网络通信、性能优化、代码测试以及高级技巧等多个方面。通过对这些书籍的比较,我认为《Core Java》是全面介绍Java技术的经典教材。它篇幅宏大,对Java标准版(Java Standard Edition – JSE)大大小小各种问题做了细致入微的介绍。对学习者来说,它无疑是众多介绍Java基础技术书籍中的最佳选择。

     

    为了方便学习者掌握本书,我对全书内容进行了摘要并编纂成幻灯片。在这个准备过程中,即使作为拥有大量程序设计经验的我来说,我也发现了我对一些细节认识的模糊,有的甚至从来没有接触过。事实上,这些细节对于我们提高程序质量是大有裨益的。作为基础程序设计技术的经典之作,本书除了有翔实完整的描述外,还包括大量具有充分说服力的程序示例。这体现了计算机科学作为当代最重要的科学分支之一所独有的理性诉求。为了使学习者更深入了解每一项技术,我还额外增添了很多程序示例,更加丰富了本课程的内容。这些示例使得全书所有论述都是建立在代码支持的基础上,成为学习Java程序设计技术最坚实的保证。

     

    还有一点我需要说明的是,作为本课程的主讲者,我并不是简单地照本宣科。根据我的研发和教学经验,对程序设计这样一门复杂技术来说,主讲者以往和当前所从事的研发工作对讲课质量有着至关重要的影响。我会把我在研发中的实际体会融入在整个讲课过程中。对所有重要技术,除了清晰阐述原作者观念以外,我会提供我个人的评价供学习者参考;同时,我还会收集其他资料作为辅助,使得对特定技术的解释更加充分。通过多角度的观察体验,促使学习者全面透彻理解Java语言。我认为这种个性多元的教学方式是帮助大家掌握程序设计的关键所在。

     

    由于本书的庞大容量,我还没有足够时间完成全书的录制。我会坚持完成所有课程,估计在六月中会完成第一卷全部十二章内容;在八月底完成第二卷的录制。保守估计,完成后全部幻灯片页数会超过3,000页;程序示例个数超过700个;全部代码程序会超过15,000行;全部视频课程时长至少会达到150小时,即300讲。当前,我已经完成本书第一卷前五章和第六章部分内容的录制,现在共有105讲(52.5小时)的视频,幻灯片达到1,222页。其中包括212个程序示例,共5,130行代码。在完成本书的全部录制之后,本课程将成为国内全网范围内时间最长和内容最丰富的Java基础技术视频教材。

     

    当然,《Core Java》这本书也有它的不足。在全面覆盖Java标准版的同时,对一些重点问题的介绍深度上有欠缺。这对于一部力图囊括所有Java基础技术的教材来说也在所难免。为了弥补这个不足,我将在其他课程中予以弥补。这些课程也同样是基于知名经典著作进行介绍。我的初步计划涉及的著作包括:Steven John Metker的《Design Patterns Java Workbook》、Brian Goetz等的《Java Concurrency In Practice》、Elliotte Rusty Harold的《Java Network Programming》、Charlie Hunt和Binu John的《Java Performance》、Ira Forman和Nate Forman的《Java Reflection in Action》以及Maurice Naftalin和Philip Wadler的《Java Generic and Collections》。另外,我还计划把最新出版的其他重要英文程序设计专著在不侵犯版权的前提下,以视频方式呈现给大家。

     

    二、本课程的理念

     

    一项事业一定会有它的理想。程序设计的理想当然是能够完成伟大软件作品。

     

    我们虽然都会在现实中不得不做出一些妥协,但理想总是唯一能够激发我们最大创造力的催化剂,它同样是带给我们最大快乐的源泉。我们也许在不断降低曾经的理想维度,但我们也同时都会在人生每一个寂静时刻扪心自问深刻反省。那些对我们自己灵魂发出的询问,就是我们不会屈服的个性展示。换句话说,面对理想时,我们自始自终都有来自内在天赋的支持。

     

    当然,除了我们的天赋,为了理想,我们同样需要付出巨大的劳动。这些劳动不仅仅是学习和研发过程的坚持,更多的还是抵御外在环境对我们理想意想不到的干扰。其实,无论是否有那些干扰,在外人看来艰辛的劳动对于拥有理想的我们永远是最大的快乐。

     

    对于程序设计来说,我个人伴着理想和辛勤劳动走了很长的路。即使如此,我只能说我对程序设计略知一二,甚至对做出高质量程序的解决之道还有些迷惑了。但我的这些付出,至少使我坚信没有任何灵丹妙药可以实现所谓“在零基础上几日登天”,我也不认为这样做程序的人会真正快乐。事实上,理想只会离这种模式的程序设计更远。

     

    三、我的经验

     

    作为本课程的主讲者,我应该具备一些基本素质。我希望我的经验能够得到各位的认可。

     

    我现有程序代码量达到1,300,000行,其中Java有950,000行,其他语言有350,000行。至少,我在我的人际圈内没有发现超过这个数目的人。

     

    此时此刻,我还在进行两个重要软件项目的研发。第一个是《新万维网》。它是对传统万维网(WWW)的重大改进。当前版本持续开发超过十年,基础层已经建立,我正在努力修改新版界面。我认为这个产品在学术和市场两个方面都会有很好前景。这个项目现在拥有代码行数882,224。从这个角度看,很可能是我国学界最大的软件研究项目。

     

    另一个项目是《GreatFree: 面向互联网环境的通用分布式程序设计技术》。通过我的大量对比,这是国际学界在互联网环境下第一个具备通用开发能力的程序设计技术。尽我所知,我国在程序设计领域的贡献很少,我的这个成果具备首创价值。我正在把它以新的语言形式展现出来。这应该是我国在计算机领域贡献的第一个程序设计语言。现有成果已经开源,大家可以从GitHub上找到,链接是:http://github.com/greatfree/wind。

     

    我当前还在大学任教。我在国际知名企业也有一些工作和实习经验。我曾经工作和实习过的机构包括:北京大学、西安工业大学、IBM研究中心(纽约)和贝尔实验室(北京)等。我还曾在美国亚利桑那州立大学获得过计算机科学博士学位。

     

    四、英文问题

     

    本课程的教材和幻灯片全部使用英文。英文是科技领域的官方语言,所有最新科技成果都是以英文方式呈现的。随着互联网技术的广泛普及,通过网络我们可以轻易获得足够多的英文资料。这对提高我们的程序设计技术和能力有极大帮助。另外,我认为当前大学普遍存在专业教育和英文教育割裂的现象,这是非常荒唐的。对于母语非英文的人来说,通过英文学习专业是掌握英文最佳甚至是唯一可行的学习方式。英文对于程序设计的帮助是决定性的。寻找一个编程中具体问题的答案,英文搜索结果要远好于中文。对于程序设计人员,英文还有更特别的意义,毕竟程序是英文写的。英文差,完全会导致程序质量大幅下降。最后,我着重需要强调的是,英文能够培养一个人科学理性的思维能力,对提高程序质量有着潜移默化的推动作用。

     

    我多年在大学的教学中一直采取以英文学习专业的方式。实践告诉我,这种方式是成功的,普遍受到学生欢迎。我在我任教过的大学总是最受欢迎的老师之一,这和我的英文教学方式分不开。另外,在我的视频课程中,我对每一张幻灯片都有详细的中文口语解释和大量的程序示例。我认为英文不仅不会影响学习质量,反而会促进对具体程序设计技术的理解,毕竟英文更能反映出技术的本质。相比于大量不精确的翻译书籍,我认为直接学习英文原著是最好的选择。与此同时,借助视频技术实现音像并茂,可以生动展示英文教学内容,一定对提高学习者能力有本质上的提高。我认为大家是会欢迎这种模式的。英文不是学习科技的障碍,恰恰相反,它是我们通向科技巅峰的桥梁。

     

    五、可能的学习者

     

    《Core Java》这本书虽然讨论的是基础Java技术,但它翔实全面的风格其实对每一个对程序设计技术感兴趣专业和非专业人士都会有价值。

     

    第一,没有任何程序设计经验的初学者。相比于其他主流语言,Java是经过长期演化后形成的程序设计技术。Java彻底摆脱了早期机器语言的影响,不存在任何对于机器特征过分依赖的编程方式;Java和互联网技术结合得更加紧密,适合学习者初步掌握互联网开发技术;Java采用面向对象程序设计风格,这是当前被普遍接受和推荐的程序设计理念;还有,相比于其他语言,Java的程序呈现方式更加简化。正是由于上述原因,Java是初学者学习程序设计的恰当选择。

     

    第二,需要全面了解Java技术的程序设计人员。根据我的经验,一个程序员完全掌握一门程序设计语言的所有细节是非常困难的,一般都会存在对某个分支或者部分细节缺乏了解的现象。本课程的全面性会帮助程序员查漏补缺,以较小代价对模糊不清的枝节问题进行了解,从而完善自身的程序设计技术,并迅速在实际研发过程中将所学体现出来。

     

    第三,致力于从事基础软件系统开发的Java程序设计人员。本课程讲授的Java标准版是Java最重要的技术。事实上,Java所有的开发能力集中体现在标准版当中,而非其他任何版本(如Java Enterprise Edition – JEE),更不是其他众多架构(Frameworks)所能代替的。在实际开发中,由于Java标准版一些主要技术使用难度相对较大,很多开发人员会有意回避使用它,转而去借助各种架构进行开发,从而快速完成应用软件的建立。从软件工程角度看,这种做法无可厚非。这些架构不要求研发人员具备深厚的基础知识和技能,只需通过简单配置或者简化的脚本语言编程就可以完成高层应用软件开发。但是长此以往,这种做法会逐渐降低程序设计人员的技术能力。只通过架构开发应用的研发人员大都会失去开发复杂基础软件系统的能力。本课程讲授的Java标准版是Java核心技术,对这个技术的全面掌握是开发基础软件系统不可或缺的。

     

    六、怎样掌握Java程序设计技术

     

    事实上,我不认为只通过这个课程就可以真正掌握Java程序设计技术。这个认识对任何程序设计技术课程都是成立。作为一门需要高度实践经验的科学技术,程序设计课程或者书籍只能是辅助的和启发式的。我认为无论使用何种开发技术何种开发理念,真正决定程序质量的永远是人,而不是单独的某项技术。对于一个高水平的程序设计师来说,他完全可以使用相对落后的技术做出高质量的软件;而低水平的程序设计人员,无论使用任何先进工具都无法保证程序水准。因此,我在课堂上经常和学生们说,你们要坚持“每天编程序”。更重要的是,这个程序应该学生独立思考后设想出的一个软件,每天坚持逐步把它做出来。当这个软件达到特定规模时,设计者才会真正领悟到程序设计的核心价值、各种技术的科学理性意义乃至程序设计的乐趣。

     

    最后,除了“每天编程序”,其实我在课堂上对学生还有一个建议,就是“每天读英文”。前两天,我在网上看到一篇文章。它展示了钱学森先生1933年6月在国立交通大学读书时参加《水力学》考试的试卷。我惊讶地发现这份试卷完全是英文作答。这意味着在遥远的八十八年前,我国大学已经开始使用英文进行专业教育了。遗憾的是,在当前我国主要大学里,竟然还做不到这点。我希望大家能够理解我对英文学习重要性的一再重复:在我们这个全新时代,在一个富有朝气的学科中以英文为蓝本展开自己的理想!

     

     

    推荐课程

    信息系统项目管理师自考笔记

    李明 · 784人在学

    python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据

    王先生 · 22297人在学

    手把手搭建Java超市管理系统【附源码】(毕设)

    汤小洋 · 4239人在学

    Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教

    黄菊华 · 804人在学

    基于SSM酒店管理系统(毕设)

    小尼老师 · 857人在学

    java项目实战之购物商城(java毕业设计)

    Long · 5172人在学

    手把手搭建Java求职招聘系统【附源码】(毕设)

    汤小洋 · 1517人在学

    Python Django 深度学习 小程序

    钟翔 · 2351人在学

    城管局门前三包管理系统+微信小程序(vue+springboot)

    赖国荣 · 617人在学

    Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序

    李杰 · 4020人在学

    正在试验
    后自动删除环境
    课程实验
    本次实验时间已到期 00:00:00

      订阅失败

      核心Java程序设计技术
      核心Java程序设计技术 ...

      订阅列表已满,请先移出部分订阅内容。

      当前章节需购买后观看
      开通超级会员免费看!专家精选系列课程,满足你从入门到精通!更有问答月卡免费送,你的问题有问必答!
      提交答案

      购买课程

      扫码完成付费,可继续学习全部课程内容

      加载中...
      课件正在飞速打包中,请耐心等待几秒钟~

      视频问题反馈

      提交遇到的问题我们会尽快解决的 ~

      首页
      博客
      下载
      学习
      社区
      AI搜索
      GitCode
      InsCodeAI
      技术会议
      会员中心
      创作中心
      联系我们
      工作时间: 8:30 - 22:00
      客服电话: 400-660-0108
      kefu@csdn.net在线客服
      • 关于我们
      • 招贤纳士
      • 商务合作
      • 寻求报道
      • 友情链接
      • 视觉中国
      • 500px
      • 直聘网
      • 优设网
      • CSDN文库
      • CSDN下载
      • CSDN问答
      • 京ICP备19004658号
      • 经营性网站备案信息
      • 公安备案号11010502030143
      • 营业执照
      • 北京互联网违法和不良信息举报中心
      • 家长监护
      • 中国互联网举报中心
      • 网络110报警服务
      • Chrome商店下载
      • 账号管理规范
      • 版权与免责声明
      • 版权申诉
      • 出版物许可证
      • ©1999-2025北京创新乐知网络技术有限公司