为什么java如此经久不衰 近义词

Java 要死了吗?不!我来告诉你为什么!
我们看到“Java 死了吗?” 这个问题,年年都被抛出来,然而至今为止,从所有的第三方统计来看,Java 不仅活的很好,还在保持增长。虽然不断有新的语言面世,TIOBE 仍将 Java 评选为 2015 年度最热门语言,目前显示它相比 2014 年,,高于其他所有编程语言。不仅如此,&(一个基于谷歌搜索中教程搜索频度对语言进行评估的站点)的数据显示, Java 以 23.9% 的搜索量遥遥领先。虽然有很多阶段性因素令 Java 在过去 2 年迎来复兴( android 开发的爆发,Java 8 的发布,Spring 社区的发展,尤其是 Spring Boot),但是市场的主导地位只可能来源于优秀的产品。以下是一些我们认为 Java 不会很快衰落原因。JVM 和 Java 生态Java 虚拟机(JVM)将代码编译为字节码,并在 JVM 中解释执行。由于 JVM 运行在特定的硬件和系统平台之上,这使得 Java 得以在任何设备上运行,无论是 Windows 设备、Mac,或是某个不为人知的 Linux版本。JVM 的最大优势是它增强了兼容性和稳定性。因为你的应用运行在虚拟机而非直接运行在实体机上,你只用编写一次某个程序,就可以确保在所有的 Java 虚拟机实现上,都可以很好的运行。这一原则是 Java 的核心理念的基础:“一次编写,处处运行。”该技术使得 Java 应用对底层环境的变化具备很好的弹性。安全性 & 交互能力Android 环境是研究 Java 原生安全性和通用性很好的素材。Android 占据全球移动市场89% 份额,基于 Java 运行。由于 Java 允许操作系统运行在虚拟机中,因此不需要为每台设备分别编译,这就提高了系统的稳定性和易用性。Android 完美的展示出了 Java 的另一个优势, 它与其他基于 JVM 的程序语言之间的交互能力,比如 Scala, Groovy, Clojure, JRuby 等等。当你用“更加动态”的语言构建你的应用,依然需要使用 Java 以获得强大的功能!巨大的 Android 市场,依然不可避免的存在漏洞利用的风险。 Android + Java 允许用户运行低可信的应用,所有应用都运行在虚拟机中可以减小这种风险。换言之,如果 APP 要利用系统内核漏洞,唯一的途径是利用 VM 实现的缺陷,好在 VM 被设计的足够紧凑,并且通过定义良好的安全接口保护系统安全。Java在大规模产品中的应用Amazon, Google, eBay 以及其他很多大型电子商务品牌,都使用Java作为他们的业务后台。它们选择 Java,是由于 Java 久经考验,并且有良好的扩展性。任何语言、任何后台都可以或多或少的管理一些用户,但是 Java 能可靠的应对至少 2 亿用户。我们来看一些突出的例子。HadoopApache Hadoop 是一个运行在大型硬件集群上的 Java 框架应用。 在设计之初,它便具有高吞吐能力,应用于处理或者操作海量数据集合的应用场景。 如今, Hadoop 被很多像&Facebook, Amazon, IBM, Joost, 以及 Yahoo 这样的大型公司应用于数据处理、分析、报表等方面。Hadoop 的创始人&Doug Cutting 曾说过:“Java 在开发者的生产率和运行效率之间取得很好的权衡。开发者可以使用广泛存在的高质量类库,切身受益于这种简洁、功能强大、类型安全的语言。”换言之: 没有 Hadoop 就不存在大数据,没有 Java 就没有 Hadoop。TwitterTwitter 最近为 Java 和 Oracle 团队,赢得一场令人瞩目的胜利。Twitter 原本基于&Ruby on Rails 开发, 伴随着 Twitter 的快速流行, Twitter 的经历非常清楚的暴露了 RoR 在扩展性方面的缺陷。“失败的鲸鱼”(Twitter 的网络不堪重负时的提示)出现的越来越频繁,直到 Twitter 于 2012 年开始向 Java 迁移才有所改善。今天,Twitter 基于 Java + Scala 运行,那条“失败的鲸鱼”便绝迹了。MinecraftMinecraft 是一款异常成功的游戏。早在 2014 年被出售给微软之前,该游戏就早已为其开发者挣了数百万美元。而 Minecraft 就运行在 Java 上。在广阔的 Java 社区的帮助下,Minecrafe 被传播给成千上万的潜在建模爱好者。同时,Minecraft 也将 Java 介绍给新一代的开发者。只要简单的 Google 一下 “在 Minecraft 中建模”,你会得到超过 65 万条记录,其中很多是面向 12 岁以下群体的编程教学资源。Java 的未来去年,Oracle 宣布 Java 9 即将到来,定于 2016 年 9 月发布。这次升级主要是将语言中众多的功能拆分为较小的组件,希望通过这一变化,使 Java 更快、更易用。Oracle 的整体投资(经常受到批评)最终还是保证 Java 可以继续支持众多依赖它的企业,同时保持着对开发新趋势的响应。Java 和 物联网“我确信 Java 的未来在物联网。我很希望 Oracle 及其伙伴们,会将注意力集中到为 Java 提供彻底的端到端的存储解决方案上:从终端设备开始,穿过网关,直至企业后端。构造这样一个故事,并且将其运作成功,这将有助于巩固 Java 未来 20 年里的地位。这不仅仅对整个产业蕴含着巨大的机会,而且我认为 Java 可以在这方面做得很好。”Mike Milinkovich (Eclipse 基金会执行董事)如此说道。Oracle 对此表示赞同,前研发副总裁&Georges Saab 说:“Java 是物联网时代最佳的技术。物联网遇到的很多挑战,都是20世纪90年代 Java 在桌面和客户端领域面对过的。你已经有了大量不同的硬件系统。你希望开发者们可以看清系统的细枝末节,深入理解它,并逐步向它迁移。Java 是少数允许你实现以上想法的技术。”Java + Stormpath也许有一些对 Java 批评的声音,而且有些观点也是合理的,但是瑕不掩瑜,比如:它提供杰出的开发、性能分析工具;JVM;海量的库等等等等。在&Stormpath 中,我们从诞生之初,后台就完全由 Java 实现,。Java 万岁!!了解更多Stormpath 提供一套,深度支持 Java,可以分分钟实现部署。Stormpath Java SDK;Servlet 插件;Spring 集成套件:&Spring WebMVC、Spring Security WebMVC、Spring Boot WebMVC 以及 Spring Security Spring Boot WebMVC。这些技术允许开发人员快捷的构建各种各样丰富的功能,而这些功能原本是需要他们自行编码的,包括:支持精准的,并通过缓存获得最好的性能。及注销,基于&JSON Web Tokens 和&OAuth 2.0。原生支持,通过预设的用户数据分区实现。丰富的,以及有保障的用户支持,包含免费开发账户在内均可享受。快查看我们的 Java 产品文档吧,下载我们的《》,或者!原文链接:&&翻译:&-&译文链接:&
Java 的详细介绍:
Java 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Java 要死了吗?不!我来告诉你为什么!
本文地址:
你是不是做web网站???
引用来自“开源中国创始人之一”的评论什么才适合物联网??引用来自“随风星海”的评论个人认为未来是PHP(上位机和边缘服务器+可视化)+GOLANG(高性能中间层)+各种C(嵌入式部分)引用来自“1uyjoipuo”的评论你是做php的吗?我觉得php 很烂...
引用来自“开源中国创始人之一”的评论什么才适合物联网??引用来自“随风星海”的评论个人认为未来是PHP(上位机和边缘服务器+可视化)+GOLANG(高性能中间层)+各种C(嵌入式部分)引用来自“开源中国创始人之一”的评论你是做php的吗?混合的,嘛都做。PHP和GO也写,各种类C也写,汇编也写,因地制宜吧。
引用来自“开源中国创始人之一”的评论什么才适合物联网??引用来自“随风星海”的评论个人认为未来是PHP(上位机和边缘服务器+可视化)+GOLANG(高性能中间层)+各种C(嵌入式部分)你是做php的吗?
引用来自“开源中国创始人之一”的评论什么才适合物联网??个人认为未来是PHP(上位机和边缘服务器+可视化)+GOLANG(高性能中间层)+各种C(嵌入式部分)
什么才适合物联网??
呵呵,难道android用php写?谈一个3年的Java程序员为何要转行做新媒体?
  众所周知,Java在编程语言是21年经久不衰的开发语言,由于Java跨平台的特性,可用于众多多领域。并且,Java语言是一种高级语言中的高级语言,有很高的集成度,这方便了编程人员编写更复杂的商用程序。
  正因为Java多元化的开发程序,笔者偶然一次与新媒体运营员(江江)聊天的途中,发现他以前是做Java语言开发的,后面去参加网络营销培训才转型做新媒体运营的,那他为什么要转行呢?对话如下:
  笔者:“您现在做新媒体几年了?”
  江江:“一年半左右吧,之前做了3年的Java程序员,后面去参加网络营销培训才正式开始做新媒体运营的。”
  笔者:“噢,您之前还做过3年的开发?”
  江江:“是的”
  笔者:“那开发的薪酬待应该比新媒体运营高很多吧?”
  江江:“的确,做开发的薪酬会高很多,但是新媒体只是前期相对低点,后期其实差不多的。”
  笔者:“那你为什么会转行做新媒体呢?”
  江江:“加班加怕了!”
  彼此都沉默…………
  加班加怕了!就这一句话,我能体会到作为一个程序员的不易,之前在公司工作的时候经常就会看见程序员大半夜的还在群里面讨论发版、BUG等一系列的问题,加班、通宵对于程序员而言更是家常便饭。
  其实对比程序员和新媒体那个好?这个还真说不准,笔者认为各有各的好处,当前市场情形可说是新媒体相对程序猿而言没有这么累,烧脑,但薪酬相对低点。因此在选择职业发展的道路上睿峰教育成都Java培训机构的导师建议大家慎重,所谓转行如隔山。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
