查看: 418|回复: 0

[Java代码] 百战程序员_ Java1573 题

发表于 2017-10-10 09:16:17
尚学堂AD
百战程序员_ Java1573 题
1~100 题答案
QQ 群:100646724
掌握80%年薪20 万
掌握50%年薪10 万
全程项目穿插, 从易到难,含17 个项目
视频和资料持续更新
国内最牛七星级团队
马士兵、高淇等11 位十年开发经验专家录制
北京尚学堂科技内部资料
目录
百战程序员Java1573 题................................................................................................................. 4
百战程序员介绍.................................................................................................................................5
JavaSE 编程基础............................................................................................................................. 15
第一章初识Java..................................................................................................................... 15
阶段项目课程1.......................................................................................错误!未定义书签。
第二章数据类型和运算符......................................................................错误!未定义书签。
第三章控制语句......................................................................................错误!未定义书签。
第四章数组..............................................................................................错误!未定义书签。
阶段项目课程2.......................................................................................错误!未定义书签。
第五章面向对象......................................................................................错误!未定义书签。
第六章异常机制......................................................................................错误!未定义书签。
阶段项目课程3.......................................................................................错误!未定义书签。
第七章常用类..........................................................................................错误!未定义书签。
第八章容器..............................................................................................错误!未定义书签。
阶段项目课程4.......................................................................................错误!未定义书签。
第九章IO 流技术................................................................................... 错误!未定义书签。
第十章多线程..........................................................................................错误!未定义书签。
第十一章网络编程..................................................................................错误!未定义书签。
项目阶段课程5.......................................................................................错误!未定义书签。
附1:内部类专题(自学)........................................................................错误!未定义书签。
附2:线程池专题(自学)........................................................................错误!未定义书签。
附3:设计模式初步专题(自学,适合初级.更深入的会在框架阶段). 错误!未定义书签。
XML 技术.........................................................................................................错误!未定义书签。
反射技术.......................................................................................................... 错误!未定义书签。
正则表达式(自学)............................................................................................错误!未定义书签。
阶段项目课程6...............................................................................................错误!未定义书签。
百大项目第一阶段:项目调研...................................................................... 错误!未定义书签。
Oracle 和MySQL 数据库技术..................................................................... 错误!未定义书签。
阶段项目课程7...............................................................................................错误!未定义书签。
百大项目第二阶段:数据库表设计..............................................................错误!未定义书签。
存储过程.......................................................................................................... 错误!未定义书签。
JDBC 技术........................................................................................................错误!未定义书签。
阶段项目课程8...............................................................................................错误!未定义书签。
HTML 语言...................................................................................................... 错误!未定义书签。
CSS 语言.......................................................................................................... 错误!未定义书签。
阶段项目课程9...............................................................................................错误!未定义书签。
HTML5 新标签和新功能................................................................................错误!未定义书签。
BootStrap 技术.............................................................................................. 错误!未定义书签。
阶段项目课程10.............................................................................................错误!未定义书签。
JavaScript 语言.............................................................................................. 错误!未定义书签。
jQuery 技术.....................................................................................................错误!未定义书签。
阶段项目课程11............................................................................................ 错误!未定义书签。
服务器端编程(Servlet 技术)......................................................................... 错误!未定义书签。
JSP 技术........................................................................................................... 错误!未定义书签。
EL 和JSTL 标签库...........................................................................................错误!未定义书签。
AJAX 技术........................................................................................................错误!未定义书签。
阶段项目课程12.............................................................................................错误!未定义书签。
中级补充课程.................................................................................................. 错误!未定义书签。
阶段项目课程13.............................................................................................错误!未定义书签。
百大项目第三阶段:需求分析、概要和详细设计......................................错误!未定义书签。
Struts2 框架...................................................................................................错误!未定义书签。
Hibernate 框架.............................................................................................. 错误!未定义书签。
Spring 框架.....................................................................................................错误!未定义书签。
阶段项目课程14.............................................................................................错误!未定义书签。
Spring MVC 技术.......................................................................................... 错误!未定义书签。
MyBatis 框架..................................................................................................错误!未定义书签。
EasyUI 技术.....................................................................................................错误!未定义书签。
RBAC 技术.......................................................................................................错误!未定义书签。
shiro 安全框架................................................................................................错误!未定义书签。
阶段项目课程15.............................................................................................错误!未定义书签。
maven..............................................................................................................错误!未定义书签。
Linux 系统实战............................................................................................... 错误!未定义书签。
逆向工程、分页插件...................................................................................... 错误!未定义书签。
Nginx 服务器与vsftp 服务器...................................................................... 错误!未定义书签。
HttpClient、jsonp、dubbo....................................................................... 错误!未定义书签。
Redis 存储系统............................................................................................... 错误!未定义书签。
solr 企业级搜索.............................................................................................. 错误!未定义书签。
Zookeeper 分布式系统和服务集群搭建.................................................... 错误!未定义书签。
SSO 单点登录................................................................................................. 错误!未定义书签。
阶段项目课程16.............................................................................................错误!未定义书签。
JFinal 敏捷开发框架.......................................................................................错误!未定义书签。
百大项目第四阶段:项目核心模块开发......................................................错误!未定义书签。
自由项目和风险投资17.................................................................................错误!未定义书签。
百战程序员Java1573 题
班级编号:教学质量投诉邮箱: 1034558546@qq.com
本套课程体系为北京尚学堂科技集十年教学精华打造而成,并且是高端品牌“百战
程序员”的主要教学体系之一(约占1/4 课程,还有大数据、架构师、产品经理。4 核课
程让你挑战CTO 职位)。“百战程序员”有“身经百战”含义,我们希望在培训期间学
员就能身经百战,学习和参与各种项目,身经百战,脱胎换骨,高薪工作手到擒来。
《百战程序员Java1573 题》是集北京尚学堂10 年Java 教学精华所成, 同时按照
教学进度,从零开始步步深入,直到成为年薪20 万的程序猿。按照我们目前的数据统
计,能够完成1573 题80%的同学,年薪应该可以达到20 万左右。对于一般同学来讲,
能够完成50%就足够找一份年薪10 万的工作。可以说,本套题集字字千金!不,题题
千金。
由于课程量较大,而且加入了很多新技术,希望同学们课上认真跟讲师互动,课下
认真复习,争取毕业时拿到较高、较满意的薪水。
本套课程是尚学堂经过10 年教学改版的最新课程,包含了无数老师的心血。
如果学习期间,我们的教学活动有需要改进的地方,可以跟授课讲师直接交流,或
者您可以将具体意见直接投诉到北京总部邮箱:1034558546@qq.com. 我们将会在第
一时间进行改进,并与您取得联系。
本套课程的教学进度是经过尚学堂多位金牌讲师合力制定,有一定的科学性。
本套课程配套视频由全国最牛的“七星团队”录制。马士兵、高淇、裴新、邹波、
李毅、胡琦光、卢俊杰、齐毅、刘凯利、夏中云、高明鑫等。每位老师都有10 年以上
开发和教学经验。
本套课程体系(1.0 版)已经完成,视频和其他资料我们将每周进行更新, 想加入
我们一起学习,请加入QQ 群:453049965 或者416323638 通过申请后加入我们,
广交朋友,一起学习,一起战斗。
百战程序员介绍
让成功只需努力,不需运气
把小白培养成CTO 的黄埔军校
我们的理念:
让成功只需要努力,不需要运气!
我们的定位:
把小白培养成CTO 的黄埔军校
我们的承诺:
按效果收费,保障年薪,少一万,赔一万
我们的薪水保障(我们对课程有信心到会将保底薪水合同里面,愿意承担法律责任):
第一年年薪15 万(保底薪水,拒绝玩文字游戏)
第二年年薪30 万(保底薪水,拒绝玩文字游戏)
第三年年薪40 万(保底薪水,拒绝玩文字游戏)
为什么叫“百战程序员”?
北京尚学堂科技旗下高端品牌,十余年教学实践、项目实战,50 多位企业技术
总监参与研发课程,所有精华全部汇聚到“百战程序员”,致力于打造成“培养CTO 的
黄埔军校”。
源自成语“知己知彼,百战不殆”,广义的含义就是:做好充分准备,每次挑战
都能成功。这也是完全符合我们的理念“让成功变得简单,只需要努力,不需要运气”。
“百战”也暗含“百战百胜”之意,非常吉利。
“百战”也是我们教学方案的缩写“百大项目案例实战”,整个为期3 年时间,我
们会准备100 个项目实战案例,为大家冲击CTO 岗位做好充分准备。
最后,希望所有“百战程序员”, 靠自己努力,成为改变家庭命运的有责任感的战
士、奋斗的战士、不屈的战士、百战百胜的战士!
培养理念和课程体系:
2017 年
覆盖专业:(Java 方向)Java+大数据+架构师+产品经理
覆盖专业:(PHP 方向)Java+大数据+架构师+产品经理
CTO 的含义是”首席技术官”,国内一般称为“技术总监”,一般是分管技术的
副总级别,也就是公司技术一把手, 需要对公司整体的技术方案负全责, 这就需要
CTO 具有相当强的综合能力。
尚学堂十余年培训数万人,影响了几百万程序员,具统计只有约9.83%的程序员
最终走到了CTO 或类似级别的岗位,成为真正的人生赢家。典型代表是腾讯公司股东
和副总裁张志东先生。也是众多技术发烧友的“最终梦想”,也是我们“百战程序员”
的梦想,也告诉大家IT 界有很多技术宅男实际上身价亿万。
(百科链接:
http://baike.baidu.com/item/%E5%BC%A0%E5%BF%97%E4%B8%9C/12113)
业界公认评价
张志东很值得尊敬,一是其技术上的炉火纯青,即便是他的对手,都对这点佩
服得五体投地。QQ 的架构设计源于1998 年,截止到2009 年8 月,QQ 用户数从
之前设计的百万级到现在的数以亿计,整个架构还在适用。
张志东值得尊敬的另一个原因是其对物质上的追求极低,在腾讯创始人们纷纷
在澳洲买别墅,开游艇,高管集体团购宝马的态势下,张志东却一直开着20 多万
的中档车。”
(马化腾旁边的就是:腾讯另一个主要创始人,张志东)
我们设计的课程涵盖了作为CTO 需要了解的绝大部分技术内容,是尚学堂十余年研
发的精华所在,累计投入研发经费1200 万元,里面包含了50 余位CTO 的技术精华,
并且我们会持续更新。
我们设计为四个方向,是为了全方位综合性的培养人才,事实上,只有精通任何一
个方向,熟悉其他一个方向,就足够能拿到40 万以上的年薪。各位在学习的时候,也
不要期望能将多个方向全部精通。我们的理念仍然延续北京尚学堂最基本的教学理念
“实战化”,希望百战程序员们“身经百战,见识各种技术、各种项目,集百家所长”,
这样更有机会成为CTO。
课程体系:(详见Java、大数据、互联网架构师、产品经理)
Java/PHP: 作为未来的CTO 怎么能不熟练掌握一门开发语言呢? 这是进入行业的基础
大数据:大数据是目前和未来都很热门的方向。课程涵盖:大数据、机器学习、云计算。
互联网架构师: 涵盖高并发、虚拟机调优、数据库优化、分布式架构等。
产品经理: 乔布斯就是最好的“产品经理”,不懂得产品设计过程如何做好“CTO”?
为何我们敢保障15 万(第一年)、30 万(第二年)、40 万(第三年)年薪, 甚至写到合
同里面?【即使你在家自学本套1370 题目,掌握80%,就可以挑战20 万年薪了!】
事实上,只要精通任何一个方向,熟悉其他一个方向,就足够能拿到40 万以上的年薪。
定位4 个方向全方位发展,让学员更安全更有保障能拿到对应薪酬,这样也让公司更安
全,让“百战程序员”品牌更有分量。
看看“百战程序员”前身“大数据班”学员的就业吧,仅仅掌握了Java 和大数
据,第一年就个个嗷嗷叫,冲击30 万年薪了。当然,为了安全起见,我们第一年保底
薪资保守的定到15 万。以前的“双核CPU”课程就足够保障了,那么现在的“四核
CPU”课程呢? 学员们很期待,我们也很期待!
以下聊天记录为学员和老师的对话,为了不影响学员工作,一般将名字隐去。


年薪37 万,这只是刚毕业第一年的学员!还有一个23K*12=27.6 万年薪。注意,这只
是学了Java,再学了大数据的学员,并且只是第一年。如果,将架构师和产品经理学完
呢?当然,我们不主张一直再学校学习,第二年和第三年全部是平时上班,周末集训。
当然,这些是其中的优秀学员!
下面是相对普通的毕业学员,一行三人来北京学习,毕业后分布在北上广深一线大城市,
平均月薪16k,年薪为:16*12=19.2 万,未加五险一金、补助和年终奖。加入的话,
妥妥突破20 万。
百战程序员培养时长和方式:
周期目标说明
第一年高级程序员
我们只培养高端
人才,拒绝半桶
水、三脚猫
1. 专业培养期(全日制学习):6 个月
2. 加强个人综合能力培养,口才、管理能力培养。
3. 产品研发期:1-2 个月(需要自己独立完成的产品
才能完成毕业)
4. 开始就业,保障正式入职年薪15 万
第二年技术经理1. 两周一次高端技术培训、CTO 聚会(邀请合作企业
高管、为大家聚集人脉)
2. 一周一次的高端技术授课(网络直播方式)
3. 人脉协助积累(人脉里面有黄金)
第三年CTO 1. 两周一次高端技术培训、CTO 聚会(邀请合作
企业高管、为大家聚集人脉)
2. 一周一次的高端技术授课(网络直播方式)
3. 人脉协助积累(人脉里面有黄金)
4. 猎头服务
腾讯等大型企业对技术人员定级和相应的薪酬标准(2015 年,后续年份自我脑补):
入学方式:
1. 进入官方网址:加群100646724 咨询
2. 联系报名
3. 自学<Java300 集第一季>内容(共100
集,约40 小时课程。不需要学习第二季
和第三季)
北京大学计算机系教授都推荐的课
程,你怎么能不自学,可以自行看
视频学习,也可以加入自学辅导班
(收费:480 元,时长4 年有效)
4. 参加入学考试(技术笔试、面试)
5. 通过考试者,可以入学
 大学毕业的报名者,请携带毕业证
和身份证
 大学在校生,请携带学生证和身份

6. 免费实训4 天,双向选择
 免费特训4 天,能不能撑下来。能
撑下来就跟,不能淘汰。
7. 正式签订合同,开始学习
收费方式:
1. 可0 学费入学!可参与合作单位、百度金融等大型机构和银行的学习贷款,让你零
学费入学,赚钱后再还学费(通过学习每个月多赚3000 就相当于免费学了。很多
学员学完后是每个月多赚1 万)!
2. 每年付一次,双向选择,客户决定是否续费第二年服务
开班计划(2017 年,共计:6 期)
班级编号说明
百战1 期2017 年4.1 日入学互相考察4 天4.5 日正式开班
百战2 期2017 年5.15 日入学互相考察4 天5.20 日正式开班
百战3 期2017 年7.1 日入学互相考察4 天7.5 日正式开班
百战4 期2017 年8.15 日入学互相考察4 天8.20 日正式开班
百战5 期2017 年10.7 日入学互相考察4 天10.11 日正式开班
百战6 期2017 年12.1 日入学互相考察4 天12.5 日正式开班
百战7 期以后2018 年后,每月1 号开班(除非遇到春节时间,时间不调整)
JavaSE 编程基础
第一章初识Java
1. 你学习编程的目的是什么?学习编程最快的办法是什么?
IT 已经深入我们的工作和生活。现在小学生都开始学习编程了,作为大学生学习编
程既为了以后谋生也为了以后发展。不会编程的厨师不是好家长!
学习编程最快的办法就是:“实战化、敲代码!”。尚学堂老师说:“很多不理解的问
题,实战了,敲一遍,做一遍,可能就豁然开朗了”,深以为然。
2. 程序员的职业规划是什么?我怎么能拿到10 万年薪,30 万年薪,50 万年薪?
3 年以下是初级程序员。待遇应该是10-20 万之间。3-5 年是中级程序员,待遇在
20-30 之间。5 年以后,高级程序员或架构师。再往后,看造化看情商看职场软实
力。有人年薪百万,有人原地踏步。
我的职业规划是:这几个月努力把尚学堂的课程学到位,把老师的经验通通吸过来,
掌握70%,争取达到中级程序员的水平。起步能够高一点。争取月薪15K 以上。如果
JAVA 学习完事,还能学的动就报大数据或者架构师,再深造,一口气学完。将5
年工作需要的整个体系学习一遍。
3. 一个技术点,怎么样才能算学会?需要能默写出来吗?
不需要。通过查资料,能利用这个技术点解决问题就算掌握了。反复用几次,就熟悉了。
4. 北京尚学堂旗下“百战程序员”的理念和定位是什么?
“百战程序员”是尚学堂旗下高端品牌,云集的都是国内最好的老师、严格入学考试的
优秀学员。定位就是做“培养CTO 的黄埔军校”,每年名额有限、开班有限,抓精品。
5. 如何考取百战程序员,进入正式班级学习?
欢迎找我咨询
6. 说出计算机语言为什么按照第一代、第二代、第三代发展?
降低计算机语言开发难度,减少对计算机硬件的直接编程
7. Java 有什么核心优势让其流行?
跨平台性
互联网上的电脑硬件不同,软件环境差异较大。需要一个跨平台的语言。
8. Java 的三个版本是什么?
JavaSE: 定位在客户端,主要用于桌面应用软件的编程
JavaEE:定义在服务器端的企业版,主要用于分布式网络程序的开发
JavaME:主要应用于嵌入式系统开发,如手机和PDA 的编程
9. Java 是哪个公司发明的? 现在这家公司处境如何? 为什么?
Java 是Sun 公司发明的
Sun 公司在2009 被Oracle 公司收购
因为Sun 是一家极具创新能力的公司,但是没能利用Java 构建一个强有力、可变现的
生态系统,没打好Java 这张牌
10. Java 的跨平台是通过什么实现的?
通过在不同平台上安装相应的Java 虚拟机实现的;虚拟机可以将字节码文件(class)
解释成相应平台的机器语言并执行
11. DOS 下,自动补齐命令的键是哪个?DOS 下,想查找以前执行的命令用哪个键?
DOS 下,自动补齐命令的键是哪个Tab 键
DOS 下,想查找以前执行的命令用上下箭头, ↑或↓键
12. DOS 下,dir 命令表示什么含义? cd 表示什么含义?
dir:查看某个目录下的子目录和文件
cd:改变当前目录
13. 【上机】安装JDK、配置环境变量、并写出自己的第一个HelloWorld 程序
需要配置JAVA_HOME,path 两环境变量
public class Test{
public static void main(String args []){
System.out.println("Hello World");
}
}
14. 为什么采用Java_HOME 的方式配置环境变量较好?
便于Java_HOME 路径的重用,避免由于JDK 安装路径变化而修改多个环境变量;
15. public class 的类名必须跟文件名保持一致吗?
public class 的类名必须跟文件名保持一致
16. 编程风格一定要:成对编程和缩进。用文字或代码说明如何实现成对编程和缩进。
public class Test{
public static void main(String args []){
System.out.println("Hello Java");
System.out.println("尚学堂");
}
}
17. system.out.println("hi"); ----这句代码能否顺利执行?
不能顺利执行;Java 区分大小写,需要将system 修改为System
18. 一个Java 源文件可以写多个class 吗?编译后,会不会生成多个class 文件?
一个Java 源文件可以写多个class 编译后会生成多个class 文件
19. 编程时,为什么需要注释?注释的类型?
注释就是程序员为读者作的说明,是提高程序可读性的一种手段;注释同时也是调试代
码时的一种手段,可以对某些不要执行的代码进行注释;
注释分为单行注释,多行注释和文档注释三种类型;
20. 多行注释能不能嵌套使用?
多行注释不能嵌套使用
21. 【上机】使用snagit/FastStone Capture 软件截图
作为一款优秀的抓图软件,snagit 在截图方面体现出了卓越的性能。目前虽然版本已经
更新到snagit12,但是汉化处理的比较稳定的,还是snagit7,所以在这里我就以snagit7
为例把入门级的抓图经验分享一下。
1、基本界面:
打开snagit,软件默认的显示面板左上角是我们最常用的选项。拖动鼠标选取来截图的
是【区域】,可以保存到文件,也可以直接复制到剪切板;【窗口】是我们在操作中出现的各
种对话框,如果出现重叠窗口,则是根据光标移动到所接触的边框范围来确定,比如光标在
最新对话框内,那只能抓起最小的,如果单击在最大对话框,那抓起的就是最大的窗口。单
击右下角的箭头按钮就可以连带光标抓取。
2、参数设置:
要想快捷截图,最好是利用快捷键,一来可以抓起图标,二来方便快捷。单击【工具】
菜单,找到【程序参数设置】。我们可以根据个人偏好设置【热键】就是快捷键,如果不想
升级(不是想要很多美化功能的,版本7 足够了)可以在【升级器选项】取消升级检查。
3、输出设置:
一般来说,jpg 格式是比较常用的格式,为了方便输出格式管理,我们可以设置默认的
文件输出格式,同时可以设置默认的保存目录。
4、抓取截图:
按下快捷键,我们会看到图像左上角或右下角会出现放大镜效果图像,拖住左键不放就
可以选取区域;如果抓起窗口则是根据软件的矩形边框范围选择后确定。如果不需要修饰想
保存,单击【完成】;如果想复制可以单击【剪贴板】按钮。

5、图像修饰:
修饰图像要好好研究一下工具栏,这里以文字、线条、箭头和矩形为例图解一下,因为
这些比较常用,其余可以自己研究一下。

22. 【上机】使用录屏软件Camtasia 录制和转换视频
1、首先打开我们的Camtasia Studio,你将看到如下界面,点击录制屏幕。
2、之后你会看见电脑上跳出了一个小窗口,如下图:
3、在Select area 中选择Full screen 为全屏录制,Custom 中可以自定义录制的窗口
大小,大家根据录制视频的要求自行设置录制窗口。
4、在Recorded inputs 中可以设置摄像头和音频的打开或关闭
5、设置好后,我们点击右边的rec 按钮开始录制视频,录制过程中按F10 停止录制,
F9 暂停。
6、录制完成我们按F10 停止,将会出现如下界面,我们点击右下方的Save and edit
按钮保存,建议保存为.camrec 格式,放心后期编辑后可选择其他保存格式
7、点击保存之后会跳出如下界面,我们选择“正在录制的尺寸”,免得大小设置不当导
致视频变形。
8、然后我们就可以对录制好的视频进行编辑了,编辑好之后点击左上方的“生成并共享”
然后选“自定义生成设置”。然后选择自己需要保存的格式(建议选avi 格式)。后面
的默认下一步就ok 了。
23.
【上机】使用onenote 记笔记和画图
、Office2013 的安装在之前的经验中已经介绍过了,这里就不在多说,如果还没有安装
的朋友可以去看我的经验。
首先单击开始按钮——展开Office 文件所在的文件夹,选择OneNote 软件打开。
2、打开以后这个软件就会自动的默认开机启动,在任务栏中我们就可以看到它的图标
了。
以后我们想要用的时候,按下win 图标建+N 即可快速打开OneNote 软件。
3、选择新建一个记事本——然后就会弹出一个记事本的小窗口,单击右上角的全屏
箭头。
这样我们就可以快速的打开OneNote 进行记事了。
新建笔记本
1、打开OneNote 后,会有一个默认的我的记事本选项,我们可以自己建立自己的笔记
本,这样使用起来比较方便。
单击你的笔记本——就会出现一个下拉菜单——选择新建。
2、输入你的笔记本的名字,然后单击创建笔记本——选择暂不启用共享即可。
笔记本分区
1、在我们新建笔记本之后就可以在里面进行编辑了,当然机制编辑很乱,我们需要做好分
区,右击笔记本上面的新分区——重命名——输入自己的名称。
2、单击后面的加号可以新建分区——直接输入名称即可。
3、编辑文字,在下面的位置单击直接输入文字即可,在OneNote 中我们可以随意选择文字
所在的位置,输入完一段文字以后,我们可以选择其他的地方再次单击输入就可以形成新的
编辑框。
4、将鼠标放到编辑框的最上面可以随意的拖动位置,很方便我们的进行更改。
5、同样将鼠标放到编辑框的上面,就可以为每个窗体内的文字设置不同的字体和颜色,
很方便我们以后的查看。
6、在OneNote 中我们编辑的操作和word 中一样,可以插入各种office 支持的文件,
直接单击菜单栏中的开始、插入、绘图等等进行操作即可。
7、不使用的直接选中后按下delete 键删除即可。
阶段项目课程1
24. 【项目】台球游戏小项目
练习目标:
1. 找到敲代码的感觉2. 收获敲代码的兴趣
3. 作出效果,找到自信4. 从一开始就学会调试错误
5. 掌握Java 代码基本结构
注意:不要求学生理解代码的语法功能,只要按照代码结构输入代码,能够经过调试
实现代码的正常运行即可;
全部讲解和练习时间控制在2 小时以内
项目需求:
桌球在球桌中按照一定线路和角度移动;遇到边框会自动弹回
要求:
即使看不太懂,也要照着敲如下游戏代码,至少5 遍。要求所有字符和源文件一
致。如果报异常,请细心看所在行和老师代码有何区别:
import java.awt.*;
public class BallGame extends Frame {
//球桌和桌球图片
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
//桌球的起始位置
double x=100;
double y=100;
//桌球移动的初始角度60°
double degree = 3.14/3;
/**
* 绘制一次桌面和桌球
*/
public void paint(Graphics g){
//绘制一次桌面和桌球
System.out.println("窗口被画了一次!");
g.drawImage(desk, 0,0, null);
g.drawImage(ball, (int)x,(int)y, null);
//桌球的下一次坐标位置
x = x+ 10*Math.cos(degree);
y = y+10*Math.sin(degree);
//到了球桌四个边框后桌球角度的变化
//1.如果到了底部,就要变角度
if(y>480-30-40){//480是球桌高度,30是球的直径,40是桌边框宽度
degree = - degree;
}
//2.如果到了右边界,就要变角度
if(x>856-30-40){
degree = 3.14-degree;
}
//3.如果到了上边界,就要变角度
if(x<20+20){
degree = 3.14-degree;
}
//4.如果到了左边界,就要变角度
if(y<20+20){
degree = -degree;
}
}
/**
* 绘制多次次桌面和桌球
*/
void launchFrame(){
//四个方法什么含义,你能根据运行结果看懂吗
setSize(856, 480);
setLocation(50, 50);
setTitle("尚学堂--程旭源作品");
setVisible(true);
//每隔40毫秒绘制一次桌面和桌球
while(true){
repaint(); //重画窗口!
try{
Thread.sleep(40); //40ms 1s=1000ms
}catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
System.out.println("我是尚学堂的程旭源!");
BallGame bg = new BallGame();
bg.launchFrame();
}
}
第二章数据类型和运算符
25. 常用的进制有哪些?
十进制、二进制、八进制、十六进制
26. 如何将10 进制转换为2 进制数据
除2 取余,逆序排列
举例:
27. 位、字节、字符的概念及其计数范围?
位:计算机存储信息的基本单位,代表一个二进制数位,
计数范围:0 或1
字节:8 个连续的二进制位为一个字节,可以存放1 个西文字符的编码
计数范围:-128~127
字符:单引号用来表示字符常量,例如‘A’,‘张’
计算范围:0-65535 之间的编码
28. 标识符的作用是什么?
用作给变量、类和方法命名
29. 这个标识符合法吗? int aaa@bbb = 33;
不合法
30. 标识符能不能使用汉字开头?为什么?
可以,字母的含义包括:英文、汉字等(不建议大家使用汉字来定义标识符)
31. Java 中有没有goto 语句?有没有goto 关键字?
java 中没有goto 语句,有goto 关键字
32. byte,short,int,long 类型,分别占用几个字节?表数范围多大?
byte:1 个字节-128~127
short:2 个字节-215~215-1
int:4 个字节-231~231-1
long:8 个字节-263~263-1
33. 整型常数默认是什么类型?
int 类型
34. float,double 分别占用几个字节?
float:4 个字节
double:8 个字节
35. 如何用科学计数法表示3.14?
314E-2
36. 浮点常量默认是什么类型?
double 类型
37. 如下写法哪些是不对的:
a. byte b = 30;
b. byte c = 500;
c. long d = 2343223;
d. float f = 3.14;
b:不对,超出了byte 的范围
d:不对,缺少f,应该写为3.14f 或3.14F
38. 浮点数能用于比较吗?下面可能打印什么结果:
float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2 ){
System.out.println("d1==d2");
}else{
System.out.println("d1!=d2");
}
打印结果为: d1 == d2
float 类型的数据在内存中的存储形式为科学计数法, 且有效位数为7 位, 则d1 为
4.2343242E7, d2 用科学计数法表示同样为4.2343242E7, 因此d1 == d2
39. 字符型变量几个字节? 这种写法对不? char c = "d";
字符型变量占2 个字节
写法不对,应该为char c=‘d’;
40. 布尔型变量占用空间是一位还是一个字节?
布尔型变量占一位
41. 这种写法好不好? if(b==true)
不好,但是正确的写法。为了避免不小心写错成if(b=true),一般程序员都直接写为if(b)
42. 常量的声明使用哪个关键字?
常量的声明使用的关键字是final
43. 常量的命名规范是?
全部由大写字母组成,单词间通过下划线来界定
44. 解释一下,驼峰原则?
当变量或函数名称需要多个英文单词组成时,首字母以小写开头,每个单词首字母大写
(第一个单词除外)
45. 使用Scanner 接收键盘输入,是否一定要加import Java.util.*; ?
需要导包
也可以写为import java.util.Scanner;
46. 类名的命名规则是? 方法名、变量名的命名规则是否一致? 常量的命名规则是?
类的命名规则:每个英文单词的首字母都大写
方法名、变量名的命名规则:第一个单词首字母小写,从第二个单词后,每个单词的首
字母大写
常量的命名规则:字母全部大写
47. 引用类型是占用几个字节?
引用数据类型占4 个字节,用于存储对象的引用
48. 算术运算符中类型提升是怎么回事? a+b 返回什么类型? int a=3; long b=3;
类型提升指的是自动类型转换
a+b 返回的是long 类型
49. i++和++i 的异同之处
相同:都是变量i 自增1
i++与++i 作为一条单独语句使用时, 没有区别
不同:i++是先使用i 的值进行其他运算,然后再自增1
++i 是先自增1,然后再使用i 的值进行其他运算
50. 关系运算符中,能不能这么写:"1<a<3"?
不能,
应该写为a>1&&a<3
51. 逻辑运算符|、&、!、^的含义及其运算规则?
| 或: 只要有一个为true,则直接返回true
& 与: 只要有一个为false,则直接返回false
! 非: 如果为true,则返回false,如果为false,则返回true
^ 异或: 如果两个操作数相同,则返回false,如果两个操作数不同,则返回true
52. 运算符||和|的异同之处
相同:
|| 与| 都是逻辑运算符, 运算规则都为只要有一个为true,则直接返回true
不同:
|| 短路或: 从左到右计算,如果符号左边的操作数为true,则不会继续计算,直接返回
true; 如果符号左边的操作数为false,则需要继续计算
| 逻辑或:操作数左右两边的操作数都需要计算,不会发生短路
|| 只是逻辑运算符
| 还可以是位运算符中的按位或符号
53. 5*4 最快的运算方式是?
位运算5<<2
54. 这两个表达式分别返回什么结果? ((1<3)?"a":"b")+3+4, x=-2; x > 0 ? 1 : (x
== 0 ? 0 : -1)
((1<3)?"a":"b")+3+4 返回结果为a34
x=-2; x > 0 ? 1 : (x == 0 ? 0 : -1) 返回结果为-1
55. 什么情况下,加号会变成字符串连接符?
“+”号左右一个为String 类型时,则变成字符连接符
56. 4&5,4|5 的结果分别是多少? 4&&5 这个操作可行吗?为什么?
4&5 的结果为4
4|5 的结果为5
4&&5 这个操作不可行,因为&&左右要求为boolean 类型表达式
57. int 能否自动转换成byte,short,char? 是否有一定条件才能转换?
不能
需要强制类型转换
58. long 能自动转换成int 吗?long 能自动转换成float 吗?
long 可以自动转成int
long 可以自动转成float
59. 自动类型转换中,容量小和容量大指的是什么意思?
容量大小指的是不同数据类型的存储数据的范围
60. 强制类型转换中,是否可能发生数据丢失?
可能发生数据丢失
61. 布尔类型能否自动转换为int? 如果不能,简述理由。
不能
因为类型不匹配
62. 下面两种写法,哪个较好:
a. 70L*60*24*365*70*20
b. 70*60*24*365*70*20L
第一种写法好;
第二种表达式的前半部分70*60*24*365*70 的乘积有可能会超过int 的取值范围, 导致
精度损失
第三章控制语句
63. 三种控制结构是什么?
顺序结构,选择结构,循环结构
64. 如果if 语句后面不写{},if 的控制范围是否只限于第一句?
正确
65. Math.random()是什么意思?如果想获得15-20 之间的随机数,怎么办?
产生一个0-1 之间的随机数,包含0 但不包含1
(int)(Math.random()*6)+15;
66. switch 语句的功能是否完全可以使用if else if else 多选择结构来代替?如果是,为
什么还需要switch 结构?
可以
switch 一般用来做多值的判断,如果判断条件为区间,则最好使用多重if 来做,如果是
等值情况最好使用switch 来做
67. switch 中的表达式的结果需要是什么类型?
byte,char,short,int
jdk1.5 加入了枚举
jdk1.7 加入了String
68. switch 语句中,一个case 开始执行后,什么时候结束执行这个case 的语句?
遇到break 结束执行这个case 语句
69. switch 语句中,default 是否必须写?
不是必须写
70. 下面代码有什么错误?
switch (c2) {
case 'y';
case 'w';
System.out.println("半元音");
break;
default:
System.out.println("辅音");
}
case 后的表达式后面应该是“:”冒号
71. 循环结构模拟了现实世界中的什么逻辑?
循环结构模拟了现实世界中的“重复问题“的逻辑
72. 循环结构的四种内部结构是什么?
while(布尔表达式){
循环体;
}
do{
循环体;
}while(布尔表达式);
for(初始表达式;布尔表达式;迭代因子){
循环体;
}
foreach(数组或集合中元素的类型迭代变量:数组或集合名){
循环体;
}
73. while 和dowhile 有什么区别?
当条件不成立时,do-while 至少执行一次
74. 什么情况下,会出现死循环?并写出一个例子来
循环条件始终成立时,则会出现死循环
while(true){
System.out.println(“helloworld”);
}
75. for 循环相比while 循环有什么优势?
语法结构比while 简便,
通常用于解决循环次数固定的问题
76. 下面代码都有什么问题:
do{
System.out.println(a);
a++;
} while (a<0)
a 没有初始化
77. 下面代码有错误吗?如果有,指出错误:
for(int i=0;i<=10;i++){
System.out.println(i); //循环体
}
System.out.println("(((((("+i);
i 超出了作用域的范围
78. 循环中,break 的作用是?continue 的作用是?
break 用于强行退出循环,不执行循环中剩余的语句
continue 用于跳过本次循环, 不执行continue 后的语句, 继续下一次循环
79. 语句块能否使用外部的变量?语句块中定义的变量,外部能否使用?
语句块能使用外部的变量, 但是语句块中定义的变量外部不能使用
80. 方法的定义中,是否必须要有返回值类型?如果确实不需返回值,使用哪个关键字声
明?
返回值类型不是必须的
不需要返回值使用关键字void
81. 方法的定义中,return 是否必须?它有什么作用?
不是必须
return 语句终止方法的运行并指定要返回的数据
82. Java 中,参数的传递使用值传递还是引用传递?
值传递
83. 方法定义中,形式参数和实际参数有什么区别?用自己的话描述。
方法定义时的参数称为形式参数,需要数据类型
方法调用时的参数称为实际参数,不需要类型,只需要值
84. 方法定义时,使用实参还是形参?
方法定义时,使用的是形参
85. 定义形参时,必须要写变量类型吗?
必须要写变量类型
86. 实参类型是否必须和形参类型匹配?
必须匹配
87. 什么是方法的重载,有什么作用?
方法重载:
[1]在同一个类中
[2]方法的名称相同
[3]参数列表不同
[4]与访问修饰符和返回值类型无关
[5]与异常无关
作用:
传递不同的参数实现相同的效果
88. 两同三不同指的是?返回值不同构成重载吗?形参名称不同构成重载吗?
两同:同一个类中,方法名称相同
三不同:参数列表的参数的类型,个数,顺序不同
返回值不同构不能方法得载
形参名称不同构不成方法重载
89. 递归算法中,递归头和递归体分别指什么?
递归头:什么时候不调用自己方法,即递归的结束条件
递归体:什么时候需要调用自己方法,即自己调用自己
90. 递归算法的优点是什么?缺点是什么?
递归的优点:将问题逐渐简单化
递归的缺点:会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度比循
环慢的多。
91. 【上机】使用递归算法完成阶乘算法
public static int jieCheng(intnumber){
if (number==1) {
return 1;
}else{
return number*jieCheng(number-1);
}
}
92. 【上机】根据随机生成的的月份,打出该月份的天数.(不考虑闰年、闰月)
public class Test {
public static void main(String[] args) {
int day = 0;
int ran = (int) (Math.random() * 12) + 1;
switch (ran) {
case 2:
day = 28;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
default:
day = 30;
break;
}S
ystem.out.println(ran + "月,共" + day + "天");
}
}
93. 【上机】用while 和for 循环分别计算100 以内奇数和偶数的和,并输出。
(1)求1-100 以内奇数的和;
用while 循环:
public class Test {
public static void main(String[] args) {
int i = 1;
int sum = 0;
while (i<= 100) {
sum = sum + i;
i += 2;
}S
ystem.out.println("1-100之间所有奇数的和是"+sum);
}
}
用for 循环:
public class Test {
public static void main(String[] args) {
int i = 1;
int sum = 0;
for (i = 1; i<= 100; i += 2) {
sum = sum + i;
}S
ystem.out.println("1-100之间所有奇数的和是" + sum);
}
}
(2)求1-100以内偶数的和(略)
94. 【上机】用while 和for 循环输出1-1000 之间能被5 整除的数,且每行输出3 个。
用while:
public class Test {
public static void main(String[] args) {
int i = 1;
int count = 0;
while (i<= 1000) {
if (i % 5 == 0) {
System.out.print(i + "\t");
count++;
if (count % 3 == 0) {
System.out.println();
}
}i
++;
}
}
}
用for 循环:
public class Test {
public static void main(String[] args) {
int i = 1;
int count = 0;
for (i = 1; i<= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
count++;
if (count % 3 == 0) {
System.out.println();
}
}
}
}
}
95. 【上机】打印出九九乘法表
public class Test {
public static void main(String[] args) {
for (int i = 1; i<= 9; i++) {
for (int j = 1; j<= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j)
+ "\t");
}S
ystem.out.println();
}
}
}
96. 【上机】编程求:Σ1+Σ2+……+Σ100
public class Test {
public static int getSum(intnumber) {
if (number == 1) {
return 1;
} else {
return number + getSum(number - 1);
}
}
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i<= 100; i++) {
sum += getSum(i);
}S
ystem.out.println("和为:" + sum);
}
}
97. 【上机】生成0-100 随机数,直到生成88 为止,停止循环!
public class Test {
public static void main(String[] args) {
// 生成1-100随机数;
int r = (int) (Math.random() * 100) + 1;
while (r != 88) {
r = (int) (Math.random() * 100) + 1;
}S
ystem.out.println(r);
}
}
98. 【上机】把100~150 之间不能被3 整除的数输出
public class Test {
public static void main(String[] args) {
for (int i = 100; i<= 150; i++) {
if (i % 3 != 0) {
System.out.println(i);
}
}
}
}
99. 【上机】打印出实心10*10 正方形、空心10*10 正方形
public static void main(String[] args) {
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
System.out.print("*");
}S
ystem.out.println();
}
}
100. 【上机】打印出实心10*10 菱形, 空心10*10 菱形
public class Test {
public static void main(String[] args) {
// 1-6行正三角
for (int i = 0; i< 6; i++) {
// *前空格
for (int j = 0; j< 5 - i; j++) {
System.out.print("");
}/
/ *
for (int j = 0; j< 2 * i + 1; j++) {
System.out.print("*");
}/
/ *后空格
for (int j = 0; j< 5 - i; j++) {
System.out.print("");
}S
ystem.out.println();
}/
/ 7-11行倒三角
for (int i = 0; i< 5; i++) {
// *前空格
for (int j = 0; j<i + 1; j++) {
System.out.print("");
}/
/ *
for (int j = 0; j< 9 - 2 * i; j++) {
System.out.print("*");
}/
/ *后空格
for (int j = 0; j<i + 1; j++) {
System.out.print("");
}S
ystem.out.println();
}
}
}
101. 【上机】将如上所有上机相关算法的作业,封装成方法,便于重用。



回复

使用道具 举报