ui设计培训提供推荐到大企业实习,五重保障成就UI设计梦.免费提供7天试听课程
Java培训机构,成都专业Java培训服务!
今日搜狐热点Java软件工程师一周末班一11月末火热开课
为什么Java软件工程师依然如此之火,经久不衰呢?
答案很简单!那就是技术含金量高,应用范围广!
学好Java开发技术,其他的开发语言都可以自学了
这是很多业内人士都心知肚明的事!
所以很多现在工资已经在6K~1W的在职人士,依旧选择周末来为自己的长远职业规划做充电!
爱尚教育Java实战课一从0基础起到精通全天班只需4个月!周末班只需8个月!
每天8小时编程训练量,每周5天,全身心投入Java开发学习海洋!
“上班族”周末班也可以让你一边工作一边达到转行的目标!
如果你是“在校生”,如果你是“应届毕业”,如果你是“上班族”
从事行政,人力资源,对日BPO等职位,都可以达到轻松入职Java开发的水平!
爱尚教育IT培训的“超强实战型”师资力量将“手把手”带你亲自完成真实项目开发!
第一步:基础课,近200课时的基础学习,让你轻松达到初级程序员的水平!
第二步:Java全真项目实战,近500课时的企业真实项目实战,完成多个真实项目案例!
每天、每周、每月、每个项目都会有精细的考核!
入学即签就业协议!但是,我们不靠一纸协议就业!
靠的是真正的动手做项目的能力!
我们承诺:一次付费,学会为止,免费重修,终身保就业!
快拿起你手中的电话,预约免费试听课吧!!
试听满意之后再报名!!!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。随笔分类 - Java
摘要: 转:/iyangyuan/p/4631696.html java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存
神一样的存在 阅读(5492) |
摘要: 目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 转:/zhguang/p/java-jvm-gc.html光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与
神一样的存在 阅读(87) |
神一样的存在 阅读(36) |
神一样的存在 阅读(192) |
摘要: 前言: 公司一般都有个自己的私服来管理各种jar包,原因大概有这么3个,分别是: 1、有的公司不能访问外网,只能通过私服来管理jar包和插件; 2、公司网速比较慢,通过公司的私服来获取jar包比较快; 3、内部的的一些jar包放在私服上,比较方便的大家使用。 这里简单介绍下搭建Nexus环境,并且在
神一样的存在 阅读(12410) |
摘要: mybatis的一对多或者多对多的时候,2中方式解决,一种是嵌套select,但是会有n+1问题,不推荐;另外一种是使用一条sql,在该sql里面使用子查询的方式来完成。比如 select * from clazz m left join student mm on m.id = mm.clazz_
神一样的存在 阅读(285) |
摘要: 动态代理,这个词在Java的世界里面经常被提起,尤其是对于部分(这里强调“部分”二字,因为有做了一两年就成大神的,实力强的令人发指,这类人无疑是非常懂动态代理这点小伎俩的)做了一两年新人来说,总是摸不清楚来龙去脉,一两年是个坎,为什么是一两年,才入门的新人可能对这东西没什么感觉,没到这一步,做了很久
神一样的存在 阅读(1027) |
摘要: 简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅
神一样的存在 阅读(170) |
摘要: 本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一
神一样的存在 阅读(60798) |
摘要: ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。
神一样的存在 阅读(42668) |
摘要: 转:/index.php/java-programe/.html1 何为ReferenceQueue在java的引用体系中,存在着强引用,软引用,虚引用,幽灵引用,这4种引用类型。在正常的使用过程中,我们定义的类型都是强引用的,这种引用...
神一样的存在 阅读(2005) |
摘要: 1、Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便。首先该类是继承自Hashtable这就奠定了Properties类的本质其实是一个HashTable,那么对于各种工具类的典型特性就是在HashTable的基础之上做各种封装,以降低操作...
神一样的存在 阅读(1794) |
摘要: 由于最近做的项目中有一部分是接口远程调用,用到了接入权限和业务权限的鉴定,需要采用SpringMVC的拦截器,以前用Struts2的时候用过拦截器,而SpringMVC的拦截器功能之前没研究过,所以这次来稍微研究一下,得出的结论是SpringMVC的拦截器和Struts2的拦截器原理几乎是一模一...
神一样的存在 阅读(10137) |
摘要: Servlet 2.3...Servlet 2.4...Servlet 2.5...
神一样的存在 阅读(75) |
摘要: 指令重排序对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行。重排序的背景我们知道现代CPU的主频越来越高,与cache的交互次数也越来越...
神一样的存在 阅读(144) |
摘要: 转自:/blog/787563#sec-1
神一样的存在 阅读(23) |
摘要: 引发问题的来源:最近在看比较深入的JVM相关的书,不得不感慨,JVM确实是比较深奥,很多地方难以理解不说,在网上还找不到什么资料,发现一个左思右想都想不明白的问题上网来搜索,结果基本上都是从书上copy下来的东西,还是不能理解。 问题的出现:今天突然想到一个这样的问题,就是类变量也就是静态变量的初始
神一样的存在 阅读(685) |
该文被密码保护。
神一样的存在 阅读(2) |
摘要: 作为菜鸟的我,以前没接触过Mock类型的框架,比如说要测试action层,我总是从action层调用service再调用dao访问数据库,这种方式从原则上来说是无疑是非常正确的,在没用mock框架之前我就隐隐约约的感觉到了这种方式有个不足的地方,那就是速度问题,测试action层的时候需要访问下...
神一样的存在 阅读(2725) |
摘要: 今天把设计模式拿出来看了下,发现以前对于单例模式的理解很是肤浅,没考虑线程安全,在考虑了线程安全的情况下又没考虑性能,当然我遇到的系统都不怎么考虑并发性能,所以其实也无所谓,当看到单例模式的时候,上网搜索了下,发下一片很好的帖子,我把其中的单例模式整理了下,给了个结果出来。 帖子地址:http...
神一样的存在 阅读(1667) |
摘要: contextConfigLocation classpath:/spring-dataSource.xml, classpath:/spring-data.xml, classpath:/spring-server.xml, /WEB-INF/applicationCo...
神一样的存在 阅读(129) |
摘要: 来张图:这个帖子写给新人的,老玩家就直接无视他,因为这个完完全全是白话基础原理。解释:上面的图是从上往下依次调用的关系。操作系统(Windows/Linux)管理硬件,让硬件能够正常、合理的运行,当然各种硬件的驱动实现了操作系统的接口,操作系统调用这些接口就能管理硬件,操作系统还像程序员提供了一层接...
神一样的存在 阅读(2842) |
摘要: 我们知道HashMap的存储位置是按照key这个对象的hashCode来存放的,而TreeMap则是不是按照hashCode来存放,他是按照实现的Comparable接口的compareTo这个方法来存储的,只要compareTo的返回结果为0就表示两个对象相等,那么就存不进去两个对象,后put...
神一样的存在 阅读(1615) |
摘要: Java HashMap HashSet
神一样的存在 阅读(2285) |
摘要: importjava.util.HashMimportjava.util.Iimportjava.util.LinkedHashMimportjava.util.MpublicclassTestLinkedHashMap {publicstaticvoidmain(...
神一样的存在 阅读(448) |
摘要: 这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试-- 声明游标;CURSOR cursor_name IS select_statement--For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare --类型定义 ...
神一样的存在 阅读(36) |
摘要: http://blog.csdn.net/yuzhic/article/details/1896878http://blog.csdn.net/macle2010/article/details/5980965该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中...
神一样的存在 阅读(46) |
摘要: 集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集一、union求并集,公共部分只有包含一次例:求emp表ename中含’A‘或含有‘M’SQL& select * from emp where ename like '%A%' 2 union 3 sele...
神一样的存在 阅读(2491) |
摘要: 开始:看名字都带有ClassLoader,叫做类加载器,事实上是可以理解为动态的加载类,不过,也不是只能加载类,也可以加载其他形式的文件,比如说.properties属性文件。 区别:其实在两个类加载器有一点小区别,就在于能够加载的类存放的位置,从JDK源码上来看其实是URLClassLoad...
神一样的存在 阅读(1163) |
摘要: Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用。在Tomcat的HttpServletRequest和HttpServletResponse这两个对象中就使用了门面模式。举例:有一个接口叫做P...
神一样的存在 阅读(181) |
摘要: JVM运行之前会执行一个叫做类加载器的子系统,叫做ClassLoader,那么类里面那么多“元素”,究竟是个什么顺序呢,写几行代码测试一下,通过给每个方法和代码快和静态变量打上断点来测试:class Person { private S public Person(...
神一样的存在 阅读(287) |
摘要: 说到克隆,其实是个比较简单的概念,跟现实生活正的克隆一样,复制一个一模一样的对象出来。clone()这个方法是从Object继承下来的,一个对象要实现克隆,需要实现一个叫做Cloneable的接口,这个接口没有什么方法,和Comparable接口差不多,仅仅是起一个标志作用,实现了这个接口你就能...
神一样的存在 阅读(4097) |
摘要: 今天在看一本书的时候注意到一个String的intern()方法,平常没用过,只是见过这个方法,也没去仔细看过这个方法。所以今天看了一下。个人觉得给String类中加入这个方法可能是为了提升一点点性能,因为从常量池取数据比从堆里面去数据要快一些。(个人感觉) API上的那几句关于这个方法,其实...
神一样的存在 阅读(3428) |
摘要: 1.JDK规定,equals相等的两个对象hashCode也必须相等,这两个方法都是从Object上面继承而来的,通过观察JDK源码可以发现Object的equals方法是对2个对象的地址(逻辑地址,也就是在JVM中映射一个物理地址)比较,而hashCode又是一个本地方法,其实hashCode就是内存中的一个地址,换句话说,2个相等的对象(地址相等)那么他们的hashCode也肯定是相等的,反过来hashCode不相等,equals也一定不相等,但是hashCode相等equals却不一定相等,因为在生成hashCode的时候可能有冲突,还有一种情况就是JDK的String、Intege..
神一样的存在 阅读(90) |
摘要:import java.util.Cimport java.util.HashMimport java.util.Mimport java.util.Map.Eimport java.util.Simport org.junit.Bimport org.junit.T/** * 对于Map的三种方式遍历 1.keySet() 2.values() 3.entrySet() * 三种方式得到Set之后,都可以使用 foreach或者iterator, 不能使用for,因为数据结构决定的 * * @aut
神一样的存在 阅读(158) |
摘要: 前奏: 比较三者之间的区别在与区别他们做相同的事情的时候的区别,那就是在我们常见的拼接字符串的时候,StringBuffer、StringBuilder调用的是appende()方法,而String很特别,是采用“+”号的方式。说明:如果想要搞的很清楚,建议去看看源码,写的比较清晰,并且自己测试几次。先看测试结果:测试次数String(毫秒)StringBuffer(毫秒StringBuilder(毫秒1万次 69 1 110万次 万次 万次 万次
10结论:String & S...
神一样的存在 阅读(677) |最近的浏览历史
浏览此书的还浏览过
购买此书的人还购买过
书  名:Java程序设计教程
作  者: 牛晓太、王杰、管涛、李向、齐艳珂、王亚楠
出版时间:
出 版 社: 清华大学出版社
字  数: 469 千字
印  次: 1-1
印  张: 19.25
开  本: 16开
ISBN: 8
装  帧: 平装
定  价:¥36.00
电子书价:¥25.20
节省:¥10.80
vip价:¥25.20
电子书大小:16.48M
配套资源下载:
点击图标下载
共有商品评论0条
  全书着眼于Java语言的特点,细致、全面地介绍了Java的基本概念、方法和应用。本着循序渐进、学以致用的思路编排知识要点,辅之以典型应用实例,逐例分析运行结果和程序代码,便于读者尽快熟悉和掌握。本书共分为12章,包括Java概述、Java基本语法、Java流程控制、Java面向对象编程、接口、内部类和Java API基础、异常处理、Applet程序、图形用户界面、输入输出流、多线程、访问数据库、网络程序设计等内容。另外,在每章的最后均列出习题若干,供读者参考。
  本书既适合作为普通高等院校计算机、网络工程等专业本科生(或高职高专学生)的Java程序设计课程教材,也适合从事软件开发的技术人员培训、自学使用。
  随着互联网的快速发展,网络程序开发大步迈进。Java似乎就是为此而诞生的,它具有的跨平台性、面向对象、分布性和安全性等诸多特点,使其确立了一段时期内无与伦比的网络编程优势。从20世纪90年代初Oak问世,以及几年后Java正式发布,到现在已经跨越了20年左右的时光。时至今日,Java语言经久不衰,广为流传,能够具有如此的生命力并不多见。Java保持“常青树”状态,也由于它不断地发展自我、超越自我,从而在许许多多领域成为了系统研发的主流平台。例如电子商务、远程医疗、网上银行、虚拟课堂等等,基本上都使用Java技术开发。
  当前,普通高等院校计算机、网络工程等专业都开设了Java程序设计课程,还有其他为数不少的专业也把Java语言列入教学计划。教材是体现教学内容的知识载体,是进行教学的基本工具。本书在编写时,从现阶段高校使用最多的Java系列教材中吸取经验,结合作者在长期教学过程中的体会和积累,旨在向高校学生奉献一本有特色的教材,以及向工程技术人员和其他有兴趣的读者提供一本有价值的参考书。
  总的来说,本书具有以下特点:
  1. 面向实用新技术
  本书介绍Java程序设计的多项实用技术,采用JDK 6、Eclipse、MySQL作为Java开发运行环境,并将其反映在教材中。强调学以致用,将新技术与理论、实践相结合,注重培养学生的能力和创新意识。
  2. 涵盖内容较广泛
  本书由浅入深、循序渐进地介绍了Java程序设计的基本概念、方法和应用,涵盖了Java的语法要点和知识要素。对于Java系统开发所使用的数据库访问技术、图形用户界面等,也进行了较为详细的说明。
  3. 例题讲解条理化
  本书例题十分丰富,典型实例紧密结合知识要点。全部例子包含题目要求、程序代码、程序运行结果和程序分析。以此编写方式,有助于读者掌握Java开发要领,快速熟悉重点难点部分。书中程序代码都经过认真调试,可以直接运行,方便读者上机操作。
  本书为了便于对程序代码作出说明,在每一行设置了序号。这些序号标记不能作为Java程序的组成部分,实际程序开发时要将其去掉。
  本书共分为12章,主要包括Java概述、Java基本语法、Java流程控制、Java面向对象编程、接口、内部类和Java API基础、异常处理、Applet程序、图形用户界面、输入输出流、多线程、访问数据库、网络程序设计等内容。另外,在每章的最后均列出习题若干,供读者参考。
  本书由牛晓太任主编并负责全书的总体策划与通审、定稿工作,王杰、管涛、李向任副主编,齐艳珂、王亚楠参编。其中牛晓太编写第1章、第6章、第7章,王杰编写第9章、第12章,管涛编写第2章、第3章,李向编写第8章,齐艳珂编写第4章、第5章,王亚楠编写第10章、第11章。
  在本书的编写和出版过程中,参阅了大量书籍、文献等资料,得到了清华大学出版社的支持和帮助。在此表示衷心的感谢。
  尽管书稿是作者多年系统研究开发与教学实践经验的总结,但由于时间仓促,作者知识水平有限,书中难免存在疏漏和不足,恳请读者批评指正,使本书得以改进和完善。
编者2013年3月
第1章Java 概 述1
1.1Java简介1
1.1.1Java的产生1
1.1.2Java的特点1
1.1.3Java三大平台2
1.2Java的开发和运行环境3
1.2.1Java虚拟机3
1.2.2JDK的安装3
1.2.3环境变量的设置5
1.2.4Java API文档6
1.3Java程序开发实例7
1.3.1Java应用程序实例8
1.3.2Java小程序实例10
1.4Eclipse开发平台11
1.4.1Eclipse安装11
1.4.2Eclipse平台的项目开发12
习题114第2章Java基本语法15
2.1标识符和关键字15
2.1.1标识符15
2.1.2关键字15
2.1.3分隔符16
2.1.4注释符16
2.2数据类型、变量与常量17
2.2.1数据类型17
2.2.2变量18
2.2.3常量18
2.3运算符和表达式19
2.3.1运算符19
2.3.2运算符的优先级25
2.3.3表达式25
2.4数据类型的转换29
习题230第3章Java流程控制32
3.1语句与程序结构32
3.1.1语句32
3.1.2程序结构33
3.2顺序结构33
3.3选择结构34
3.3.1if单分支结构34
3.3.2if双分支结构 35
3.3.3if多分支结构36
3.3.4if的嵌套结构 37
3.3.5switch语句39
3.4循环结构42
3.4.1for语句43
3.4.2while语句45
3.4.3do…while语句47
3.4.4循环嵌套48
3.5跳转结构50
3.5.1中断语句break50
3.5.2继续语句continue52
3.6数组应用53
3.6.1数组的定义53
3.6.2数组的运算55
3.6.3应用举例56
3.7字符串处理59
3.7.1字符串的定义和赋值59
3.7.2字符串的基本运算60
3.7.3应用举例62
习题363第4章Java面向对象编程67
4.1面向对象编程概述67
4.1.1面向对象的程序设计方法67
4.1.2类和对象67
4.1.3面向对象编程的特点67
4.1.4Java程序设计语言68
4.2.1类的定义68
4.2.2成员变量69
4.2.3成员方法70
4.2.4构造方法74
4.3.1对象的声明76
4.3.2对象的创建及初始化77
4.3.3对象的使用77
4.3.4对象的销毁81
4.3.5this关键字81
4.4类的封装性83
4.4.2访问权限85
4.4.3访问器87
4.4.4静态成员88
4.5类的继承性90
4.5.1继承的概念90
4.5.2子类90
4.5.3super关键字93
4.5.4最终类和抽象类95
4.6类的多态性96
4.6.1多态的概念96
4.6.2方法重载96
4.6.3方法覆盖98
4.6.4绑定99
习题4100第5章接口、内部类和Java API基础105
5.1接口105
5.1.1接口的概念105
5.1.2接口的声明105
5.1.3接口的实现106
5.1.4常用系统接口109
5.2内部类110
5.2.1内部类和内部接口的概念110
5.2.2内部类的定义和使用111
5.3java.lang包中的基础类112
5.3.1Object类112
5.3.2System类112
5.3.3Math类113
5.3.4数据类型类114
5.4java.util包中的工具类115
5.4.1日期类116
5.4.2Random类116
5.4.3Scanner类117
5.4.4集合类117
习题5119第6章异常处理121
6.1异常的概念121
6.2异常类123
6.2.1Error类及其子类124
6.2.2Exception类及其子类124
6.3异常处理125
6.3.1try…catch…finally语句125
6.3.2抛出异常129
6.4创建自己的异常类131
习题6132第7章Applet程序136
7.1Applet简介136
7.1.1Java Applet说明136
7.1.2Applet的形式及其类的层次136
7.2Applet生命周期和显示方法137
7.2.1Applet生命周期137
7.2.2Applet类的显示方法138
7.2.3Applet的编写与执行139
7.3HTML中的Applet标记140
7.4Applet应用举例141
习题7144第8章图形用户界面147
8.1AWT与Swing147
8.1.1AWT概述147
8.1.2AWT的基本组件148
8.1.3Swing概述150
8.1.4AWT与Swing的区别151
8.2事件处理151
8.2.1Java中的事件处理机制152
8.2.2键盘事件155
8.2.3鼠标事件157
8.2.4其他常用事件160
8.3布局管理器172
8.3.1布局管理器概述173
8.3.2常用布局173
8.4Swing组件176
8.4.1Swing包中类的关系176
8.4.2Swing中的容器177
8.4.3Swing中的常用组件188
8.4.4Swing中的新增组件191
8.4.5Swing事件概述195
习题8196第9章输入输出流198
9.1I/O流概述198
9.1.1数据流概念198
9.1.2Java数据流介绍198
9.2字节流201
9.2.1InputStream和OutputStream201
9.2.2FileInputStream和FileOutputStream202
9.2.3RandomAccessFile205
9.2.4BufferedInputStream和BufferedOutputStream207
9.2.5ByteArrayInputStream和ByteArrayOutputStream209
9.2.6SequenceInputStream212
9.2.7标准输入输出流213
9.3字符流214
9.3.1Reader和Writer215
9.3.2InputStreamReader和OutputStreamWriter215
9.3.3FileReader和FileWriter218
9.3.4StringReader和StringWriter218
9.3.5其他类型的字符流220
9.4文件的处理221
9.4.1文件信息获取和属性更改221
9.4.2文件和目录操作224
9.5串行化225
9.5.1串行化的概念225
9.5.2串行化的方法226
习题9227第10章多线程229
10.1线程的概念229
10.1.1多线程编程的优势229
10.1.2多线程编程的难点230
10.2线程的实现230
10.2.1创建Java线程230
10.2.2Java线程的状态233
10.2.3Java线程的优先级234
10.2.4守护线程234
10.2.5终止另一个线程235
10.3线程同步237
10.3.1同步访问共享资源237
10.3.2协作完成任务240
习题10243第11章访问数据库245
11.1数据库简介245
11.1.1关系型数据库系统概述245
11.1.2MySQL数据库简介247
11.1.3MySQL Workbench简介252
11.2使用JDBC进行数据库编程252
11.2.1JDBC架构简介253
11.2.2使用JDBC访问数据库253
11.2.3JDBC高级特性262
习题11270第12章网络程序设计272
12.1网络的基本概念272
12.1.1IP地址与端口号272
12.1.2Java中IP地址及端口号表示273
12.1.3客户服务器工作模式275
12.1.4TCP与UDP通信275
12.2URL的使用275
12.2.1URL的表示275
12.2.2URL类276
12.2.3通过URLConnection实现双向通信278
12.3基于TCP的网络通信279
12.3.1客户端与服务器端通信279
12.3.2多客户端通信285
12.4基于UDP的网络通信287
12.4.1UDP数据报文包287
12.4.2UDP通信288
习题12292第1章Java概述1
1.1Java简介1
1.1.1Java的产生1
1.1.2Java的特点1
1.1.3Java三大平台2
1.2Java的开发和运行环境3
1.2.1Java虚拟机3
1.2.2JDK的安装3
1.2.3环境变量的设置5
1.2.4Java API文档6
1.3Java程序开发实例7
1.3.1Java应用程序实例8
1.3.2Java小程序实例10
1.4Eclipse开发平台11
1.4.1Eclipse安装11
1.4.2Eclipse平台的项目开发12
习题114第2章Java基本语法15
2.1标识符和关键字15
2.1.1标识符15
2.1.2关键字15
2.1.3分隔符16
2.1.4注释符16
2.2数据类型、变量与常量17
2.2.1数据类型17
2.2.2变量18
2.2.3常量18
2.3运算符和表达式19
2.3.1运算符19
2.3.2运算符的优先级25
2.3.3表达式25
2.4数据类型的转换29
习题230第3章Java流程控制32
3.1语句与程序结构32
3.1.1语句32
3.1.2程序结构33
3.2顺序结构33
3.3选择结构34
3.3.1if单分支结构34
3.3.2if双分支结构 35
3.3.3if多分支结构36
3.3.4if的嵌套结构 37
3.3.5switch语句39
3.4循环结构42
3.4.1for语句43
3.4.2while语句45
3.4.3do while语句47
3.4.4循环嵌套48
3.5跳转结构50
3.5.1中断语句break50
3.5.2继续语句continue52
3.6数组应用53
3.6.1数组的定义53
3.6.2数组的运算55
3.6.3应用举例56
3.7字符串处理59
3.7.1字符串的定义和赋值59
3.7.2字符串的基本运算60
3.7.3应用举例62
习题363第4章Java面向对象编程67
4.1面向对象编程概述67
4.1.1面向对象的程序设计方法67
4.1.2类和对象67
4.1.3面向对象编程的特点67
4.1.4Java程序设计语言68
4.2.1类的定义68
4.2.2成员变量69
4.2.3成员方法70
4.2.4构造方法74
4.3.1对象的声明76
4.3.2对象的创建及初始化77
4.3.3对象的使用77
4.3.4对象的销毁81
4.3.5this关键字81
4.4类的封装性83
4.4.2访问权限85
4.4.3访问器87
4.4.4静态成员88
4.5类的继承性90
4.5.1继承的概念90
4.5.2子类90
4.5.3super关键字93
4.5.4最终类和抽象类95
4.6类的多态性96
4.6.1多态的概念96
4.6.2方法重载96
4.6.3方法覆盖98
4.6.4绑定99
习题4100第5章接口、内部类和Java API基础105
5.1接口105
5.1.1接口的概念105
5.1.2接口的声明105
5.1.3接口的实现106
5.1.4常用系统接口109
5.2内部类110
5.2.1内部类和内部接口的概念110
5.2.2内部类的定义和使用111
5.3java.lang包中的基础类112
5.3.1Object类112
5.3.2System类112
5.3.3Math类113
5.3.4数据类型类114
5.4java.util包中的工具类115
5.4.1日期类116
5.4.2Random类116
5.4.3Scanner类117
5.4.4集合类117
习题5119第6章异常处理121
6.1异常的概念121
6.2异常类123
6.2.1Error类及其子类124
6.2.2Exception类及其子类124
6.3异常处理125
6.3.1try…catch…finally语句125
6.3.2抛出异常129
6.4创建自己的异常类131
习题6132第7章Applet程序134
7.1Applet简介134
7.1.1Java Applet说明134
7.1.2Applet的形式及其类的层次134
7.2Applet生命周期和显示方法135
7.2.1Applet生命周期135
7.2.2Applet类的显示方法136
7.2.3Applet的编写与执行136
7.3HTML中的Applet标记138
7.4Applet应用举例139
习题7142第8章图形用户界面143
8.1AWT与Swing143
8.1.1AWT概述143
8.1.2AWT的基本组件144
8.1.3Swing概述146
8.1.4AWT与Swing的区别147
8.2事件处理147
8.2.1Java中的事件处理机制148
8.2.2键盘事件151
8.2.3鼠标事件153
8.2.4其他常用事件156
8.3布局管理器168
8.3.1布局管理器概述169
8.3.2常用布局169
8.4Swing组件172
8.4.1Swing包中类的关系172
8.4.2Swing中的容器173
8.4.3Swing中的常用组件184
8.4.4Swing中的新增组件187
8.4.5Swing事件概述191
习题8192第9章输入输出流194
9.1I/O流概述194
9.1.1数据流概念194
9.1.2Java数据流介绍194
9.2字节流197
9.2.1InputStream/OutputStream197
9.2.2FileInputStream和FileOutputStream198
9.2.3RandomAccessFile201
9.2.4BufferedInputStream和BufferedOutputStream203
9.2.5ByteArrayInputStream和ByteArrayOutputStream205
9.2.6SequenceInputStream208
9.2.7标准输入输出流209
9.3字符流210
9.3.1Reader和Writer211
9.3.2InputStreamReader和OutputStreamWriter211
9.3.3FileReader和FileWriter214
9.3.4StringReader和StringWriter214
9.3.5其他类型的字符流216
9.4文件的处理217
9.4.1文件信息获取和属性更改217
9.4.2文件和目录操作220
9.5串行化221
9.5.1串行化的概念221
9.5.2串行化的方法222
习题9223第10章多线程225
10.1线程的概念225
10.1.1多线程编程的优势225
10.1.2多线程编程的难点226
10.2线程的实现226
10.2.1创建Java线程226
10.2.2Java线程的状态229
10.2.3Java线程的优先级230
10.2.4守护线程230
10.2.5终止另一个线程231
10.3线程同步233
10.3.1同步访问共享资源233
10.3.2协作完成任务236
习题10239第11章访问数据库241
11.1数据库简介241
11.1.1关系型数据库系统概述241
11.1.2MySQL数据库简介243
11.1.3MySQL Workbench简介248
11.2使用JDBC进行数据库编程248
11.2.1JDBC架构简介249
11.2.2使用JDBC访问数据库249
11.2.3JDBC高级特性258
习题11266第12章网络程序设计268
12.1网络的基本概念268
12.1.1IP地址与端口号268
12.1.2Java中IP地址及端口号表示269
12.1.3客户服务器工作模式271
12.1.4TCP与UDP通信271
12.2URL的使用271
12.2.1URL的表示271
12.2.2URL类272
12.2.3通过URLConnection实现双向通信274
12.3基于TCP的网络通信275
12.3.1客户端与服务器端通信275
12.3.2多客户端通信281
12.4基于UDP的网络通信283
12.4.1UDP数据报文包283
12.4.2UDP通信284
第1章C++入门1
1.1C++简介1
1.1.1C++的产生与发展1
1.1.2C++的特点2
1.2简单的C++程序3
1.2.1C++程序结构3
1.2.2输入与输出5
1.2.3注释6
1.3C++程序的上机执行过程7
1.4程序设计语言介绍8
1.4.1机器语言8
1.4.2汇编语言9
1.4.3高级语言10
习题113第2章基本数据类型与表达式14
2.1字符集与标识符14
2.1.1字符集14
2.1.2标识符14
2.1.3关键字15
2.2基本数据类型16
2.2.1整型16
2.2.2字符型16
2.2.3布尔型17
2.2.4浮点型17
2.3.1数值型常量18
2.3.2字符型常量19
2.4.1变量的定义20
2.4.2常变量21
2.5运算符与表达式23
2.5.1算术运算符与算术表达式23
2.5.2赋值运算符与赋值表达式24
2.5.3逗号运算符与逗号表达式24
2.5.4自增自减运算符25
2.5.5类型转换25
2.5.6位运算符与位运算表达式27
2.6计算机中的数据表示29
2.6.1计算机中的数制29
2.6.2数值型数据的表示31
2.6.3字符型数据的编码表示33
习题233第3章语句与结构化程序设计34
3.1功能语句与顺序结构程序设计34
3.1.1赋值语句34
3.1.2空语句34
3.1.3复合语句34
3.1.4顺序结构程序设计34
3.2分支语句与分支结构程序设计35
3.2.1关系表达式和逻辑表达式35
3.2.2if语句38
3.2.3if…else语句38
3.2.4条件运算符与条件表达式40
3.2.5switch语句41
3.3循环语句与循环结构程序设计42
3.3.1for循环语句43
3.3.2do…while循环语句45
3.3.3while循环语句47
3.3.4循环语句的嵌套48
3.4转移语句49
3.4.1break语句49
3.4.2continue语句49
3.4.3goto语句50
3.5程序举例51
3.6算法与程序设计58
3.6.1算法设计与分析58
3.6.2程序设计风格61
习题362第4章数组与字符串63
4.1数组的定义与使用63
4.1.1一维数组的定义与使用63
4.1.2二维数组的定义与使用64
4.2数组的初始化66
4.3数组应用举例67
4.3.1一维数组应用68
4.3.2二维数组应用73
4.4字符串76
4.4.1字符串变量的定义与使用76
4.4.2字符串变量的输入输出77
4.4.3字符串运算78
4.4.4字符串数组79
4.5字符数组81
4.6动态数组82
4.7静态数组访问的下标越界问题84
习题485第5章函数86
5.1函数定义86
5.2函数调用与函数声明87
5.2.1函数调用87
5.2.2函数声明88
5.3函数的参数传递90
5.3.1值传递90
5.3.2引用传递91
5.3.3函数的默认形参值92
5.4函数的嵌套与递归93
5.4.1函数嵌套94
5.4.2函数递归94
5.5数组作函数参数97
5.5.1数组元素作函数参数97
5.5.2一维数组名作函数参数98
5.5.3二维数组名作函数参数99
5.6内联函数100
5.7重载函数101
5.8系统函数103
习题5104第6章指针106
6.1指针变量106
6.1.1内存单元地址106
6.1.2指针变量的定义107
6.2指针的赋值与运算107
6.2.1指针的赋值107
6.2.2指针的运算108
6.3指针作为函数参数110
6.4指针与数组111
6.4.1数组的地址111
6.4.2指针与一维数组111
6.4.3指针与二维数组112
6.4.4指针数组114
6.5动态内存分配116
6.6函数指针119
习题6122第7章自定义数据类型123
7.1结构体类型123
7.1.1结构体类型的定义123
7.1.2结构体变量的定义与初始化124
7.1.3结构体变量的引用125
7.2结构体应用127
7.2.1结构体数组127
7.2.2结构体和指针129
7.2.3结构体和函数131
7.3共用体134
7.3.1共用体的定义135
7.3.2共用体的应用136
7.4链表137
7.4.1线性表137
7.4.2线性链表138
7.4.3线性链表的操作139
7.5枚举类型144
7.5.1枚举类型和枚举变量的定义144
7.5.2枚举变量的赋值和引用145
7.5.3枚举变量值的输入与输出145
习题7147第8章C++程序结构149
8.1C++程序构成149
8.2预处理命令150
8.2.1宏定义150
8.2.2文件包含151
8.2.3条件编译153
8.3变量的作用域156
8.3.1局部变量156
8.3.2全局变量156
8.4变量的存储类别157
8.4.1局部自动变量158
8.4.2局部寄存器变量159
8.4.3局部静态变量159
8.4.4外部变量声明160
8.5内部函数与外部函数162
8.5.1内部函数162
8.5.2外部函数163
习题8164第9章类和对象165
9.1面向对象程序设计概述165
9.1.1面向对象的概念165
9.1.2面向对象程序设计的特点165
9.1.3面向对象与面向过程的区别166
9.2类和对象167
9.2.1类的定义167
9.2.2对象的定义170
9.2.3对象成员的访问171
9.3构造函数173
9.3.1不带参数的构造函数173
9.3.2带参数的构造函数174
9.3.3带默认值的构造函数175
9.3.4带初始化表的构造函数176
9.3.5构造函数的重载178
9.4析构函数180
9.5复制构造函数183
9.5.1对象的赋值183
9.5.2对象的复制184
9.6对象数组188
9.7const对象和const成员190
9.8成员函数存储与this指针192
9.9类静态成员194
9.9.1静态数据成员194
9.9.2静态成员函数195
9.10友元函数与友元类197
9.10.1友元函数199
9.10.2友元类201
习题9202第10章继承与派生203
10.1继承与派生的概念203
10.2派生类的声明204
10.2.1派生类的声明204
10.2.2派生类的构成205
10.3派生类成员的访问特性207
10.3.1公有继承207
10.3.2私有继承208
10.3.3保护继承208
10.3.4多级派生时的访问特性209
10.4派生类的构造函数和析构函数212
10.4.1简单派生类的构造函数213
10.4.2有子对象的派生类的构造函数215
10.4.3派生类的析构函数216
10.5基类与派生类的转换218
10.5.1派生类对象的值可以赋给基类对象218
10.5.2派生类对象可以作为基类对象使用219
10.6类的继承与组合220
10.7继承在软件开发中的作用221
10.8多基类继承224
10.8.1定义多基类继承224
10.8.2多继承派生类的构造函数226
10.8.3基类成员名冲突227
10.8.4虚基类228
习题10232第11章运算符重载233
11.1运算符重载的实现233
11.2运算符重载规则237
11.3运算符重载函数238
11.4重载流插入和流提取运算符241
11.5数据的类型转换244
11.5.1用转换构造函数实现类型转换245
11.5.2用类型转换函数实现类型转换247
习题11250第12章多态与虚函数251
12.1多态性和绑定251
12.2虚函数254
12.2.1虚函数的定义254
12.2.2虚析构函数255
12.3纯虚函数与抽象类257
12.3.1纯虚函数257
12.3.2抽象类260
12.4动态绑定与虚函数表263
12.4.1多态类与非多态类263
12.4.2动态绑定的实现265
习题12267第13章模板268
13.1模板的引入268
13.2函数模板269
13.2.1函数模板的定义269
13.2.2函数模板的调用269
13.2.3函数模板的重载271
13.3类模板274
13.3.1类模板的定义和使用274
13.3.2类模板的继承275
13.4类模板应用275
13.4.1数组类模板275
13.4.2线性链表类模板278
习题13281第14章输入输出流和文件282
14.1输入输出与流282
14.2C++的流类和流对象283
14.3标准输入输出流283
14.3.1标准输出流284
14.3.2标准输入流285
14.3.3流成员函数287
14.4设定输入输出格式290
14.5文件处理294
14.5.1文件的打开和关闭294
14.5.2对ASCII码文件的读写296
14.5.3对二进制文件的读写298
习题14302第15章异常处理303
15.1异常处理的基本思路303
15.2C++异常处理的实现306
15.2.1简单异常处理306
15.2.2类类型异常处理309
习题15311第16章综合实例312
16.1用面向过程的方法设计人人对弈程序313
16.2用面向对象的方法设计人人对弈程序329
16.3扩展游戏程序343
习题16344第17章集成开发环境345
17.1Visual Studio 2010的安装与启动345
17.2Visual Studio 2010的操作界面346
17.3创建和打开项目349
17.3.1创建项目349
17.3.2在解决方案中新建项目350
17.3.3在项目中添加项351
17.3.4打开项目355
17.3.5编辑源程序356
17.4生成和运行项目356
17.5调试程序357
习题17364附录AASCII码表365参考文献366
第1章C++入门1
1.1C++简介1
1.1.1C++的产生与发展1
1.1.2C++的特点2
1.2简单的C++程序3
1.2.1C++程序结构3
1.2.2输入与输出5
1.2.3注释6
1.3C++程序的上机执行过程7
1.4程序设计语言介绍8
1.4.1机器语言8
1.4.2汇编语言9
1.4.3高级语言10第2章基本数据类型与表达式14
2.1字符集与标识符14
2.1.1字符集14
2.1.2标识符14
2.1.3关键字15
2.2基本数据类型16
2.2.1整型16
2.2.2字符型16
2.2.3布尔型17
2.2.4浮点型17
2.3.1数值型常量18
2.3.2字符型常量19
2.4.1变量20
2.4.2常变量21
2.5运算符与表达式23
2.5.1算术运算符与算术表达式23
2.5.2赋值运算符与赋值表达式24
2.5.3逗号运算符与逗号表达式24
2.5.4自增自减运算符25
2.5.5类型转换25
2.5.6位运算符与位运算表达式27
2.6计算机中的数据表示29
2.6.1计算机中的数制29
2.6.2数值型数据的表示31
2.6.3字符型数据的编码表示33第3章语句与结构化程序设计34
3.1功能语句与顺序结构程序设计34
3.1.1赋值语句34
3.1.2空语句34
3.1.3复合语句34
3.1.4顺序结构程序设计34
3.2分支语句与分支结构程序设计35
3.2.1关系表达式和逻辑表达式35
3.2.2if语句38
3.2.3if…else语句38
3.2.4条件运算符与条件表达式40
3.2.5switch语句41
3.3循环语句与循环结构程序设计42
3.3.1for循环语句43
3.3.2do…while循环语句45
3.3.3while循环语句47
3.3.4循环语句的嵌套48
3.4转移语句49
3.4.1break语句49
3.4.2continue语句49
3.4.3goto语句50
3.5程序举例51
3.6算法与程序设计58
3.6.1算法设计与分析58
3.6.2程序设计风格61第4章数组与字符串62
4.1数组的定义与使用62
4.1.1一维数组的定义与使用62
4.1.2二维数组的定义与使用63
4.2数组的初始化65
4.3数组应用举例66
4.3.1一维数组应用67
4.3.2二维数组应用72
4.4字符串75
4.4.1字符串变量的定义与使用75
4.4.2字符串变量的输入输出76
4.4.3字符串运算77
4.4.4字符串数组78
4.5字符数组80
4.6动态数组81
4.7静态数组访问的下标越界问题83第5章函数84
5.1函数定义84
5.2函数调用与函数声明85
5.2.1函数调用85
5.2.2函数声明86
5.3函数的参数传递88
5.3.1值传递88
5.3.2引用传递89
5.3.3函数的默认形参值90
5.4函数的嵌套与递归91
5.4.1函数嵌套92
5.4.2函数递归92
5.5数组作函数参数95
5.5.1数组元素作函数参数95
5.5.2一维数组名作函数参数96
5.5.3二维数组名作函数参数97
5.6内联函数98
5.7重载函数99
5.8系统函数101第6章指针103
6.1指针变量103
6.1.1内存单元地址103
6.1.2指针变量的定义104
6.2指针的赋值与运算104
6.2.1指针的赋值104
6.2.2指针的运算105
6.3指针作为函数参数107
6.4指针与数组108
6.4.1数组的地址108
6.4.2指针与一维数组108
6.4.3指针与二维数组109
6.4.4指针数组111
6.5动态内存分配112
6.6函数指针115第7章自定义数据类型119
7.1结构体类型119
7.1.1结构体类型的定义119
7.1.2结构体变量的定义与初始化120
7.1.3结构体变量的引用121
7.2结构体应用123
7.2.1结构体数组123
7.2.2结构体和指针125
7.2.3结构体和函数127
7.3共用体130
7.3.1共用体的定义131
7.3.2共用体的应用132
7.4链表133
7.4.1线性表133
7.4.2线性链表134
7.4.3线性链表的操作135
7.5枚举类型140
7.5.1枚举类型和枚举变量的定义140
7.5.2枚举变量的赋值和引用141
7.5.3枚举变量值的输入与输出141第8章C++程序结构144
8.1C++程序构成144
8.2预处理命令145
8.2.1宏定义145
8.2.2文件包含146
8.2.3条件编译148
8.3变量的作用域151
8.3.1局部变量151
8.3.2全局变量151
8.4变量的存储类别152
8.4.1局部动态变量153
8.4.2局部寄存器变量154
8.4.3局部静态变量154
8.4.4外部变量声明155
8.5内部函数与外部函数157
8.5.1内部函数157
8.5.2外部函数158第9章类和对象160
9.1面向对象程序设计概述160
9.1.1面向对象的概念160
9.1.2面向对象程序设计的特点160
9.1.3面向对象与面向过程的区别161
9.2类和对象162
9.2.1类的定义162
9.2.2对象的定义165
9.2.3对象成员的访问166
9.3构造函数168
9.3.1不带参数的构造函数168
9.3.2带参数的构造函数169
9.3.3带默认值的构造函数170
9.3.4带初始化表的构造函数171
9.3.5构造函数的重载173
9.4析构函数175
9.5复制构造函数178
9.5.1对象的赋值178
9.5.2对象的复制179
9.6对象数组183
9.7const对象和const成员185
9.8成员函数存储与this指针187
9.9类静态成员189
9.9.1静态数据成员189
9.9.2静态成员函数190
9.10友元函数与友元类192
9.10.1友元函数194
9.10.2友元类196第10章继承与派生197
10.1继承与派生的概念197
10.2派生类的声明198
10.2.1派生类的声明198
10.2.2派生类的构成199
10.3派生类成员的访问特性201
10.3.1公有继承201
10.3.2私有继承202
10.3.3保护继承202
10.3.4多级派生时的访问特性203
10.4派生类的构造函数和析构函数206
10.4.1简单派生类的构造函数207
10.4.2有子对象的派生类的构造函数209
10.4.3派生类的析构函数210
10.5基类与派生类的转换212
10.5.1派生类对象的值可以赋给基类对象212
10.5.2派生类对象可以作为基类对象使用213
10.6类的继承与组合214
10.7继承在软件开发中的作用215
10.8多基类继承218
10.8.1定义多基类继承218
10.8.2多继承派生类的构造函数220
10.8.3基类成员名冲突221
10.8.4虚基类222第11章运算符重载227
11.1运算符重载的实现227
11.2运算符重载规则231
11.3运算符重载函数232
11.4重载流插入和流提取运算符235
11.5数据的类型转换238
11.5.1用转换构造函数实现类型转换238
11.5.2用类型转换函数实现类型转换241第12章多态与虚函数245
12.1多态性和绑定245
12.2虚函数248
12.2.1虚函数的定义248
12.2.2虚析构函数249
12.3纯虚函数与抽象类251
12.3.1纯虚函数251
12.3.2抽象类254
12.4动态绑定与虚函数表257
12.4.1多态类与非多态类257
12.4.2动态绑定的实现259第13章模板261
13.1模板的引入261
13.2函数模板262
13.2.1函数模板的定义262
13.2.2函数模板的调用262
13.2.3函数模板的重载264
13.3类模板267
13.3.1类模板的定义和使用267
13.3.2类模板的继承268
13.4类模板应用268
13.4.1数组类模板268
13.4.2线性链表类模板271第14章输入输出流和文件275
14.1输入输出与流275
14.2C++的流类和流对象276
14.3标准输入输出流276
14.3.1标准输出流277
13.4.2标准输入流278
14.3.3流成员函数280
14.4设定输入输出格式283
14.5文件处理287
14.5.1文件的打开和关闭287
14.5.2对ASCII码文件的读写289
14.5.3对二进制文件的读写291第15章异常处理296
15.1异常处理的基本思路296
15.2C++异常处理的实现299
15.2.1简单异常处理299
15.2.2类类型异常处理302第16章综合实例305
16.1用面向过程的方法设计人人对弈程序306
16.2用面向对象的方法设计人人对弈程序322
16.3扩展游戏程序336第17章集成开发环境338
17.1Visual Studio 2010的安装与启动338
17.2Visual Studio 2010的操作界面339
17.3创建和打开项目342
17.3.1创建项目342
17.3.2在解决方案中新建项目343
17.3.3在项目中添加项344
17.3.4打开项目348
17.3.5编辑源程序349
17.4生成和运行项目349
17.5调试程序350附录AASCII码表357参考文献358}

我要回帖

更多关于 经久不衰的意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信