第一篇:会计手册自学第一部分
会计手册自学第一部分
第三章 资本性支出业务 本章主要描述了以下内容:
资本性支出的基本情况:包括公司资本性支出业务涉及的内容;公司总部与分子公司在资本性支出业务中的管理权限;资本性支出的主要业务流程、业务内容及涉及的部门。
资本性支出业务涉及的主要控制内容:包括工程物资业务控制、在建工程及研发支出业务控制、固定资产业务控制、无形资产业务控制、长期待摊费用业务控制。
资本性支出业务活动的会计处理:包括工程物资、在建工程及研发支出、固定资产、无形资产、长期待摊费用的业务处理。
第一节 资本性支出主要业务活动
一、资本性支出的基本情况
公司资本性支出业务涉及工程物资业务、在建工程及研发支出业务、固定资产业务、无形资产业务、长期待摊费用业务。其中,工程物资是为在建工程准备的各种物资,在建工程主要为基建、技改、信息化建设工程等,研发支出业务包括应资本化与费用化的业务,无形资产主要为采矿权和土地使用权,长期待摊费用主要为开办费、项目前期费、经营租赁固定资产改良支出。
公司总部对各分、子公司资本性支出项目实施计划管理及资金预算管理,主要对项目的立项、可行性研究报告、信息化建设的需求说明书、年 度资本性支出计划、无形资产获取计划、项目初步设计进行审查审批,对签订采矿权出让或转让协议、项目的招投标、合同签订、项目开工、设计变更和概算的调整、工程施工管理、资金使用计划进行控制,组织500万元以上工程项目的竣工验收和全部工程项目的审计,负责对资产处置的审批、无形资产的摊销,其他方式取得固定资产的处理,并对公司总部的信息化建设实施全过程的项目建设管理;各分、子公司负责本单位资本性支出项目的年度计划编制,组织编写可行性研究报告,进行初步设计报批,组织签订采矿权出让或转让协议、项目招标、签订施工合同,进行项目的设备、工程物资采购,对工程施工进行管理,负责工程变更、设计概算调整的核实与报批,进行工程月度结算、资金申请与支付,对工程决算进行审定,组织工程竣工的生产验收和500万元以下工程竣工验收,进行工程的完工结算,办理采矿权出让或转让手续、取得采矿权,进行长期资产的管理,长期待摊费用的摊销,固定资产的报废清理。
资本性支出业务循环主要以年度计划的审批为起点(新项目需先进行立项审批,编制报审可行性研究报告,进行初步设计,并审批,组织招标、签订工程施工合同;采矿权项目组织资源初步调查分析,确定目标矿区,编制年度资源获取计划),按项目计划编制资金使用计划报批,工程管理部门按项目计划组织工程施工,对发生的工程变更、设计概算调整进行核实与报批,按进度编制月度结算,按已完工程编制审定工程结算书,组织完工工程的生产验收和500万元以下工程的竣工验收,出具工程竣工验收报告(500万元以上工程的竣工验收和工程审计由公司总部进行);矿产资源部向所在省国土资源部门申报办理采矿权,总部审定后,签订采矿权出让或转让协议,办理采矿权出让或转让手续,取得采矿权;财务部按资金使 用计划和进度情况编制现金预算报审,进行月度工程结算付款,完工工程结算付款,取得无形资产的款项支付,长期资产的摊销、处置、报废;装备能源部门组织形成固定资产的转固和资产的实物管理,并配合财务部门做好报废清单及清理处置的报审。
资本性支出业务活动主要体现为按项目进行的成本费用核算管理、资产的原始成本与折余价值的管理以及上述资产的处置,业务类型包括:工程物资的购置;固定资产的形成(基建、技改、信息化建设、科技研发、其他方式取得)、减少、报废处置;无形资产的取得、摊销、处置;长期待摊费用的形成、摊销。公司总部涉及的部门有:发展部、投资管理部、科技部、信息部、海外开发部、矿产资源部和财务部等;各分、子公司涉及的部门和单位有:计划企管部、科技开发部、项目管理部、财务部、装备能源部、供应部、设计院、安全环保部、信息部、总经理办公室、物配中心、各分厂等单位。
二、资本性支出业务涉及的主要控制内容 1.工程物资业务控制
工程物资是公司为在建工程准备的各种物资,包括工程材料、尚未安装设备。工程材料采购由施工单位提出,由负责工程项目的项目管理部(装备能源部)审核,工程材料领用计入资本性支出项目的成本,其他内部控制与正常生产用材料采购流程相同,见本手册第三部分第二章第一节购置与付款业务涉及的主要控制内容。以下描述中,工程物资采购部分仅指尚未安装设备的采购,其他描述对工程物资均适用。
工程设备采购由装备能源部负责采购。项目管理部根据项目设计文件获取采购信息,装备能源部根据批准的设备采购计划进行采购。装备能源 部确定采购方式后进行采购,物配中心负责收货与发货,资本性支出的财务核算与管理由财务部负责资本性支出管理的科室负责,财务部负责物资核算的科室负责工程物资的月末暂估及减值的测算与核算。1.1 编制需求计划
获得设备采购信息 项目管理部、技术开发部根据项目设计文件获得设备采购信息,分别提供设备采购计划,由装备能源部负责采购。
确定采购方式 进口设备按照中国铝业管理程序,依据物料编码以104名义在SAP系统创建采购申请,委托中铝国贸代理或集中采购。国产设备的采购方式分为公开招标方式和比价方式采购方式,由装备能源部确定。
创建采购申请 项目管理部、装备能源部相关科室获得设备采购信息后,由科室主管将需采购设备分配给设备管理员。设备管理员根据需采购设备的型号、数量和需求时间在SAP系统中创建采购申请。
审批采购申请 科室主管和分管经理在SAP系统中对设备管理员提出的采购申请进行两级审批。1.2 合同准备与签订
招标采购 由设备管理员将准备进行招标采购的设备备件的技术性能、交货期限、售后服务等要求列出,并根据招标委托合同书的约定,委托一家具有招标资质的招标公司进行招标。招标公司按照《招投标法》的规定开展工作,并用《中标通知书》通知中标供应商来项目管理部(装备能源部)签订采购合同。
比价采购 经审批后的采购申请,由采购部门填写设备采购询价表并提供三家以上具有资质的供方名单,经评审后选定供应方。
填写合同 根据比价或招标采购确定的供应商,设备管理员或设备采 购员与供应商确定合同细则,并拟定采购合同。
会签合同 项目管理部、装备能源部设备管理员填写合同报审表,由报审单位、财务部门、计划部门进行合同会签,按审批权限办理审批手续,财务部同时登记会签台账。
法律审核及盖章 对会签完成的合同,由法律事务科加盖合同专用章,项目管理部(装备能源部)分管经理在合同上签字。1.3 采购订单
创建采购订单 采购申请审批后,设备管理员进行招标或比价采购。根据招标或比价的结果,将相关信息输入到SAP中,主要包括采购物料编码或物料描述、数量、供应商、交货期、价格、物料组、工厂、仓储地点等信息,在SAP系统中经过询报价、比价后创建采购订单。
审批采购订单 科室主管和分管经理在SAP系统中对设备管理员创建的采购订单分别进行两级审批,检查采购订单信息是否正确、合理。1.4 预付设备款
编制资金需求计划 每月在规定时间,由项目管理部门汇总月度资金计划,经相关领导签批后报财务部。
申请资金 每月28日前,财务部资本性支出结算科室根据月度资金计划文件和工程欠款情况,编制分公司月度现金预算表,经财务部主管科长、财务经理审核后,上报总部。
取得现金预算表 每月上旬,总部将批准后的月度现金预算表发给分公司财务部资本预算管理科室,财务部再转给项目管理部门。
办理借款手续 设备管理员根据合同规定的付款方式和资金计划填写借款证。借款单中填写借款单位、借款人姓名、借款用途、收款单位名称、开户银行及账号、借款金额。填写借款证后,报科室主管及分管经理审核。
审批借款手续 科室主管及分管经理对借款证内容的真实性、完整性及有无资金计划进行审核。
预付款 财务部负责资本性支出结算科室的项目核算员,在接到各业务部门递交的经项目管理部、装备能源部经理、计划企管部等签字确认的借款单据后,与合同和当月资金计划以及总部批复的项目月度现金预算核对无误后编制SAP预付款记账凭证。编制完上述记账凭证后,将凭证及附件一同交于财务部负责资本性支出结算的科室主管、总稽核审核(主要审核借款单是否经相应审批,借款性质是否无误,借款金额是否复核现金预算,记账金额是否无误等),交出纳付款。1.5 到货与入库
接到到货通知 付出预付款后,由设备管理员根据合同约定要求供应商发货,货物到达之前,供应商会电话通知设备管理员。
通知到货 货物到达,设备管理员电话通知物配中心仓储科保管员进行接收,仓库保管员也可在SAP系统下通过采购订单号获得即将入库设备的信息。
仓库验收货 货物到达仓库之后,由物配中心工程物资科保管员依据SAP采购订单、物料编码收货。根据货运单据或供应商提供的交货清单进行清点、交接。保管员在供应商提供的交货清单上签字确认,或开具收货回执单。同时将设备收入待验收区。如果设备不进库而直送现场,则由项目管理部设备管理员和物配中心仓储科保管员共同依据货运单据或供应商提供的交货清单和施工单位在现场进行清点、交接,由设备管理员办理直拨出库单。办理入库和设备账的更新
1、项目管理部申请采购的,设备进库后,由设备管理员和仓储科保管员一起依据采购订单对货物进行验收,验收的主要内容有,设备的外观、规格型号、包装、数量清点,验收完成之后,参与验收的人员在设备验收报告单(开箱检验记录)上签字。设备科托收员根据供方提供的发票、合同和设备验收报告单或直拨出库单,填写设备入库单,入库单一式五联,仓库留一联,财务二联,设备二联。物配中心保管员在SAP系统中用MB01收货,录入物料编码、数量、工厂、库位地点等信息,记录103、105凭证号。
2、装备能源部负责采购的,A类型采购订单和H类型的采购订单设备管理员直接将设备送使用现场,和用户共同清点,填写设备开箱检验记录。用户在出入库单(7联)上签字盖章,物配中心保管员用MB01收货即发货到工程订单和成本中心。标准类型的采购订单设备到货入库,办理入库单(5联),物配中心保管员收货到工程物资库位,SAP系统自动生成工程物资入库凭证。
设备的盘点 月末,库管员将会进行盘点并与设备账核对(包括设备和工程物资),每半年财务与库管共同进行盘点。盘点报告由物配中心库管员及主管、项目管理部(装备能源部)设备科设备管理员及主管、财务部负责资本性支出结算科室的项目核算员及主管签字认可。盘点差异的处理:由物配中心保管员将盘点差异原因详细说明后形成书面报告(后附盘点差异汇总表),先经过物配中心领导审批后,再上报其他相关部门领导审批,最终经过分公司领导终审后上报总部批复。待总部正式批复后进行账务处理,并由财务部负责资本性支出结算科室的主管、总稽核对凭证审核。建设期间发生的工程物资盘亏、报废及毁损净损失,计入在建工程支出核算订单;盘盈的工程物资或处置净收益做相反的会计分录。非建设期 间发生的,计入营业外支出。在确定净损失时,应扣除保险公司与个人赔偿部分。财务部负责资本性支出结算科室的项目核算员有权限在在SAP系统内进行过账。1.6 报销与挂账
设备出库和现场服务 设备管理员根据施工单位的设备安装计划开制设备出库单,出库单注明物料编码、数量、领用工程项目SAP相关编号。由建设单位将设备按照施工合同要求送到规定地点,和施工单位人员进行清点,设备管理员、物配中心保管员、施工单位在出库单上签字。出库单一式6联,设备科1联,仓库保管员1联,计划统计1联,财务科2联,施工单位1联。在设备的安装和设备的调试阶段,项目管理员应及时了解安装调试中发现的设备质量问题,及时与供方沟通解决,以满足现场的安装进度和调试进度。装备能源部设备管理员根据设备出库要求,填写出库单(7联),物配中心保管员发货到工程项目支出核算订单。
审批报销 设备办理入库手续后,设备管理部门的托收员持发票、运输费及入库单据由科室主管和主管经理审核签字,不需要支付款项的发票、运输费及入库单据由设备管理部门科室主管和主管经理审核签字,需支付款项的,由经办人科室主管、具有审批权限的经理、副总经理在资金审批单后签字,发票、运输费经理不再签字,连同设备入库单据交财务部负责资本性支出结算的科室办理结算。审批内容主要有发票、运费金额是否合理,入库单是否经验收人员签字确认,设备是否复核采购要求等。
发票校验 财务部收到设备采购部门转来的设备采购发票,对合同、相关单据、审批手续是否齐全进行审核,在SAP中对采购订单设备明细与发票进行核对,核对无误后进行发票交验,生成会计凭证。预付款清理的账务处理 针对已支付预付款的供应商,并已经财务部负责资本性支出结算科室的项目核算员进行发票校验后,在SAP系统中对该供应商进行清账。
工程物资采购(GR/IR)清算 月末,财务部物资核算科在SAP中进行工程物资采购(GR/IR)清算,对发票已到货未到、货到发票未到的情况进行暂估,自动生成两笔凭证,本月末一笔,下月初冲回一笔。1.7 工程物资减值业务控制
进行工程物资清查 在报告期末,由财务部会同相关部门对工程物资进行全面清查,如果工程物资账面价值低于可收回金额,应当提取工程物资减值准备。
制作工程物资减值准备及专题报告 每半年,财务部物资核算科根据清查结果以及工程物资账面价值低于可收回金额的差异编制工程物资减值准备明细表,经过汇总后,形成专题报告,经过科室主管审核后,上报财务部经理,经过经理签字后,上报总部财务部。
SAP账务处理 财务部物资核算科核算会计,根据总部批复的工程物资减值准备明细资料,在SAP系统中制作计提减值准备的会计凭证。工程物资减值损失一经确认,在以后会计期间不得转回。
凭证复核 物资核算科主管和财务部总稽核从SAP系统中,打印工程物资减值准备计提的凭证。财务主管对计提凭证的正确性依据总部下发的《中国铝业股份有限公司资产减值准备计提与资产核销管理暂行办法》进行审核,确认计提方法是否合理、计提金额计算是否正确、附件是否齐全并签字确认。
第二篇:团课自学手册
吉林农业科技学院第二期团校暨学生骨干培训班 培训资料 【基础常识】
1.十二届全国人大一次会议14日上午在人民大会堂举行第四次全体会议,以无记名投票方式,选举习近平为中华人民共和国主席、中华人民共和国中央军事委员会主席,选举李源潮为中华人民共和国副主席。
2.十二届全国人大一次会议根据国务院总理李克强的提名,确定了张高丽、刘延东、汪洋、马凯为国务院副总理。
3.新一届中央政治常委为习近平、李克强、张德江、俞正声、刘云山、王岐山和张高丽。
4.吉林农业科技学院现任党委书记为徐大林,校长为苏显学。5.吉林农业科技学院团委全称为共青团吉林农业科技学院委员会,现任团委书记为沈宪文。
6.吉林农业科技学院的校训是厚德图本,励学笃行。【团务知识】
1.共青团的奋斗目标是什么? 坚决拥护中国共产党的纲领,以马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想为行动指南,解放思想,实事求是,与时俱进,团结全国各族青年,为把我国建设成为富强、民主、文明的社会主义现代化国家,为最终实现共产主义而奋斗。
2.入团誓词:
我志愿加入中国共产主义青年团,坚决拥护中国共产党的领导,遵守团的章程,执行团的决议,履行团员义务,严守团的纪律,勤奋学习,积极工作,吃苦在前,享受在后,为共产主义事业而奋斗。
3.团旗的含义?
团旗是中国共产主义青年团性质和任务的象征。旗面为红色,象征革命胜利;左上角缀黄色五角星,周围环绕黄色圆圈,象征中国青年一代紧密团结在中国共产党周围。
4.团徽的含义?
中国共产主义青年团团徽,以团旗,齿轮,麦穗,初升的太阳及其光芒,写有“中国共青团”五字的绶带构成。它象征着共青团在马克思列宁主义、毛泽东思想的光辉照耀下,团结各族青年,朝着党所指引的方向奋勇前进。
5.共青团的性质是什么? 中国共产主义青年团是中国共产党领导的先进青年的群众组织,是广大青年在实践中学习中国特色社会主义和共产主义的学校,是中国共产党的助手和后备军。
6.团歌:
【光荣啊,中国共青团】胡宏伟 作词 雷雨声 作曲
我们是五月的花海,用青春拥抱时代;我们是初升的太阳,用生命点燃未来。“五四”的火炬,唤起了民族的觉醒。壮丽的事业,激励着我们继往开来。光荣啊,中国共青团,光荣啊,中国共青团。母亲用共产主义为我们命名,我们开创新的世界。
7.共青团的指导思想和奋斗目标:
指导思想:马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想是我国现代化建设事业的指导思想,也是共青团的指导思想。
奋斗目标:坚决拥护中国共产党的纲领,以马克思列宁主义、毛泽东思想和邓小平理论为行动指南,解放思想,实事求是,团结全国各族青年,为把我国建设成为富强、民主、文明的社会主义现代化国家,为最终实现共产主义的社会制度而奋斗。
8.团组织基本建设的相关内容 ①员在三人以上的单位可以建立支部。
②团员在三十人以上的单位,可以建立总支部。
③团员在一百人以上的单位,可以建立基层委员会。在基层委员会、总支部下建立支部。如果工作需要,在基层委员会下也可以建立总支部。在一个支部内可以分若干个小组。支部委员会、总支部委员会由团员大会选举产生,每届任期一年或两年,其中大、中学校学生支部委员会每届任期一年。基层委员会由团员大会或代表大会选举产生,每届任期两年或三年。
9.团员必须履行下列义务:
①努力学习马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想,学习团的基本知识,学习科学、文化和业务知识,不断提高为人民服务的本领。
②宣传、执行党的基本路线和各项方针政策,积极参加改革开放和社会主义现代化建设,努力完成团组织交给的任务,在学习、劳动、工作及其他社会活动中起模范作用。
③自觉遵守国家的法律法规和团的纪律,执行团的决议,发扬社会主义新风尚,提倡共产主义道德,维护国家和人民的利益,为保护国家财产和人民群众的安全挺身而出,英勇斗争。④接受国防教育,增强国防意识,积极履行保卫祖国的义务。
⑤虚心向人民群众学习,热心帮助青年进步,及时反映青年的意见和要求。
⑥开展批评和自我批评,勇于改正缺点和错误,自觉维护团结。
10.团员享有下列权利以及应履行的义务:
①参加团的有关会议和团组织开展的各类活动,接受团组织的教育和培训。
②在团内有选举权、被选举权和表决权。
③在团的会议和团的报刊上,参加关于团的工作和青年关心的问题的讨论,对团的工作提出建议,监督、批评团的领导机关和团的工作人员。
④对团的决议如有不同意见,在坚决执行的前提下,可以保留,并且可以向团的上级组织提出。
⑤参加团组织讨论对自己处分的会议,并且可以申辩,其他团员可以为其作证和辩护。⑥向团的任何一级组织直至中央委员会提出请求、申诉和控告,并要求有关组织给以负责的答复。团的任何一级组织或个人都无权剥夺团员的权利。
11.什么叫三会一课?
团员大会,团支部会议,团的民主生活会和团课 12.一二九运动的简介
1935年的12月9日,北平(北京)大中学生数千人在中国共产党的领导下举行了抗日救国示威游行,反对华北自治,反抗日本帝国主义,掀起全国抗日救国新高潮,史称“一二•九”运动。这是中国共产党领导的一次大规模学生爱国运动。
13.共青团组织在高校中的作用:
①政治思想上的导向作用②业务学习上的推动作用③学生骨干的培养作用④联系学生的桥梁纽带作用⑤学生班级中的核心作用
14.《团章》对团干部的基本要求:
政治上要坚定,学习要刻苦,工作要勤奋,做与湖北风要扎实,品德要高尚。
15.共青团重大历史 1920年8月,中国共产党首先在上海组织了社会主义青年团。在此前后,全国各地在准备建党的同时组织了社会主义青年团。
1921年7月,中国共产党成立。
1922年5月,在党的直接领导下,中国社会主义青年团在广州召开第一次全国代表大会,成立了全国统一的组织。
1925年1月,在团的第三次全国代表大会上,决定将中国社会主义青年团改名为中国共产主义青年团。
1935年11月,党决定将共青团组织改造成为民族解放性质的抗日救国的青年团体。
1946年10月,党中央提议建立民主青年团。
1949年元旦,党中央又作出建立中国新民主主义青年团的决议。1949年4月,召开新民主主义青年团第一次全国代表大会,宣告中国新民主主义青年团正式成立。
1957年5月,中国新民主主义青年团召开第三次全国代表大会,决定把团的名称改为中国共产主义青年团。大会还决定把解放前后的中国社会主义青年团、共产主义青年团和新民主主义青年团的历次代表大会衔接起来。
“文化大革命”第10年,团的工作被迫处于停顿状态。1978年10月,中国共产主义青年团第十次全国代表大会召开。
1982年12月,共青团第十一次全国代表大会召开。1988年5月,共青团第十二次全国代表大会召开。1993年5月,共青团第十三次全国代表大会召开。1998年6月,共青团第十四次全国代表大会召开。2003年7月,共青团第十五次全国代表大会召开,选举产生了现任团中央委员会。
【党务知识】
1.中国共产党第一次代表大会于1921年7月在上海召开,正式宣告中国共产党的成立。
2.1948年2月在英国伦敦首次出版的《共产党宣言》标志着马克思主义的诞生。
3.中国共产党是中国工人阶级的先锋队,同时是中国人民和中华民族 的先锋队,是中国特色社会主义工业的领导核心,代表 中国先进生产力的发展要求,代表 中国先进文化的前进方向,代表中国最广大人民的根本利益。4.年满18 岁的中国工人、农民、军人、知识分子和其它社会阶层的先进分子,承认 党的纲领和章程,愿意参加党的一个组织并在其中积极工作,执行党的决议和按期缴纳党费的,可以申请加入中国共产党。
5.预备党员的预备期为 1 年,从支部大会通过他为预备党员 之日算起,党员的党龄从 预备期满转为正式党员 之日算起。
6.《党章》规定:党员如果没有不当理由,连续 6个月 不参加党的组织生活,或不缴纳党费,不做党所分配的工作,就被认为是 自行脱党。
7.中国共产党的根本宗旨是全心全意为人民服务,最高理想和最终奋斗目标是 实现共产主义。
8.发展党员,必须经过党的支部,坚持个别吸收的原则,同时必须由2名正式党员作入党介绍人。
9.马克思列宁主义、毛泽东思想、邓小平理论的精髓是解放思想、实事求是。
10.预备党员的义务同正式党员一样。预备党员的权利除了没有选举权、被选举权和表决权以外,其它也同正式党员一样。
11.马克思主义同中国革命实践相结合出了两次历史性飞跃,产生了 毛泽东思想 和 邓小平理论 两大理论成果。12.我国社会的主要矛盾是人民日益增长的物质文化需求和落后的社会生产之间的矛盾
13.党的三大历史任务是推进现代化建设、完成祖国统一、维护世界和平促进共同发展。
14.党的领导主要是政治、思想、组织的领导。
15.中国共产党在长期斗争实践中所形成和发展起来的三大优良作风是理论联系实际、密切联系群众和批评与自我批评。
16.党内最高纪律处分是开除党籍。
17.中国共产党始终代表中国先进生产力的发展要求,代表中国先进文化的前进方向,代表中国最广大人民的根本利益。
18.中国共产党领导人民在建设精神文明、物质文明的同时,努力建设社会主义政治文明。
19.党的三大历史任务是推进现代化建设、完成祖国统一、维护世界和平促进共同发展、20.每个党员,不论职务高低,都必须编入党的一个支部、小组或其他特定组织。
21.党的思想路线是一切从实际出发、理论联系实际,实事求是,在实践中检验真理和发展真理。22.党章规定,党员在生活、工作、学习和社会生活中起先进模范作用。
23.党的最高领导机关是 党的全国代表大会 和它产生的 中央委员会
24.党的全国代表大会每五年举行一次,由中央委员会召集。25.民主集中制是党的基本组织原则。
26.马克思主义告诉我们,判断一个政党的性质,最主要的是看它的纲领和路线代表什么人的利益。
27.中国中央总书记胡锦涛1月6日在中纪委第六次全会上强调要认真学习党章,自觉遵守党章,切实贯彻党章,坚决维护党章。
28.毛泽东思想是共产党正确处理和解决党内矛盾的武器。29.为了建立党内生活的正常秩序,保证全党意志统一和行动一致的根本原则是“四个服从”,即 党员个人服从党的组织、少数服从多数、下级组织服从上级组织、全党各个组织和全体党员服从党的全国代表大会和中央委员会。
30.党的十八大的主题是高举中国特色社会主义伟大旗帜,以邓小平理论、“三个代表”重要思想、科学发展观为指导,解放思想,改革开放,凝聚力量,攻坚克难,坚定不移沿着中国特色社会主义道路前进,为全面建成小康社会而奋斗。
31.十八大指出中国共产党的行动指南是以马克思列宁主义、毛泽东思想、邓小平理论、“三个代表”重要思想和科学发展观作为自己的行动指南。
32.十八大指出我国社会主义建设的根本任务是进一步解放生产力,发展生产力,逐步实现社会主义现代化,并且为此而改革生产关系和上层建筑中不适应生产力发展的方面和环节。
33.社会主义中国的精神旗帜是社会主义核心价值体系。34.马克思主义指导思想是社会主义核心价值体系的灵魂。35.中国特色社会主义共同理想是社会主义核心价值体系的主题。
36.以爱国主义为核心的民族精神和以改革创新为核心的时代精神是社会主义核心价值体系的精髓。
37.社会主义荣辱观是社会主义核心价值体系的基础。38.社会主义核心价值观包括富强、民主、文明、和谐,自由、平等、公正、法治,爱国、敬业、诚信、友善24个字。39.中共中央总书记习近平带领新一届中央领导集体参观中国国家博物馆“复兴之路”展览现场。习近平定义“中国梦”实现伟大复兴就是中华民族近代以来最伟大梦想。
40.“中国梦”的时代特征一是综合国力进一步跃升的“实力特征;二是社会和谐进一步提升的“幸福特征”;三是中华文明在复兴中进一步演进的“文明特征;四是促进人全面发展的“价值特征。
第三篇:会计手册
1、会计凭证中有关经济业务的内容的摘要必须真实。
在填写“摘要”时,既要简明,又要全面、清楚,应以说明问题为主。写物要有品名、数量、单价;写事要有过程;银行结算凭证,要注明支票号码、去向;送存款项,要注明现金、支票、汇票等。遇有冲转业务,不应只写冲转,应写明冲转某年、某月、某日、某项经济业务和凭证号码,也不能只写对方科目。要求“摘要”能够正确地、完整地反映经济活动和资金变化的来龙去脉,切忌含糊不清.2、什么是凭证传递?凭证传递应注意哪些事项?
会计凭证的传递,是指会计凭证从填制或取得时起,经审核、记账到装订保管的全过程。各单位在制定会计凭证的传递程序,规定其传递时间时,通常要考虑以下两点内容:
(1)根据各单位经济业务的特点、企业内部机构组织、人员分工情况,•以及经营管理的需要,从完善内部牵制制度的角度出发,规定各种会计凭证的联次及其流程,使经办业务的部门及其人员及时办理各种凭证手续,既符合内容牵制原则,又提高工作效率。
(2)根据有关部门和人员办理经济业务的必要时间,•同相关部门和人员协商制定会计凭证在各经办环节的停留时间,以便合理确定办理经济业务的最佳时间,及时所映、记录经济业务的发生和完成情况。
3、怎样审核记账凭证?
有填制好的记账凭证,都必须经过其他会计人员认真的审核。在审核记账凭证的过程中,如发现记账凭证填制有误,应按照规定的方法及时加以更正。只有经过审核无误后记账凭证,才能作为登记账簿的依据。记账凭证的审核主要包括以下内容:
(1)记账凭证是否附有原始凭证,记账凭证的经济内容是否与所附原始凭证的内容相同。
(2)应借应贷的会计科目(包括二级或明细科目)对应关系是否清晰、金额是否正确。
(3)记账凭证中项目是否填制完整,摘要是否清楚,有关人员的签章是否齐全。
4、怎样填制记账凭证?
会计人员填制记账凭证要严格按照规定的格式和内容进行,除必须做到记录真实、内容完整、填制及时、书写清楚之外,还必须符合下列要求:
(1)“摘要”栏是对经济业务内容的简要说明,要求文字说明要简炼、概括,•以满足登记账簿的要求。
(2)应当根据经济业务的内容,按照会计制度的规定,确定应借应贷的科目。•科目使用必须正确,不得任意改变、简化会计科目的名称,有关的二级或明细科目要填写齐全。
(3)记账凭证中,应借、应贷的帐户必须保持清晰的对应关系。
(4)一张记账凭证填制完毕,应按所使用的记账方法,加计合计数,•以检查对应帐户的平衡关系。
(5)记账凭证必须连续编号,以便考查且避免凭证散失。
(6)每张记账凭证都要注明附件张数,以便于日后查对。
5、会计凭证中的数字书写要求
(1)阿拉伯数字应一个一个地写,阿拉伯金额数字前应当书写货币币种符号(如人民币符号“¥”)或者货币名称简写和货种符号。•币种符号与阿拉伯金额数字之间不得留有空白。凡在阿拉伯金额数字前面写有币种符号的,数字后面不再写货币单位(如人民币“元”)。
(2)所有以元为单位(其他货币种类为货币基本单位,下同)的阿拉伯数字,除表示单价等情况外,•一律在元位小数点后填写到角分,无角分的,角、分位可写“00”或符号“--”,有角无分的,分位应写“0”,不得用符号“--”代替。
(3)汉字大写金额数字,一律用正楷或行书书写,如壹、贰、叁、肆、伍、•陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等易于辩认、不易涂改的字样,不得用0、一、二、三、四、五、六、七、八、九、十、另、毛等简化字代替,不得任意自造简化字。
(4)大写金额数字到元或角为止的,在“元”或“角”之后应写“整”或“正”字;大写金额数字有分的,分字后面不写“整”字。
(5)大写金额数字前未印有货币名称的,应当加填货币名称(如“人民币”三字),货币名称与金额数字之间不得留有空白。
(6)阿拉伯金额数字中间有“0”时,大写金额要写“零”字,如人民币101.50元,•汉字大写金额应写成壹佰零壹元伍角整。阿拉伯金额数字中间连续有几个“0”时,汉字大写金额中可以只写一个“零”字,如¥1004.56,•汉字大写金额应写成壹仟零肆元伍角陆分。阿拉伯金额数字元位为“0”,或数字中间连续有几个“0”,元位也是“0”,但角位不是“0”时,汉字大写金额可只写一个“零”字,也可不写“零”字
6、怎样计算和填写所附原始的张数?
记账凭证一般应附有原始凭证,并注明其张数。凡属收、付款业务的记账凭证都必须有附件;职工出差借款的借据必须附在记账凭证上,收回借款时应另开收据或退还经出纳(收款人)签名的借款结算联;转账业务中,属于摊提性质的经济业务应有附件。附件的张数应用阿拉伯数字填写。记账凭证张数计算的原则是:没有经过汇总的原始凭证,按自然张数计算,有一张算一张;经过汇总的原始凭证,每一张汇总单或汇总表算一张。例如某职工填报的差旅费报销单上附有车票、船票、住宿发票等原始凭证35张,35张原始凭证在差旅费报销单上的“所附原始凭证张数”栏内已作了登记,在计算记账凭证所附原始凭证张数时,这一张差旅费报销单连同其所附的35张原始凭证一起只能算一张。财会部门编制的原始凭证汇总表所附的原始凭证,一般也作为附件的附件处理,原始凭证汇总表连同其所附的原始凭证算在一起作为一张附件填写。但是,属收、付款业务的,其附件张数的计算要作特殊情况处理,应把汇总表及所附的原始凭证或说明性质的材料均算在其张数内,有一张算一张。当一张或几张原始凭证涉及到几张记账凭证时,可将原始凭证附在其中一张主要的记账凭证后面,并在摘要栏内注明“本凭证附件包括××号记账凭证业务”字样,在其他有关记账凭证的摘要栏内注明“原始凭证附于××号记账凭证后面”的字样。
7、怎样处理记账凭证的附件?
在实际工作中记账凭证所附的原始凭证种类繁多,为了便于日后的装订和保管,在填制记账凭证的时候应对附件进行必要的外形加工.过宽过长的附件,应进行纵向和横向的折叠。折叠后的附件外形尺寸,不应长于或宽于记账凭证,同时还要便于翻阅;附件本身不必保留的部分可以裁掉,但不得因此影响原始凭证内容的完整;过窄过短的附件,不能直接装订时,应进行必要的加工后再粘贴于特制的原始凭证粘贴纸上,然后再装订粘贴纸。原始凭证粘贴纸的外形尺寸应与记账凭证相同,纸上可先印一个合适的方框,各种不能直接装订的原始凭证,如汽车票、地铁车票、市内公共汽车票、火车票、出租车票等,都应按类别整齐地粘贴于粘贴纸的方框之内,不得超出。粘贴时应横向进行,从右至左,并应粘在原始凭证的左边,逐张左移,后一张右边压位前一张的左边,每张附件只粘左边的0.6一1厘米长,粘牢即可。粘好以后要捏住记账凭证的左上角向下抖几下,看是否有未粘住或未粘牢的。最后还要在粘贴单的空白处分别写出每一类原始凭证的张数、单价与总金额.如某人报销差旅费,报销单后面的粘贴单附有0.5元的市内公共汽车票20张,1元的公共汽车票12张,285元的火车票1张,869元的飞机票1张,就应分别在汽车票一类下面空白处注明0.5×20=10元,1×12=12元,在火车票一类下面空白处注明285×1=285元,在飞机票一类下面空白处注明869×1=869元。这样,万一将来原始凭证不慎失落,也很容易查明丢的是那一种票面的原始凭证,而且也为计算附件张数提供了方便。
第四篇:Java语言-自学手册完全版
北京广播电视大学 Java语言自主学习手册
理工教学部 2010.10
Java的发展史1991.4—Sun进军消费电子产品市场, 成立Green小组,开发Oak语言1992.10—成立First Person公司,将Oak应用于Web,改名为Java1993~4 —Web技术在Internet上流行1995.5—Sun正式发表Java与HotJava产品1995.10 ——与Netscape合作1995.12 ——微软支持Java1996.2 ——Java 1.0正式出品2000.9 ——升级至Java 1.32001.7 ——升级至Java 1.41第1讲概述2
Java 2 PlatformJava 2 Enterprise Edition(J2EE)包含开发基于Web的应用程序类与接口,包含servlet、JavaServerPages和Enterprise JavaBeans类等等Java体系结构应用程序Java编程语言Java类文件Java 2PlatformJava 2 Standard Edition(J2SE)包含Java类和GUI类Java运行时环境Java APIJava虚拟机Java 2 Micro Edition(J2ME)Java对电子设备提供优化的运行时环境3操作系统(Windows、Unix等等)4
Java运行环境Java运行时环境(JRE,Java Runtime Environment)是Java虚拟机与核心类的组合,即Java平台Java运行环境的主要功能:–加载代码:将字节码转化为本机代码,进行类的装载和符号引用的消解,由类装载器完成–校验代码:由字节码校验器完成–执行代码:控制代码的执行,由运行时解释器完成5•Java类库API类库APIJava API是SUN提供的用Java语言开发的集合Java应用程序编程接口(API,Application Program Interface)是预先编好的代码,组成类似主题的包Java API包括几十个包,常用的有:java.lang,java.io, java.util, java.net, java.awt, java.applet等6
Java 核心类包举例1.java.lang----包含一些Java语言的核心类2.java.awt----包含了构成抽象窗口工具集(AWT)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)3.java.applet----包含applet运行所需的一些类4.java.net----包含执行与网络相关的操作的类5.java.io----包含能提供多种输入/输出功能的类6.java.util----包含一些实用工具类7Java的语法机制Java是面向对象程序设计语言。面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致面向对象程序设计是使用类和对象将现实世界中真实的或抽象的实体在程序中建立模型8 1 / 50
Java的语法机制类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)类(class)最重要、最基本的语法设施,类的定义与继承与C++类似,主要区别:•Java不允许多重继承,多重继承必须通过接口实现•Java引进了abstract 和final修饰词9直译式语言Java与C++比较JavaC++编译后产生机器码跨平台运行速度具有指针类型继承10
接口(interface)•是一种抽象类,其中只能出现静态常量或抽象方法定义•主要目的是实现多重继承功能,避免C++在多重继承语义上的复杂性•一个Java类可以实现(继承)多个接口程序包(package)•是一些相关类或接口的集合•Java提供包括可重用类标准程序包,用户可自定义程序包•通过import 语句将程序包引入应用程序11自动内存回收•Java取消了指针类型,所有动态内存请求均通过new运算符,并且得到的不是指针而是引用•系统自动进行内存回收多线程•语言级支持多线程,忽略操作系统多线程机制的差异,软件具有更好的可靠性和可移植性12
Java的特性Sun公司的Java语言白皮书中指出Java的特性1.2.3.4.5.6.简单性面向对象分布式特征健壮性直译性结构中立性7.可移植性8.安全性9.多线程10.高性能11.动态特征Java三种核心机制Java 虚拟机(Java Virtual Machine)垃圾收集机制(Garbage collection)代码安全性检测(Code Security)1314
Java虚拟机(Java Virtual Machine)在一台计算机上由软件或硬件模拟的计算机Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件Java编译器针对Java虚拟机产生_______文件,因此是独立于平台的Java_________负责将Java虚拟机的代码在特定的平台上运行15Java虚拟机(JVM)Java虚拟机规范定义了:–指令集–寄存器集:程序计数器、栈顶指针等–类文件结构–堆栈:提供各种参数等–垃圾收集堆–内存区域:存放字节码的方法代码、符号表16 2 / 50
Java自动垃圾收集技术(garbage collection)不再使用的内存空间应回收在C/C++等语言中,由负责回收无用内存垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预Java语言解除了程序员回收无用内存空间的责任。它提供一种系统级线程跟踪存储空间的分配情况。并在JVM的空闲时,检查并释放那些可被释放的存储器空间17Java代码安全性检测•三级代码安全检查–验证:在类下载时完成,检查从哪里下载文件,是否有权限进到本机系统–字节码校验:分析下载的字节码是否合乎规则–跟踪监测:执行时安全管理器始终监测所执行的每步操作,检查其合法性18
Java运行环境安装及配置Java开发工具集JDK(Java Development Kits)–Java编译器–Java运行时解释器–Java应用程序编程接口–Java文档化化工具–其它工具及资源19设置环境变量•Path 外部命令搜索路径•CLASSPATH类资源位置搜索路径20
安装后的目录结构21Java 程序分类•Java Application以main()方法作为程序入口,由Java解释器加载执行•Java Applet没有main()方法作为程序入口,可由浏览器加载执行22
简单Java应用程序(Application)举例源文件:HelloWorld.javapublic class HelloWorld{ public static void main(Stringargs[]){System.out.println(“HelloWorld!”);}}23Application应用程序分析•类定义(class)Java程序的基本组成部分是类public class HelloWorld•主方法Java Application程序的入口是方法固定的书写格式:public static void main(Stringargs[]){……}24 / 50
Application应用程序分析•源文件–Java程序的源文件扩展名必须是―‖–Java程序的源文件名必须与main()方法所在相同–Java源文件中包含多个类•程序内容–由方法体实现程序要完成的功能,方法的实现由一个个语句组成–语句以―‖作为结束标志25–大小写Application应用程序分析•命名–如果.java 文件包含一个public 类,它必需按命名–如果一个类中含有main()方法,它必需按命名–文件名、类名大小写•类个数–一个源文件中有多个类,但只能有一个类其它类的个数不限26
Java编译器•javac.exe将.java文件编译成.class字节码文件格式javac<参数> <.java源文件名>-d <路径> 指定存放所产生类文件路径27Java解释器•java.exe解释执行.class字节码文件格式java <.class文件> [实参表]java-jar <.jar文件> [实参表]28
Java Application 的运行•javacHelloWorld.java功能:源文件名为HelloWorld.java,由javac编译器编译源程序,产生字节码文件(.class文件)•java HelloWorld功能:字节码文件由java解释器解释执行29Java Applet•Applet就是使用Java语言编写的在环境中运行•Applet类存于类的子类•它与Application的区别主要在于其不同•Application是从其中的方法开始运行的•Applet是在中运行的,必须创建一个文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行30的包中,是,它可以
Java Applet
简单Java应用程序(Applet)举例编译源文件:javacHelloWorld.java产生字节代码:HelloWorld.classApplet 举例•创建一个HTML文件:hello.html3334
Java数据类型划分第2讲Java语言基础数据类型整数类型数值型(byte,short,int,long)浮点类型(float,double)基本数据类型字符型(char)逻辑(布尔)型(boolean)类(class)引用数据类型接口(interface)数组复合类型3536
逻辑型•boolean类型适于逻辑(布尔型)运算,一般用于。•boolean类型数据只允许取值true或false,不可以替代字符型•char型数据用来表示通常意义上―字符‖•字符常量是用单引号括起来的单个字符•Java字符采用占字节,因而可用编码形式表示,每个字符进制•Java语言中还允许使用转义字符''来将其后的字符转变为其它的含义3738
整数类型Java各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证Java程序的可移植性类型占用存储空间1字节2字节4字节8字节表数范围-128 ~ 127-215 ~ 215-1-231 ~ 231-1-263 ~ 263-1 39整数类型•整型常量的三种表示形式–十进制整数(如12,-345, 0)–八进制整数,要求以0开头(如012,0345)–十六进制数,要求0x或0X开头(如0x12,0X345)byteshortintlong•Java的整型常量默认为int型•声明long型常量可以后加‗l ‘或‗L ‘40 / 50
浮点型Java浮点类型有固定的表数范围和字段长度类型floatdouble占用存储空间4字节8字节表数范围-3.403E38~3.403E38-1.798E308~1.798E308 浮点型•Java浮点类型常量有两种表示形式–十进制数形式,必须含有小数点–科学记数法形式•Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F4142 Java引用类型•Java语言中除8种基本数据类型以外的数据类型称为引用类型•引用类型数据以的形式存在•引用类型变量的值是某个对象的存储地址,而不是对象本身•声明引用类型变量时,系统只为该变量分配,并未创建。43引用类型应用举例public class MyDate{private intday = 1;private intmonth = 1;private intyear = 2000;public MyDate(intd, intm, inty){year = y;month = m;day = d;} public void display(){System.out.println(year+ “ / ” + month + “ / ” +day);}public static void main(String[] args){MyDatem;m = new MyDate(1, 8, 2003);} }44
对象的构造和初始化对象的构造和初始化1.为引用类型变量分配引用空间MyDatem;m2.创建新对象①②4546
分配内存:new MyDate(1, 8, 2003);daymmonthyeardaymonthyeardaymonthyear473.调用所属类的构造方法new Mydate(1, 8, 2003);public Mydate(inty, intm, intd){year = y;month = m;day = d;} mdaymonthyear默认初始化:m显示初始化:m48 / 50
4.为引用类型变量m赋值m = new MyDate(1, 8, 2003);0x11111111默认初始化原则成员变量类型byteshortintlongcharfloatdoubleboolean所有引用类型49mdaymonthyear取值0 000L'u0000' 0.0F 0.0D false null 50
常量•常量一经建立在程序运行的整个过程中都不会改变•final标记的变量(成员变量或局部变量)即称为常量•常量只能赋值一次,一般大写•字符常量用引起来表示单个字符•字符串常量用引起来表示一串字符51Java变量•变量用于的数据•按所属的数据类型划分基本数据类型变量引用数据类型变量•按被声明的位置划分局部变量定义的变量成员变量定义的变量52
局部变量声明和初始化•Java变量使用前必须先声明和初始化(赋初值)•局部变量声明语法格式DataTypevarName1[=value1][,varName2[=value2]…] 成员变量声明和初始化•成员变量在中声明•在同时创建有关的成员变量•成员变量创建后系统自动对其进行–初始化–初始化5354
变量作用域•局部变量的作用域就是它所在的方法或语句块•在时,局部变量才被创建并,随方法(语句块)的,局部变量将被销毁•成员变量依附于具有与作用域55标识符•Java语言中,为各种变量、常量、方法、对象和类等起的名字称为标识符•Java标识符的命名规则–以字母、下划线、美元符开头–后跟字母、下划线、美元符或数字•Java标识符大小写敏感,长度无限制•标识符在命名时,应在一定程度上反映所表示的变量、常量、方法、对象和类的意义56存在,相同的生存期和 / 50
Java 编码惯例••••••包名类名接口名方法名变量名常量名package date.newdateclass IOExceptioninterface RunnableaMethod()aNewWordPIMAX_SIZE57关键字•关键字(keyword):Java中一些赋以特定的含义、并用做专门用途的单词•所有Java关键字都是的,true、false、null等都不是Java关键字•goto和const 虽然从未使用,但也作被为Java关键字保留58
Java 分隔符作用•Java语句必须以分号作为结束标记•Java语句中逗号分隔方法的参数和变量的说明•Java语句中冒号说明语句标号•Java允许用花括号―{}‖将一组语句括起来,形成一个语句块(block)•Java程序源代码中各组成部分之间可以插入任意数量的空格,包括换行59Java 分隔符Java语句块(block)用法–定义类时类体必须采用语句块形式–定义方法时方法体必须采用语句块的形式–定义循环语句时,循环体可以语句块的形式,采用将0~多条语句集合到一起,作为一个整体进行处理–语句块可以嵌套,嵌套层数无限制60
Java运算符与表达式与C不同之处:•Java是强类型语言,类型限制比C严格,运算符的操作对象的类型会受到更多限制•Java不提供指针运算符,增加了对象操作符instanceof,字符串运算符+和零填充的右移>>>等61算术运算符算术运算符功能+ 加-减* 乘/ 除% 取余++ 前(/后)加1--前(/后)减162
逻辑运算符逻辑运算符!逻辑非& 逻辑与| 逻辑或^ 逻辑异或&& 短路与|| 短路或6364短路逻辑运算符&& 第一个操作数为假则不判断第二个操作数|| 第一个操作数为真则不判断第二个操作数 8 / 50
移位运算符位运算符位运算符功能~--取反&--按位与|--按位或^--按位异或65左移–―a<>b;‖将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位无符号右移–―a>>>b;‖将二进制形式的a逐位右移b位,最高位空出的b位补066
运算符•赋值运算符: = •扩展赋值运算符:+=,―=,*=,/=,/=,%=,&=,|=,^=,<<=,>>=,>>>=•字符串连接运算符: + •其它运算符:?:,[],.,(),(type),new,instanceof(对象操作符)67扩展赋值运算符运算符+=-=*=/=%=&=|=^=<<=>>=>>>=用法举例a += ba-= ba *= ba /= ba %= ba &= ba |= ba ^= ba <<= ba >>= ba >>>= b等效的表达式a = a+ba = a-ba = a*ba = a/ba = a%ba = a&ba = a|ba = a^ba = a<
字符串连接运算符•―+‖除用于算术加法运算外,还可用于对字符串进行连接操作inti = 300 +7;String s = ―hello, ‖+ ―world!‖•―+‖运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接inti = 300 +7;String s = ―hello, ‖+ i + ―号‖;System.out.println(s);//输出:hello, 307号69其它运算符操作符?:[][][].()(type)new格式op1 ? op2 : op3描述如op1 是true, 返回op2,否则返op3数组声明s创建op1 个元素的数组访问op1数组的索引为op2 的元素引用op1对象的成员op2方法调用强制类型转换创建对象或数组70type []type[ op1 ]op1[ op2 ]op1.op2op1(params)(type)op1new op1instanceofop1 instanceofop2如果op1 是op2的实例,则返回true
强制类型转换•强制类型转换形式:(type)表达式例:intx=15;float f =(float)x/2;•Java对于数据类型所占用空间大小有严格规定,因此在进行数据类型转换时可能因为内存空间的改变而影响变量值•转换时,尽量由所占内存空间小的转换成内存空间大的71强制类型转换对强制类型转换的限制:•整型与浮点型相互转换•基本类型和数组、对象等复合类型之间互相转换72 / 50
表达式•表达式是符合一定语法规则的运算符和操作数的序列•表达式的类型和值–对表达式中操作数进行运算得到的结果称为表达式的值–表达式的值的数据类型即为表达式的类型•表达式的运算顺序–首先应按照运算符的优先级从高到低的顺序进行–优先级相同的运算符按照事先约定的结合方向进行73数组•数组是多个相同类型数据的有序的组合,实现对这些数据的统一管理•数组属引用数据类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量•数组中的元素可以是任何数据类型,包括基本类型和引用类型•数组要经过声明(定义)、分配存储空间、赋值后才能被使用74
数组的特征1.数组中每个元素的数据类型都是相同的2.数组中的各个元素是有顺序的3.所有元素公用一个数组名4.数组名和数组下标唯一确定数组中每个元素的位置75一维数组声明一维数组的声明方式:type var[];或type[] var;例如:inta[];int[] b;double d[];MyDate[] md;Java语言中声明数组时不能指定其长度(数组中元素的个数)76
数组初始化静态初始化:在定义数组的同时就为数组元素分配空间并赋值动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行77数组元素的默认初始化数组是类型,它的元素相当于,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。78
数组元素的引用•定义并用运算符new为之分配空间后,才可以引用数组中的每个元素•数组元素的引用方式arrayName[index]a[0]a[1]a[2]多维数组inta[][] = {{1,2},{3,4,5,6},{7,8,9}};12a[0][0]a[0][1]345789a[2][0]a[2][1]a[2][2]80a[1][0]a[1][1]a[1][2]a[1][3]–index为数组元素下标,可以是整型常量或整型表达式,如a[3],b[i],c[6*i]–数组元素下标从开始。79a6–长度为n的数组合法下标取值范围是•每个数组都有一个length属性表示数组的长度 / 50
多维数组•Java中多维数组被做为数组的数组处理•Java中多维数组的声明和初始化应按从高维到低维的顺序进行•Java中多维数组不必须是规则矩阵形式inttwoDim[][] = new int[4][];twoDim[0] = new int[5];twoDim[1] = new int[5];inttwoDim[][] = new int[][4];8182inttwoDim[][] = new int[4][5];tweDim[0][1][2][3]
复制数组java.lang.System类的arraycopy()方法提供了数组元素复制功能•源数组intsour [ ] = { 11, 12, 13, 14, 15,16 };•目的数组intdest[ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };•复制源数组中的所有元素到目的数组,从下标0的位置开始存储System.arraycopy(sour,0,dest,2,sour.length);83第3讲Java语言的结构化程序设计84
Java程序结构import java.applet.Applet;import java.awt.*;public class GetSextends Applet{Label label;Java包引入语句类声明语句成员变量Init方法paint方法Java程序结构•Java源程序是由类定义组成的,每个程序可以定义若干个类,但是只有一个类是主类–Java Application:包含main方法的类–Java Applet:Applet类的子类public void init(){label1=new Label(“前30个数的平方”);add(label1);}}public void paint(Graphicsg){for(inti=0;i<30;i++){intx=i%10, y=i/10;循g.drawString(String.valueOf((i+1)*(i+1)),环20+30*x,50+25*y);}}类体8586
Java程序结构Java程序中定义类使用关键字class,每个类定义由类头定义和类体定义两部分组成–类头部分用来声明类名和说明类的继承特性–类体部分用来定义静态属性和方法87语句•表达式语句(expression statements)•声明语句(declaration statement)•程序流控制语句(control flow statement)88 / 50
表达式语句将表达式后缀以―;‖,构成表达式语句•赋值语句•增量语句(使用++ 或--)•方法调用语句•对象创建语句aValue= 8933.234;//赋值语句aValue++;//增量语句System.out.println(aValue);//方法调用语句integerObject= new Integer(4);//对象创建语句89语句块•由―{ }‖括起来的0个或多个语句组成•可以出现在任何单个语句可以出现的位置•在流程控制语句中,即使只有一条语句也最好使用语句块90 程序流程控制•if …else •switch •for•while•do …while分支语句分支语句实现程序流程控制的功能,即根据一定的条件有选择地执行或跳过特定的语句Java分支语句分类–if-else 语句–switch 语句9192
if-else语句语法格式if(boolean类型表达式){语句或语句块;}if(boolean类型表达式){语句或语句块;} else if(boolean类型表达式){语句或语句块;} else {语句或语句块;}switch语句语法格式switch(exp){case const1:statement1;break;case const2:statement2;break;……case constN:statementN;break;[default:statement_dafault;break;]} 9394
循环语句功能–在循环条件满足的情况下,反复执行特定代码循环语句分类–for 循环–while 循环–do/while 循环循环语句的四个组成部分–初始化部分(init_statement)–循环条件部分(test_exp)–循环体部分(body_statement)–迭代部分(alter_statement)95循环语句for 循环语句语法格式for(init_statement;test_exp;alter_statement){body_statement}96 / 50
while/do while 循环语句语法格式while循环:[init_statement]while(test_exp){body_statement;[alter_statement;]}特殊流程控制语句break 语句–break语句用于终止某个语句块的执行{ ……break;……}do while循环:[init_statement]do{body_statement;[alter_statement;]}while(test_exp);–break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块9798
特殊流程控制语句continue 语句–continue语句用于跳过某个循环语句块的一次执行–continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环99第4讲面向对象软件开发基础100
对象•对象是面向对象技术的核心所在,以面向对象观点看来,所有面向对象的程序都是由对象来组成的•面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现101类•类是面向对象技术中一个非常重要的概念。简单的说,类是同种对象的集合和抽象102
面向对象技术的设计思想•传统程序设计思想:–把现实世界中的问题抽象成计算机可以理解和处理的数据结构,即让现实世界向计算机世界靠拢对象的状态•对象的状态又称为对象的属性,主要指对象内部所包含的各种信息即变量•一个对象的状态是它反映于现实世界的一系列属性–参数的数值(与对象有关系的数据)–与其它对象的关系–任一时刻的历史状态104•面向对象技术关键设计思想:–让计算机逻辑来模拟现实世界的物理存在,即让计算机世界向现实世界靠拢103 / 50
对象的行为•对象的行为又称为对象的操作,主要表述对象的动态属性,操作的作用是设置或改变对象的状态•对象的操作一般是基于对象的属性,并意图改变这些属性•对象的状态也会影响对象的行为•定义当其它对象发出请求时,该对象如何反应•由为对象定义的一系列操作决定105对象的标识•用程序中的对象名表示•每一个对象都有一个唯一的标识, 即使其状态有可能与其它对象一样106
对象的属性•状态→属性→变量•行为→操作→方法•标志→标识→对象名••••面向对象软件开发面向对象的分析阶段面向对象的设计阶段实现阶段维护阶段107108
面向对象程序设计方法的特点••••抽象封装多态继承抽象•科学研究的方法,去掉被研究对象中与主旨无关的次要的部分,或暂时不考虑的部分,仅仅抽取出与研究工作有关的实质性的内容加以考虑–过程抽象–数据抽象109110
封装抽象数据类型•在面向对象语言中,在数据类型的声明与操作这些数据的代码声明之间建立紧密联系,这种联系通常描述为一种抽象数据类型•Java用类来实现抽象数据类型的概念•利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外部被授权的操作,才能与这个抽象数据类型交流和交互•在Java中抽象数据类型用―类‖这种面向对象工具可理解和操纵的结构来代表,每个类都封装了相关的数据和操作•保证数据的完整性和安全性•使用抽象数据类型提高可重用性111112 / 50
继承•存在于面向对象程序的两个类之间的一种关系,当一个类拥有另一个类的所有数据和操作时,就称这两个类之间具有继承关系•被继承的类称为父类和超类•继承的类称为子类•一个父类可以同时拥有多个子类•每个子类都唯一拥有一个直接父类113面向对象概念•对象和类–类把数据和对数据的操作封装在一起–对象是类的实例,实际操作的是对象•对象的描述–静态结构(自身)共同构成–组织结构(空间位置)对对象的–生存状态(时间位置)全息描述114
•利用继承,提高代码质量,灵活性•类库管理的代价•领域分析的代价•学习的代价•利用封装,提高代码的安全性•管理的代价•利用多态,提高代码的可读性和设计灵活性116面向对象思想的本质••••模拟现实,对现实系统的直接模拟越完善的模拟,越接近实际模拟建立在分析的基础上模拟建立在层次的基础上,可以层层递进•通过正常和异常处理机制,完成处理流程面向对象的机制115
类的概念第5讲Java面向对象编程基础•类是现实世界中实体的,是封装了的复杂的抽象数据类型,类具有完整的和相对的,可以包含丰富的内涵、更好的安全性和更大的功能•定义类的过程就是定义类的的过程–类的属性就是类的静态属性的简称–类的服务则被称为成员函数或方法•类包括生命周期中的要用到的所有代码,构造方法、变量和方法的声明等•类中直接声明的变量(属性)称为变量,118方法称为方法117
类的语法结构[修饰符] class 类名[extends 父类] [implements 接口名]{类成员变量声明;类构造方法声明;类方法声明;}例:class TestClass{String name;intage;String department;public TestClass(){ }void print(){System.out.println(name+“is”+ age +“at”+department);} 119}声明类头•父类名•接口名•修饰符–访问控制符–抽象类说明符–最终类说明符120 / 50
声明类体类的属性–基本数据类型[修饰符] 变量类型变量名[=变量初值];–引用数据类型[修饰符] 类名对象名[=new 类名(实参表)];•属性是类的特征或特性•属性的值是某一特定对象的属性值•在类中属性名必须是唯一的•每一个类的实例都存有为这个类定义的所有属性的值121对象生命周期•_________对象•_________对象•______________对象122
创建对象创建对象的三个步骤•••Employee e = newEmployee(“LiSi”,40,“Java Department”);123对象的回收•垃圾收集机制(garbage collection):Java运行环境当确定某个对象不再被使用时,将其。一个对象在没有指向它时,可作为垃圾收集•垃圾搜集器:Java运行环境中的垃圾搜集器地释放不用对象占用的空间124
声明类体•类的方法–称为成员方法,用来规定操作,实现机制,是类与外界进行的窗口[修饰符] 返回值类型方法名(参数列表)throws 例外名表{关键字static•static称为修饰符时,•在Java类中声明可使用关键字static做为修饰符方法体} •类的方法作用–围绕着类的属性进行各种操作–与其他的类或对象进行数据交流、信息传递等操作125•static标记的属性或方法由共享,如访问控制权限允许,可不必创建该类的而直接用调用•static成员也称类成员或静态成员,如:类属性、静态属性、类方法、静态方法等126
类属性•被static 修饰的属性称为静态属性或类属性•类属性是类的属性,任何一个类的具体对象,即对于该类的任何一个具体对象而言,类属性是一个,任何一个对象访问或修改它,都是针对同一。•类属性由该类的所有共享127类属性•类属性在加载该类时,只分配一次并。•类属性可以由或,修饰•对于修饰的类属性,可以在类外直接用类名调用而不需要初始化128 / 50
类方法•在方法前加入static标识符,即为类方法•类方法是属于•类方法可以在不产生以来调用的方法的情况下直接类方法•在类方法内部不能对方法进行访问•在类方法内部不能使用•this表示调用关键字的对象,而类方法变量和•非static 的方法是属于某个对象的方法,在这个对象时对象的方法在内存中拥有的代码段•static 方法只能处理的成员属性129不需要利用对象进行调用130
静态初始化器•由关键字static引导的语句块(语句组)•存在类的中、的外部静态初始化器与构造方法•构造方法是始化,静态初始化器对始化初初•static块通常用于初始化static(类)属性•static语句块仅在其所属的类被载入时执行一次131•构造方法在时由系统自动执行,静态初始化器是在其时由系统调用运行•静态初始化器方法132
抽象类关键字abstract•abstract 是修饰符类方法•含有抽象方法的类必须被声明为_______,并在类定义关键字class前加入_________修饰符。•抽象类必须_________,抽象方法必须_____________。•抽象类不能被实例化,一般可以利用其_________类的实例进行实例化操作。abstractclass Employee{abstractvoid raiseSalary(inti);}133134•加入abstract的类称为•加入abstract的方法称为
抽象方法•一个方法只有部分而没有方法的,该方法叫做抽象方法•抽象方法必须用•抽象方法必须以束标志来修饰作为结•final是•final可以修饰关键字final修饰符;;类;方法;•final修饰的类称为•final修饰的方法称为abstractclass Employee{abstractvoid raiseSalary(inti);}class Manager extendsEmployee{void raiseSalary(inti){ ….}} •final修饰的变量(成员变量和局部变量)称为;•final标记的类不能被135。136•final标记的方法不能被 / 50
终结器关键字final•final标记的成员变量必须在或在中显式赋值,然后才能使用•常量只能赋值,一般写•在面向对象程序设计中,对象与单纯的变量一样,有其产生和消亡的过程,当一个对象不再有用时应该回收它(释放其所占用及其他)•终结器是的方法•终结器无参数列表和返回值•由系统自动调用•终结器的调用时刻取决于系统的垃圾回收线程protected void finalize(){System.out.println(toString());}137138final intPI = 3.1415927;•被定义成final的类不能有类
访问控制修饰符在对Java类中定义的属性和方法进行访问时,可以通过不同的访问控制修饰符规定不同的访问等级Modiferprivatedefaultprotectedpublic同一类同一个包YesYesYesYesYesYesYesYesYesYes139140关键字volatile•关键字volatile修饰的属性可以同时被几个线程所控制和修改•关键字volatile用来修饰接受外部输入的属性子类其它
关键字native•关键字native用来声明用其他语言书写方法体并具体实现方法功能的特殊方法native double addMethod(intx,inty);关键字synchronized•用于多线程共存的程序中的协调和同步•修饰类方法,调用前将当前类的对象加锁•修饰普通方法,调用前将调用方法的对象加锁142141
修饰符的混合使用•abstact不能与final并列修饰同一个类•abstact不能与private、static、native或final并列修饰同一个方法•abstact类中不能有private的成员(包括属性和方法)•abstact方法必须在abstact类中•static方法中不能处理非static的属性143第6讲深入面向对象程序设计144 / 50
类的继承类是所有Java类的最高层父类。继承,不允许类。类。,达145类的继承子类继承父类的属性、方法子类中只需声明的东西父类中带private 修饰符的属性、方法被继承,子类从父类继承所有属性和方法作为自己的成员构造方法被继承146Java只支持一个一个继承。类只能有一个类可以继承出多个一个类通过实现到多继承效果。
类的继承在方法中调用构造方法用调用父类的构造方法用;;关键字this•Java中为解决变量的命名冲突和不确定性问题,引入关键字―this‖•this代表this在构造方法中指this在普通方法中指Java中任何一个类的实例都可作为类的实例使用,可调用类具有的方法Employee [ ] e= new Employee[200];e[0] = new Manager();e[1] = new Worker();e[2] = new Employee();•―this.属性‖和―this.方法‖表示调用147•―this()‖表示调用148
属性的继承•子类可以继承父类属性,而这些属性是所有子类都拥有的属性的集合Employee+name : String +salary : double+birthDate: Date+getDetails(): StringManager+department : StringEngineer+project : String属性的隐藏•属性隐藏:•子类Child继承父类Parent中非私有属性变量,且子类定义了与父类同名的属性变量,子类中拥有两个同名的变量,即出现了子类变量对父类同名变量的隐藏•当子类执行理来自父类的变量149的方法时,处的方法时,处150•当子类执行理自己定义的变量
方法的重写(覆盖)方法的继承•子类可以继承父类的非私有的方法Employee+name : String +salary : double+birthDate: Date+getName(): StringManager+department : String+getDepartment():StringEngineer+project : String+getProject():String151•概念:•重写的方法在调用时,使用类名或所属类的对象名•重写方法必须和被重写方法具有相同的、列表和类型•重写方法不能使用比被重写方法更严格的,即方法的不能缩小•不能抛出新的例外152 / 50
方法重写与属性隐藏子类变量隐藏父类的属性变量–子类继承的同名属性在子类对象中仍然存在,并占用独立的内存空间–子类对象直接调用的是子类中自定义的同名属性子类方法对父类方法的重写–清除父类方法占用内存空间153方法的重载在同一个类中一个方法名被用来定义多个方法•参数列表•返回类型•修饰符154
指代关键字•Java系统默认,每个类都缺省地具有null、this和super三个量,可以直接引用–null:–this:–super:155this关键字•this表示的是,即this代表一个引用•利用this可以访问、修改的属性、调用的方法156
this关键字•调用当前对象所属类的属性和方法this.属性名this.方法名•调用当前对象所属类的构造方法this(参数列表)157super 关键字•super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用•super可用于访问的属性•super可用于调用的成员方法•super可用于在构造方法中调用的构造方法•super的追溯不仅于直接父类158
super关键字•调用父类对象的属性和方法super.属性名super.方法名•调用父类对象的构造方法super(参数列表)159构造方法•用于在创建所属类的对象时,由系统自动调用该类的构造方法为新对象初始化•构造方法无返回值•构造方法名与类名相同160 / 50
构造方法重载构造方法重载,参数列表必须。可以在构造方法的行使用this关键字调用其它(重载)的构造方法调用父类构造方法在子类的构造方法中调用父类的构造方法可使用语句如果子类的构造方法中没有地调用父类构造方法,也没有使用关键字调用重载的其它构造方法,则系统默认调用父类的构造方法如果子类构造方法中既未父类构造方法,而父类中又没有构造方法,则编译出错161调用的162
构造方法的继承子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法在一个Java类中可以通过两种方式获得构造方法1.使用系统默认的无参构造方法2.显式定义一个或多个构造方法163构造方法的继承如果子类没有自定义构造方法,则继承父类的构造方法如果子类自定义了构造方法,创建新对象时,先执行构造方法,再执行构造方法对于父类中有参数的构造方法,子类可以在自己的构造方法中利用调用,该语句必须是构造方法的可执行语句164
对象构造和初始化细节1.绑定构造方法参数2.如有this()调用,则调用相应的重载构造方法3.显式或隐式追溯调用父类的构造方法(Object类除外)4.进行实例变量的显式初始化操作5.执行当前构造方法的方法体165多态性在Java中,类的对象可以替代类的对象使用一个对象确定的数据类型一个引用类型变量指向(引用)类型的对象例如:Employee employee= new Manager();Object o = new Employee();o = new Manger();166
多态性多态的两种表现形式重载定义:一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量访问子类中添加的属性和方法重写定义:方法声明的参数类型为父类类型,可以使用作为实参调用该方法167168 / 50
父类对象和子类对象的转换•子类对象可以视为是其父类的一个对象•父类对象不能作为某个子类的对象•通过参数的传递可以将一个子类对象作为实参传递给父类对象的形参•父类的实例对象实际上是其某个子类实例对象时,可以通过强制类型转换将父类的实例对象恢复为子类实例对象强制类型转换对Java对象的强制类型转换称为造型–在造型前可以使用instanceof操作符测试一个对象的类型–从子类到父类的类型转换可以自动进行–从父类到子类的类型转换必须通过造型(强制类型转换)实现–无继承关系的引用类型间的转换是非法的170169
接口•定义:•接口是一种和方法的方法的类,其中只包含,而没有和。的,所。实•一个接口中所有成员方法都是有的成员变量都被定义为•接口类层次结构,不相关的类现相同的接口•接口是义的集合和的定171•多个无关的类•一个类•接口与实现类之间实现同一个接口实现多个无关的接口多态性172
接口的声明[public] interface 接口名[extends 父接口名列表]{ [public][static][final]属性类型常量名=常量值;[public][abstract]返回值方法名(参数列表)[throw 异常列表];}实现接口<访问控制> class 实现类[extends 父类名][implements 接口名[,接口名]*] {类体}173174
接口•可以通过实现接口实现多重继承:一个类可继承父类,并实现接口•一个接口可作为类名使用,实现多态•一个接口可以作为一种数据类型使用,实现多态接口用法总结通过接口可以实现通过接口可以指明通过接口可以了解175176 / 50
包•包(package)是集合,它提供与的一个管理创建包格式:package 包名用package语句指定源文件中的类属于一个特定包•包定义语句在每个源程序中即一个类包•包定义语句必须在程序的可有空格及注释)•包名用―‖分隔177178•Java平台中的类与接口都是根据功能以包组织的•包机制的好处:条,行(之前
创建包•在缺省情况下,系统会为.java源文件创建一个包,该.java源文件中定义的所有类都隶属于这个包,这些类之间相互引用,被其它包所引用package fly;public class Airplane extends Machine implements Fly{...}179包的引用•对于同一包中的其它类,需在要使用的属性和方法名前加上作为前缀•对于其它包中的类,则需要在类名前加上前缀•只有类型的成员才能被包外的类访问,访问要通过以下方法:•使用长名引用包成员•引入包成员•引入整个包180
•当要使用另一个包中的类,而该包并没有引入,则必须使用长名引用该类import 语句将package 引入源程序,格式:import 包名.*;import 包名.类名;[package …..][import ….][类声明…]...•import 语句必须在源程序前,在package 后•import 语句缺省是“import java.lang.*;”181182•可以先引入包中的指定类或整个包,再使用该类,这时可以使用短名
编程中的错误•错误是编程中不可避免和必须要处理的问题,编程人员和编程工具处理错误能力在很大程度上影响着编程工作的效率和质量•错误分为错误和错误183•编译错误是由于所编写的程序存在语法问题,未能通过从源代码到目标代码的编译过程而产生的,它是由语言的编译系统负责检测和报告•运行错误是在程序的运行过程中产生的错误。根据性质不同,可分为系统运行错误和逻辑运行错误。–系统运行错误:程序在执行过程中引发了操作系统的问题–逻辑运行错误:程序不能实现编程人员的设计意图和设计功能而产生的错误184 / 50
异常和异常类•异常又称为例外或违例,是特殊的运行错误对象,对应于Java语言特定的运行错误机制。一个异常就是其相对异常类的对象。Java中定义了很多异常类,每个异常类都代表了,类中包含了该等内容。185异常处理机制每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。186
异常的类型异常来表明出错的优点–将处理出错的代码与正常的代码分开–提供了一种针对特定错误作出强制响应的办法•异常总是类•所有的标准异常都由接子类涵盖,分别为包中的标准的一些子类对象类的两个直和类•这些类自身都有子类可以识别特定的异常情况188187
异常类的结构与组成ThrowableErrorAWTErrorLinkageErrorVirtualMachineError……ExceptionRuntimeExceptionClassNotFoundExceptionIOExceptionInterruptedException……189违例(Exception类)•Exception违例(例外)类,是Java异常类的父类,是其它因编程错误或偶然的外在因素导致的一般性问题•构造函数public Exception()public Exception(Strings)190
违例(Exception类)对于Exception类的子类表示的几乎所有异常,如果生成这些异常,在程序中必须处理它们,处理方法为:––191系统定义的运行异常Exception类有若干子类,每一个子类代表了一种特定的运行时错误。这些子类有些是系统事先定义好并包含在Java类库中的通常对应系统运行错误。由于这种错误可能导致操作系统错误甚至整个系统的瘫痪,所以需要定义异常类来特别处理192 / 50
异常处理异常类的结构与组成ExceptionRuntimeExceptionArithmeticExceptionIndexOutOfBoundsExceptionNullPointerException……IOExceptionUnknownHostExceptionMalformedURLExceptionSocketException……193•Java中的异常(exception)是当程序中出现不同寻常的情况时生成的一个对象•这种异常对象有相关的数据成员存储着故障的情况,一般称异常,也就是。•该异常对象可以作为,传递给专门为处理相关问题而编写的程序代码,接收异常对象作为的代码称为了异常•如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将,相应的Java194程序也将。
抛出异常•所有系统定义的运行异常都可以由系统自动抛出import java.io.*;public class ExceptionTest{public static void main(String[] args){String teachers[]={“liu”,“zhang”,“wang”};for(inti=0;i<5;i++){System.out.println(teachers[i]);}System.out.println(“nthisis the end”);}}195捕获违例•当一个异常被抛出时,应该有专门的语句来接收这个被抛出的异常对象,这个过程称为捕获违例或捕捉异常•当一个异常对象被捕获或接收后,用户程序就会发生流程的跳转,系统终止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统196
捕获违例捕获异常是通过try-catch-finally语句实现try{......}catch(ExceptionName1 e){......}catch(ExceptionName2 e){......} [ finally{......} ]197捕获违例•getMessage()方法用来得到有关异常事件的信息•printStackTrace()方法用来跟踪异常事件发生时执行堆栈的内容198
捕获违例一个异常对象能否被一个catch语句块所接收,主要看该异常对象与catch块的异常参数的匹配情况:–异常对象与形参属于相同的异常类–异常对象属于形参异常类的子类–异常对象实现了形参所定义的接口199声明抛出违例•一个方法中的语句在执行时,可能生成某种违例,但是并不能确定如何处理这种违例,则此方法。•表明该方法将不对这些违例进行处理,而由该方法的负责处理。public void readDatabaseFile(Stringfile)throws FileNotFoundException{……FileInputStreamfis= new FileInputStream(file);..……}200 / 50
•重写方法不能抛出比被重写方法范围更大的违例类型public class TestA{public void methodA()throws RuntimeException{……}}public class TestB1 extends TestA{public void methodA()throws ArithmeticException{……}}public class TestB2 extends TestA{public void methodA()throws Exception {……}201}抛出违例•首先要生成,然后通过语句实现抛出操作(提交给Java运行环境)throw new IOException();•可以抛弃的例外必须是或其子类的实例。下面的语句在编译时将会产生语法错误:throw new String(“throwException”);•如果一个例外在返回到main()时还未被处理,则程序将终止202
创建自定义异常•系统定义的异常主要用来处理系统可以预见的较为常见的运行错误,对于某个应用所特有的运行错误,则需要编程人员根据程序的特殊逻辑在用户程序里自己创建用户自定义的异常类和异常对象•这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误•用户自定义的所有异常类都是Exception的子类203第7讲常用类库204
Java类库•Java程序是由组成的,编写Java程序就是设计和确定它们的过程,一旦及其之间关系确定了,程序运行中各种可能的状态和状态转化原则也就确定了•根据实现功能不同,将系统标准类划分成不同的集合,每个集合是一个,合称为类库•类库是Java编程的,它可以帮助开发者方便、快捷地开发Java程序205Java 核心类包•java.lang──包含一些Java语言的核心类,包含了运行Java程序必不可少的系统类•java.io──是Java语言的标准输入/输出类库,包含实现Java程序与操作系统、用户界面以及其他Java程序做数据交互所使用的类•java.util──包含一些实用工具类•java.awt──包含了构成抽象窗口工具集(AWT)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)•java.applet──包含applet运行所需的一些类•java.net──用来实现网络功能的类库•java.util.zip──用来实现文件压缩功能•java.awt.event──用于事件处理的类库•java.sql──用于实现JDBC的类库,使用该包可以206使Java程序具有访问不同种类的数据库功能
Object 类•Object类是所有Java类的类•Object定义了所有对象都需要的状态和行为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条件变量改变时通知相关对象以及返回对象的类•如果在类的声明中未使用extends关键字指明其父类,则默认父类为类207Object 类主要方法•protected Object clone()生成当前对象的一个拷贝,并返回这个复制对象•public booleanequals(Objectobj)比较两个对象是否相同•public final Class getClass()获取当前对象所属的类信息,返回Class对象•protected void finalize()定义回收当前对象时所需完成的清理工作•public String toString()返回当前对象本身的有关信息,按字符串对象返回208 / 50
==操作符与equals方法•比较原则:引用类型数据比较引用基本类型数据比较数据值•equals()方法只能比较引用类型•―==‖可以比较引用类型及基本类型特例:•当用equals()方法进行比较时,•用―==‖进行比较时,209210
toString方法•toString()方法在Object类中定义,其返回值是类型,描述当前对象的有关信息,内容因具体的对象而异•在进行String与其它类型数据的连接操作时,自动调用了对应的toString()方法将其它类型数据转换为String类型•可以根据需要在用户自定义类中该toString()方法211数据类型类(封装类)针对八种基本定义相应的引用类型基本数据类型booleanbyteshortintlongcharfloatdoubleByteShortIntegerLongCharacterFloatDouble212封装类Boolean
Math类•用来完成一些常用的数学运算,提供了若干实现不同标准数学函数的方法,这些方法均是static的类方法•存于java.lang包•是Object类的直接子类常用Math类方法public final static double E;数学常量epublic final static double PI;圆周率常量public static double abs(doublea);绝对值public static double max(doublea,doubleb);最大值public static double log(doublea);自然对数public static double rint(doublea);四舍五入public static double random();0~1间随机数213214
System类•System类•public static void exit(intstatus);err;in;out;System类的属性有三个:•public static void gc();例:char c=System.in.read();System.out.println(“Hello!”);215216 / 50
向标准输出写出数据System.out/System.err的println/print方法println方法从标准输入读取数据标准输入System.inprint方法217218
import java.io.*;public class KeyboardInput{public static void main(String args[]){String s;InputStreamReaderir=new InputStreamReader(System.in);BufferedReaderin = new BufferedReader(ir);try{s = in.readLine();while(!s.equals(“")){ System.out.println(”Read: “ + s);s = in.readLine();}in.close();} catch(IOExceptione){e.printStackTrace();}}219}系统属性•在Java中,系统属性起到替代环境变量的作用(环境变量是平台的)•可使用System.()方法获得一个Properties类的对象,其中包含了所有可用的系统属性信息•获得特定系统属性的属性值,可使用System.(String name)方法220
Properties 类(java.util.Properties)•Properties类可实现import java.util.Properties;import java.util.Enumeration;public class TestProperties{public static void main(String[] args){Properties ps= System.getProperties();Enumeration pnames= ps.propertyNames();while(pnames.hasMoreElements()){String pn=(String)pnames.nextElement();String p = ps.getProperty(pn);System.out.println(pn+ ” is “ + p);}}}222••••propertyNames()方法getProperty方法load方法save方法221
String 类String类对象保存不可修改的符序列,即表示的是字符串常量字String 类常用方法•public intlength();当前对象中字符个数•public booleanstartsWith(Stringprefix);判断当前字符串的前缀是否为指定字符子串•public booleanendsWith(Stringsuffix);判断当前字符串的后缀是否为指定字符子串•public intindexOf(intch);查找当前字符串中指定字符第一次出现位置•public intindexOf(intch,intfromIndex)查找当前字符串中自指定位置之后,指定字符第一次出现位置224一般情况下,一个String字符串一经创建,无论其长度还是内容,都不能修改public String()public String(Stringvalue)public String(StringBufferbuffer)public String(charvalue[ ])223 / 50
String 类常用方法•public intindexOf(Stringstr);public intindexOf(Stringstr,intfromIndex);public intlastIndexOf(Stringstr);public intlastIndexOf(stringstr,intfromIndex);在当前字符串中查找指定子串•public intcompareTo(StringanotherString);public booleanequals(ObjectanObject);public booleanequalsIgnoreCase(StringanotherString);比较两个字符串•public String concat(Stringstr);连接字符串225StringBuffer类StringBuffer类对象保存可扩充和修改的Unicode字符序列,即字符串变量构造方法–StringBuffer()–StringBuffer(intlength)–StringBuffer(Stringstr)226
StringBuffer类实现修改操作的方法–public StringBufferappend(类型参数名)追加操作–public StringBufferinsert(int插入位置,类型参数名)插入操作–public void setCharAt(intindex,charch)替换操作227日期类•创建日期类Date•获取日期和时间–getYear()–getMonth()–getDate()–getDay()–getHour()–getMinutes()–getSeconds()228
日期类•比较日期和时间–booleanbefore(DatecompareDate);–booleanafter(DatecompareDate);–booleanequal(ObjectcompareDate);随机类•随机类Random的构造方法public Random();public Random(long seed);229230
命令行参数任何Java应用程序都可以使用命令行参数命令行参数被系统以的方式传递给应用程序中的main方法,由参数接收public static void main(String[] args)命令行参数使用格式:java TestArgsarg1 arg2 ”another arg“231第8讲图形用户界面232 / 50
图形用户界面(GUI)•GUI(Graphics User Interface)图形用户界面,使用图形方式,借助菜单、按钮等标准界面元素和鼠标操作帮助用户更方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形方式显示给用户•通过GUI 用户和程序之间可以方便友好的进行交互•在java.awt包中包含许多支持GUI设计的类233抽象窗口工具集(AWT)•AWT(Abstract Window Toolkit)抽象窗口工具集•所谓抽象是因为Java是一种平台语言,要求其设计的图形用户界面必须支持平台。AWT类库中的各种操作被定义在一个并不存在的―‖中进行,使得开发人员设计的界面独立于具体的界面实现234
抽象窗口工具集(AWT)•AWT中定义了多种和,用于在Application和Applet中进行GUI设计•Java 程序要显示的GUI 组件必须是抽象类的子类•生成GUI所需的基本元素位于两个包中,即为java.awt包和javax.swing包•swing组件类一般都是由awt包中的基础类派生而成的,替代了许多awt包中的类235设计和实现图形用户界面1.创建组成界面的2.定义GUI的事件和236
Java.lang.ObjectEventBorderLayoutFlowLayoutGridBagLayoutMenuComponentMenuBarMenuItemComponentButtonContainerpanelAppletwindowDialogFrameScrollPane237组件(Component)Java的图形用户界面的最基本组成部分是组件,组件是一个可以以的方式显示在屏幕上并能与用户进行交互的,例如按钮、标签等组件不能独立地显示出来,必须将组件放在一定的中才可以显示出来抽象类是所有Java GUI组件的共同父类,它规定了所有GUI组件的基本特性,其中定义的方法实现了作为一个GUI部件所应具备的基本功能238AWT类及层次关系
属性设置属性的方法setBounds(Rectangle)setBounds(int,int,int,int)setCursor(Cursor)setDropTarget(DropTarget)setEnabled(boolean)setFont(Font)setLocale(Locale)setLocation(Point)setLocation(int,int)获取属性的方法Color getBackground()Rectangle getBounds()Cursor getCursor()DropTargetgetDropTarget()booleanisEnabled()Font getFont()Color getForeground()Locale getLocale()Point getLocation()Point getLocationOnScreen()String getName()Dimension getSize()booleangetVisible()240组件定位•决定Java组件在容器中的位置和尺寸•如果想要人工控制组件在容器中的大小和位置,可先,然后使用组件类的下述成员方法–––239背景色setBackground(Color)边界光标拖放使能字体地区位置前景色setForeground(Color)组件名setName(String)尺寸setSize(Dimension)可见性setVisible(boolean)/ 50
容器类(Container)容器类(Container)实际上是类的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能容器类是一个类,包含了所有容器组件都必须具有的属性和方法容器类对象可使用方法添加组件241容器类型•Window、Frame、Dialog和FileDialog是边框的容器•Panel和Applet是容器242边框的容器•ScrollPane:可以自动处理滚动操作的
Window类•可自由停泊的窗口,即一个Window或Window的子类都不能作为组件用add()方法添加到其他容器内部,必须独立存在,但可以包容其他组件•Window不能作为程序的容器•Window创建的窗口默认为见,可以利用方法显示•Window缺省为布局管理器•Window可引发类的事件和事件243Frame类•Frame类是抽象类的子类•Frame一般用于Application程序的图形用户界面容器•Frame是所有窗口的容器,但是可‖,有外。244•Frame不能被其他容器所以被其他容器并弹出•Frame对象显示效果是一个―边框,且带有和
Frame类•默认初始化为见的,可使用setVisible()方法使之变为可见•器,可使用认布局管理器为Frame对象默认布局管理方法改变其默方法方法方法设置245•向Frame窗口中添加组件使用•从Frame窗口中移出组件使用•利用和获取标题方法和import java.awt.*;public class FrameExample{private Frame f;public FrameExample(){f = new Frame(” The blue Frame!“);}public void launchFrame(){f.setSize(300,200);f.setBackground(Color.blue);f.setVisible(true);}public static void main(String args[]){FrameExampleguiFE=new FrameExample();guiFE.launchFrame();}}246
Panel类•Panel类对象提供容纳组件的空间•Panel类对象不同的布局管理器采用和所在容器Panel类继承层次java.lang.ObjectComponentContainerPanel247248•Panel 放在Window、Frame或Applet等容器中•Panel类对象是一块边框的区域•可以向Panel类对象中放入基本组件
/ 50
import java.awt.*;public class FrameWithPanel{private Frame f;private Panel pan;public FrameWithPanel(Stringtitle){f = new Frame(title);pan = new Panel();}public void go(){f.setSize(200,200);f.setBackground(Color.yellow);f.setLayout(null);pan.setSize(100,100);pan.setBackground(Color.red);f.add(pan);f.setVisible(true);}public static void main(Stringargs[]){FrameWithPanelfwp=new FrameWithPanel(”Framewith Panel“);fwp.go();}249} 布局管理器•Java语言为了使生成的图形用户界面具有良好的性,提供了布局管理器这个工具来管理在容器中的布局,而不使用的方式•每个容器布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器250
布局管理器•FlowLayout:•BorderLayout:•GridLayout:•CardLayout:•GridBagLayout:251类默认的布局管理器类默认的布局管理器FlowLayout布局管理器设置布局管理器命令setLayout(newFlowLayout(intalign,inthgap, intvgap))•align:设置对齐方式•FlowLayout.LEFT•FlowLayout.RIGHT•FlowLayout.CENTER缺省是居中•hgap/vgap:水平间距/垂直间距,缺省值为5252
import java.awt.*;public class FlowExample{private Frame f;private Button b1;private Button b2;private Button b3;public FlowExample(){f = new Frame(”FlowLayout“);b1 = new Button(”Button1“);b2 = new Button(”b2“);b3 = new Button(”thethridButton“);}public void go(){f.setLayout(newFlowLayout());f.add(b1);f.add(b2);f.add(b3);f.setSize(100,100);// f.pack();f.setVisible(true);}public static void main(Stringargs[]){FlowExamplefe= new FlowExample();fe.go();}}FlowLayout的构造方法new FlowLayout(FlowLayout.RIGHT,20,15);new FlowLayout(FlowLayout.LEFT);new FlowLayout();253254
BorderLayout布局管理器•将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域•如不指定组件的加入部位,则默认加入到区域•每个区域只能加入组件,如果加入多个组件,则。•是Frame类的默认布局管理器255BorderLayout布局管理器BorderLayout构造方法new BorderLayout()new BorderLayout(inthgap,intvgap)加入组件add(button, BorderLayout.align)256
/ 50
import java.awt.*;public class BorderExample{private Frame f;private Button bn, bs, bw, be, bc;public BorderExample(){f = new Frame(”BorderLayout“);bn= new Button(”NORTH“);bs= new Button(”SOUTH“);bw= new Button(”WEST“);be = new Button(”EAST“);bc= new Button(”CENTER“);}public void go(){f.add(bn, BorderLayout.NORTH);// f.add(bn, ”North“);f.add(bs, BorderLayout.SOUTH);f.add(bw, BorderLayout.WEST);f.add(be, BorderLayout.EAST);f.add(bc, BorderLayout.CENTER);f.setSize(200,200);f.setVisible(true);}public static void main(Stringargs[]){BorderExamplebe = new BorderExample();257be.go();}}GridLayout布局管理器在GridLayout构造方法中指定分割的行数和列数new GridLayout(3,4);setLayout(newGridLayout(introws, intcols));258 import java.awt.*;public class LayoutExample{private Frame f;private Panel p;private Button bw, bc, bfile, bhelp;public LayoutExample(){f = new Frame(”GUIExample 3“);bw= new Button(”West“);bc= new Button(”Workspace region“);bfile= new Button(”File“);bhelp= new Button(”Help“);}public void go(){f.add(bw, BorderLayout.WEST);f.add(bc, BorderLayout.CENTER);p = new Panel();p.add(bfile);p.add(bhelp);f.add(p, BorderLayout.NORTH);f.pack();f.setVisible(true);}public static void main(Stringargs[]){LayoutExamplele = new LayoutExample();260le.go()}}
import java.awt.*;public class GridExample{private Frame f;private Button b1, b2, b3, b4, b5, b6;public GridExample(){f = new Frame(”GridExample“);b1 = new Button(”1“);b2 = new Button(”2“);b3 = new Button(”3“);b4 = new Button(”4“);b5 = new Button(”5“);b6 = new Button(”6“);}public void go(){f.setLayout(new GridLayout(3,2));f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.add(b6);f.pack();f.setVisible(true);}public static void main(Stringargs[]){GridExamplege= new GridExample();ge.go();}}多布局实例259
事件•事件(Event)事件事件不只是针对Windows应用程序,多数控制和监视程序都是程序任何一个程序外部发生的事情,如开关关闭、温度到达了预先设置好的值,都可以注册成为事件在Java中,可以在自己的程序中创建事件,用一部分其他代码标志一些值得注意的事情发生。但是,我们所要关注的事件类型是在与程序交互过程中发生的261262•事件源(Event source)•事件处理者(Event handler)
import java.awt.*;public class ButtonEvent{private Frame f;private Button b;public ButtonEvent(){f = new Frame(”ButtonEvent“);b = new Button(”PressMe!“);b.setActionCommand(”ButtonPressed“);}public void go(){b.addActionListener(newButtonHandler());f.add(b,”Center“);f.pack();f.setVisible(true);}public static void main(Stringargs[]){ButtonEventbe = new ButtonEvent();be.go();}}import java.awt.event.*;public class ButtonHandlerimplements ActionListener{public void actionPerformed(ActionEvente){System.out.println(”Actionoccurred“);System.out.println(”Button'scommand is: “ + e.getActionCommand());}}263264
/ 50
事件代理•Java GUI设计中,通过式对所关注的事件源进行监控的方事件类•类,它们都是接或间接子类•EventObject类的getSource()方法包中定义了多个事件类的直•注册监听器时应指明该监听器监控的事件种类•当事件源发生了某种类型的事件时,只触发事先已就该种事件类型的监听器265•AWTEvent类的getID()方法266
Java事件分类java.awt.event包KeyEvent监听器接口•java.awt.event包中定义了十一个监听器接口,每个接口内部包含了若干处理相关事件的抽象方法•通常每个事件类都有一个与之相对应,而事件类中的每个具体事件类型都有一个具体的与之相对应,当具体事件发生时,这个事件将被封装成一个事件类的作为实际参数传递给与之对应的具体方法,由这个具体方法负责响应并处理发生的事件268java.util.EventObjectjava.awt.AWTEventActionEventAdjustmentEventComponentEventItemEventTextEventContainerEventInputEventFocusEventWindowEventPaintEventMouseEvent267
事件类型ActionEventItemEvent监听器接口ActionListenerItemListener监听器接口中的方法actionPerformed(ActionEvent)itemStateChanged(ItemEvent)mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)mouseDragged(MouseEvent)mouseMoved(MouseEvent)keyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)focusGained(FocusEvent)focusLost(FocusEvent)事件类型监听器接口监听器接口中的方法AdjustmentEventAdjustmentListeneradjustmentValueChanged(AdjustmentEvent)componentMoved(ComponentEvent)ComponentEventComponentListenercomponentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)windowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)MouseEventMouseListenerMouseEventMouseMotionListenerWindowEventWindowListenerKeyEventFocusEventKeyListenerFocusListenerContainerEvent269ContainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent)TextListenertextValueChanged(TextEvent)270TextEvent
import java.awt.*;import java.awt.event.*;public class TwoListenerimplements MouseMotionListener,MouseListener{private Frame f;private TextFieldtf;public TwoListener(){f = new Frame(”Twolisteners example“);tf= new TextField(20);}public void go(){Label label= new Label(”Clickand drag the mouse“);f.add(label, ”North“);f.add(tf, ”South“);f.addMouseMotionListener(this);f.addMouseListener(this);f.setSize(300, 200);f.setVisible(true);272}多重监听器•一般情况下,事件源可以产生多种不同类型的事件,因而可以注册(触发)多种不同类型的监听器•一个事件源组件上可以注册监听器,针对同一个事件源的同一种事件也可以注册监听器,一个监听器可以被注册到的事件源上271
/ 50
}public void mouseDragged(MouseEvente){String s = ”Mouse dragging:X=“ + e.getX()+ ” Y=“ + e.getY();tf.setText(s);} public void mouseEntered(MouseEvente){String s = ”The mouse entered“;tf.setText(s);}public void mouseExited(MouseEvente){String s = ”The mouse has left the building“;tf.setText(s);}public void mouseMoved(MouseEvente){ }public void mousePressed(MouseEvente){ }public void mouseClicked(MouseEvente){ }public void mouseReleased(MouseEvente){ }public static void main(Stringargs[]){TwoListenertwo = new TwoListener();two.go();}事件适配器类•为简化编程,针对大多数事件监听器接口定义了相应的类,即事件适配器类•在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情在定义监听器类时就可以继承事件适配器类,并只所需要的方法•适配器类实现了相应监听器接口,但所有方法体都是的273274
事件类型ActionEventWindowEventMouseEventMouseEventKeyEventFocusEvent监听器接口ActionListenerWindowListenerMouseListenerMouseMotionListenerKeyListenerFocusListener------适配器类事件适配器用法import java.awt.*;import java.awt.event.*;public class MouseClickHandlerextends MouseAdapter{public void mouseClicked(MouseEvente){……}}WindowAdapterMouseAdapterMouseMotionAdapterKeyAdapterFocusAdapter275276
import java.awt.*;import java.awt.event.*;class W1 extends Frame implements WindowListener{W1(){super(”Window1“);setSize(350,200);setVisible(true);addWindowListener(this);}public void windowClosing(WindowEvente){System.exit(0);}public void windowOpened(WindowEvente){}public void windowClosed(WindowEvente){}public void windowIconified(WindowEvente){}public void windowDeiconified(WindowEvente){}public void windowActivated(WindowEvente){}public void windowDeactivated(WindowEvente){}public static void main(Stringargs[]){new W1();}}窗口•利用事件监听器接口创建窗口•利用事件适配器类创建窗口–采用内部类设计–采用匿名类设计创建窗口一277278
import java.awt.*;import java.awt.event.*;import java.awt.*;import java.awt.event.*;创建窗口二class W2 extends Frame {W2(){super(”Window2“);setSize(350,200);setVisible(true);addWindowListener(newWin());}public static void main(Stringargs[]){new W2();}}创public class W3 {public static void main(Stringargs[]){Frame f=new Frame(”Window3“);建f.setSize(350,200);窗f.setVisible(true);f.addWindowListener(newWindowAdapter(){public void windowClosing(WindowEvente){口System.exit(0);三}});}}280class Win extends WindowAdapter{public void windowClosing(WindowEvente){System.exit(0);}}279
/ 50
Label 标签类•用于在屏幕上输出一行文本或提示信息•构造方法public Label();public Label(Stringstr);public Label(Stringstr,intalignment);对齐方式:Label.LEFTLabel.CENTERLabel.RIGHTButton 按钮类•用于触发特定动作•构造方法:public Button();public Button(Stringlabel);•方法:public String getLabel();public void setLabel(Stringlabel);•常用方法public String getText();public void setText(Stringstr);281public void setAlignment(intalignment);282
TextField文本框类•一个单行文本框,接收键盘输入的信息•构造方法:public TextField();public TextField(intcolumns);public TextField(Strings);public TextField(Strings,intcolumns);•方法:public void setEchochar(charc);public void setEditable(booleanb);283Checkbox复选框类•常用方法–getState()方法返回复选框选中状态,选中为true,否则为false–setState()方法设置复选框选中状态•事件响应–当用户点击复选框使其选中状态发生变化时就会引发ItemEvent类的选择事件284
Graphics类Graphics类是AWT的一个子类,包含图形方法,用于绘制图形和进行简单的图像处理,并可以设计动画•画直线在点(x1, y1)和点(x2, y2)之间画直线void drawLine(intx1,int y1,int x2,int y2);Graphics类•画矩形void drawRect(intx,inty,intwidth,intheight);void fillRect(intx,inty,intwidth,intheight);以当前颜色绘制实心矩形void drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);绘制圆角矩形285286
Graphics类Graphics类提供了在屏幕的指定位置上绘制字符串、字符和字节的方法public void drawString(Stringstring,intx,inty)public void drawChars(charchars[ ],intoffset,intnumber,intx,inty)public void drawBytes(bytebytes[ ],intoffset,intnumber,intx,inty)1.坐标点(x,y)与要绘制的字符串string、字符数组chars[ ]和字节数组bytes[ ]的坐下角相对应2.参数offset是数组的起始下标3.参数number是要绘制的元素个数287Font 类Font类设置所要显示文字的字体、大小和位置构造方法:Font(String name,intstyle,intsize)•字符名称name指字体•字符风格style是指字的外观:正常字体Font.PLAIN、黑体Font.BOLD、斜体Font.ITALIC•字体大小size以点(point)来衡量,1point为1/72英寸•使用Graphics类的方法void setFont(Fontfont)设置字体288
/ 50
Color 类•Color类将颜色按照RGB标准格式进行封装,该格式中红、绿、蓝三原色的取值范围都是0~255•构造方法public Color(intr, intg, intb)public Color(intr, intg, intb, inta)a为透明度参数对话框(Dialog)•构造方法:public Dialog(Dialogowner)public Dialog(Dialogowner,Stringtitle)public Dialog(Dialogowner,Stringtitle,booleanmodal)public Dialog(Frameowner)public Dialog(Frameowner,booleanmodal)public Dialog(Frameowner,Stringtitle)public Dialog(Frameowner,Stringtitle,booleanmodal)例如:Button b = new Button(”Test“);Color c = new Color(200, 170, 90);Color d = new Color(200, 170, 90, 120);b.setBackground(c)289owner对话框的所有者;title对话框的标题;modal模式选择,默认为true模式对话框,即打开后必须做出相应的对话框290
文件对话框(FileDialog)构造方法:public FileDialog(FrameParent)创建菜单1.首先创建一个对象,并将其置于一个可容纳菜单的容器中2.创建一个或多个们添加到先前创建的对象,并将它对象中public FileDialog(FrameParent,Stringtitle)public FileDialog(FrameParent,Stringtitle,intmode)3.创建一个或多个对象或对象,再将其加入到各对象中291292
import java.awt.*;public class Menu3{public static void main(String[] args){Frame f = new Frame(”Menu“);MenuBarmb= new MenuBar();f.setMenuBar(mb);Menu m1 = new Menu(”File“);Menu m2 = new Menu(”Edit“);Menu m3 = new Menu(”Help“);mb.add(m1);mb.add(m2);mb.setHelpMenu(m3);Menu m4 = new Menu(”Format“);MenuItemmi1 = new MenuItem(”New“);MenuItemmi2 = new MenuItem(”Save“,new MenuShortcut('s'));MenuItemmi3 = new MenuItem(”Load“);CheckboxMenuItemmi4 = new CheckboxMenuItem(”Show“);MenuItemmi5 = new MenuItem(”Quit“);m1.add(m4);m1.add(mi1);m1.add(mi2);m1.add(mi3);m1.add(mi4);m1.addSeparator();m1.add(mi5);MenuItemmi41 = new MenuItem(”FormatA“);MenuItemmi42 = new MenuItem(”FormatB“);m4.add(mi41);m4.add(mi42);f.setSize(220,240);f.setVisible(true);293}}Applet类•Applet类存于包中,是的子类•Applet是使用Java语言编写的一段代码,是在中运行的,必须创建一个文件,通过编写语言代码告诉浏览器载入何种Applet以及如何运行294
Applet类继承关系java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.applet.Applet295Applet工作原理•编译好的文件保存在特定的文件的URL,可以通过方法获得play(getDocumentBase(), ”spacemusic.au“);308
在Applet中播放声音(AudioClip)AudioClip中的方法–play()–loop()–stop()AudioClip声音对象例如:public AudioClipgetAudioClip(URLurl)public AudioClipgetAudioClip(URLurl, String name)AudioClipsound;sound= getAudioClip(getDocumentBase(),”gong.au“);309Applet与URLjava.包中定义了一个URL类,用于描述网络上某一资源的地址。Applet有两个方法可以返回URL对象1.getDocumentBase()2.getCodeBase()310
流的概念第9讲Java网络程序设计及相关技术流式输入输出与文件处理流是指在计算机的输入与输出之间运动的数据的序列−输入流:代表从外设流入计算机的数据序列,只能从流中读取数据,而不能向其写出数据−输出流:代表从计算机流向外设的数据序列,只能从流中写入数据,而不能从中读取数据312311
/ 50
输入输出流类包中定义了多个流类型(类或抽象类)来实现输入/输出功能类FileOutputStreamInputStreamWriterReaderRandomAccessFile字符流和字节流按处理数据的单位划分,Java支持两种基本的流类型: 字符流和字节流字节流InputStreamOutputStream字符流ReaderWriter说明该类对象表示通向一个用于输入或者输出的文件路径,或者通向一个目录的路径字节流式输出操作的基础类字节流式输入操作的基础类字符流式输出操作的基础类字符流式输入操作的基础类对随机访问文件提供支持的类313输入流输出流314
InputStream类InputStream类是抽象类java.lang.Objectjava.io.InputStreamjava.io.FileInputStreamjava.io.PipedInputStreamjava.io.ObjectInputStreamjava.io.SequenceInputStreamjava.io.ByteArrayInputStreamjava.io.StringBufferInputStreamjava.io.FilterInputStream315InputStream类read方法•abstract intread()•intread(byte[] b)•intread(byte[] b, intoff, intlen)316
InputStream类read()方法是方法,为了让继承InputStream类的子类可以针对不同的外部设备定义不同的read()方法Java规定read()方法必须配合处理机制来使用,所以使用read()方法时,必须加入来执行例外处理,或利用来执行错误控制317InputStream类•public long skip(longn)•public void mark(intreadlimit)•public void reset()•public void close()318
OutputStream类OutputStream类是抽象类java.lang.Objectjava.io.OutputStreamjava.io.FileOutputStreamjava.io.PipedOutputStreamjava.io.ByteArrayOutputStreamjava.io.FilterOutputStreamjava.io.ObjectOutputStream319OutputStream类write方法•abstract void write(intb)•void write(byte[] b)•void write(byte[] b, intoff, intlen)320
/ 50
Reader类ReaderBufferReaderCharArrayReaderFilterReaderInputStreamReaderStringReader321Reader类read方法•intread()•intread(char[] cbuf)•abstract intread(char[] cbuf, intoff, intlen)322
Reader类•void close()•booleanready()•long skip(longn)•void mark(intreadAheadLimit)•void reset()323Writer类WriterBufferWriterCharArrayWriterFilterWriterOutputStreamWriterPrintWriterPipedWriterStringWriter324
Writer类Writer类•当数据传送到流的时候Unicode字符会被自动转换成本地计算机使用的编码•字符输出流用于向一个文件中写入文本内容,或者把数据的字符串表示形式写入文件325write方法–void write(intc)–void write(char[] cArray)–abstract void write(char[] cArray,intoff, intlen)–void write(Stringstr)–void write(Stringstr, intoff, intlen)326
节点流和处理流•节点流数据输入输出流•实现在数据源和程序之间加入数据过滤处理,将原始数据加入了数据类型处理功能•数据输入输出流DataInputStream和DataOutputStream分别是过滤输入输出流FilterInputStream和FilterOutputStream的子类•数据输入输出流DataInputStream和DataOutputStream分别实现了DataInput和DataOutput的接口,允许对不同数据类型进行读写操作327328•处理流
/ 50
DataInputStream类DataInputStream方法−−−−−−−−−byte readByte()booleanreadBoolean()long readLong()char readChar()double readDouble()float readFloat()short readshort()intreadInt()String readLine()329DataOutputStream类DataOutputStream方法−void writeByte(byte)−void writeBoolean(boolean)−void writeLong(long)−void writeChar(char)−void writeDouble(double)−void writeFloat(float)−void writeshort(short)−void writeInt(int)−void writeBytes(String)−void writeChars(String)330
缓冲输入输出流流式输入与输出方法在一个操作中一般只允许把很少量的数据如一个字符或者字节写入或者读出。这样传送数据效率低。若一个流配有一个缓冲区,则称为缓冲流。一个缓冲区就是专门用于把发送到一个外部设备或者从一个外部设备读出的数据集合起来的一块内存可以使用BufferedInputStream类和BufferedOutputStream类为输入输出流添加一个缓冲区331将文件内容读入一个带缓冲的流的步骤1.用要写入的文件名和路径生成一个File类型的对象2.用该File类型的对象作为FileInputStream类的一个实参生成与特定物理文件相对应的输入节点流对象3.将这个流对象传递给BufferedInputStream类对象,使其带有缓冲区4.将BufferedInputStream类对象传递给用来读入数据的流对象DataInputStream对象332
将一个带缓冲的流写入一个文件的步骤1.用要写入的文件名和路径生成一个File类型的对象2.用该File类型的对象作为FileOutputStream类的一个实参生成与特定物理文件相对应的节点流对象3.将这个流对象传递给BufferedOutputStream类对象,使其带有缓冲区4.将BufferedOutputStream类对象传递给用来写入数据的流对象DataOutputStream对象333import java.io.*;public class NodeStreamTest{public static void main(String[] args){try {FileReaderinput = new FileReader(args[0]);FileWriteroutput = new FileWriter(args[1]);char[] buffer = new char[128];intcharsRead;charsRead= input.read(buffer);while(charsRead!=-1){output.write(buffer, 0, charsRead);charsRead= input.read(buffer);}input.close();output.close();} catch(IOExceptione){System.out.println(e);}}}334
import java.io.*;public class BufferedStreamTest{public static void main(String[] args){try {FileReaderinput = new FileReader(args[0]);BufferedReaderbufInput= new BufferedReader(input);FileWriteroutput = new FileWriter(args[1]);BufferedWriterbufOutput= new BufferedWriter(output);String line = bufInput.readLine();while(line!= null){bufOutput.write(line, 0, line.length());bufOutput.newLine();line = bufInput.readLine();}bufInput.close();bufOutput.close();} catch(IOExceptione){ ……}}}335文件(File)•File 对象表示的是通向硬盘上的一个实际文件或者目录的路径,而不是一个流。可以生成表示通向相关文件或者目录的路径的对象•Java.io.File文件类提供获取文件基本信息,以及其它与文件相关的操作336
/ 50
方法说明文件(File)•new File(Stringstr)•new File(Filef ,String str)•new File(Stringstr1,String str2)例如:File myFile=new File(”F:/java/myFile1.java“);File myDir=new File(”F:/java“);File myDir=new File(”F:/java“);File myFile=new File(myDir,”myFile1.java“);File myFile=new File(”F:/java“ ,”myFile1.java“);337getName()返回一个String对象,包含该文件名,没有路径;对于表示一个目录的File对象,则指返回目录名getPath()list()返回一个包含File对象路径的String对象,其中包含文件名或路径名如果当前File对象表示一个目录,返回一个包含该目录成员名字的String数组;如果当前File对象是一个文件,返回null如果当前对象表示一个目录,返回File对象数组,对应该目录中的文件和目录;如果当前对象不是一个目录或出现I/O错误,返回null返回一个long类型值,指出当前File对象所表示的文件的字节长度;如果当前对象是一个目录,则返回0返回当前File对象的一个String表示,当一个File对象与一个String对象进行连接操作时,将自动被调用338listFiles()length()toString()
•构造方法:随机存取文件类(RandomAccessFile)•要想随机访问一个文件必须使用RandomAccessFile类•随机访问文件不是一个流,因此不能缓冲存储•RandomAccessFile类定义了所有读操作都通过DataInput提供,在DataOutput中定义了所有写操作,即实现了与这两个接口3391.RandomAccessFile(Filefile, Stringmode)2.RandomAccessFile(Stringname, Stringmode)访问模式(mode):r:文件必须事先存在,只对文件进行读取rw:先写文件后读文件,如文件不存在则建立常用方法•••longgetFilePointer();void seek(long pos);long length();340
import java.io.*;public class RandomAccessFileExample{public static void main(Stringarg[]){try{RandomAccessFileraf= newRandomAccessFile(”testRand.txt“,”rw“);for(inti=0;i<10;i++)raf.writeDouble(i*1.1);raf.close();raf=new RandomAccessFile(”testRand.txt“,”rw“);raf.seek(6*8);raf.writeDouble(55.50);raf.close();raf=new RandomAccessFile(”testRand.txt“,”r“);for(inti=0;i<10;i++)System.out.println(i+”:“+raf.readDouble());raf.close();}catch(FileNotFoundExceptione){System.out.println(e);}catch(IOExceptione){System.out.println(e);}341}}流类CharArrayReaderCharArrayWriterByteArrayInputStreamMemoryByteArrayOutputStreamStringReaderStringWriterStringBufferInputStreamPipedReaderPipedWriterPipePipedInputStreamPipedOutputStreamFileReaderFileWriterFileFileInputStreamFileOutputStreamI/O功能从/向内存数组读写数据从/向内存字符串读写数据实现管道的输入和输出统称为文件流。对文件进行读、写操作342
I/OObjectSerializationDataConversionPrinting流类ObjectInputStreamObjectOutputStreamDataInputStreamDataOutputStreamPrintWriterPrintStreamBufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream功能对象的输入、输出读、写基本数据类型包含方便的打印方法在读入或写出时,对数据进行缓存,以减少I/O的次数。343344程序•程序是一段静态的代码,它是应用软件执行的蓝本Buffering
/ 50
进程•进程是程序的,它对应了从代码、执行到执行完毕的一个完整过程,这个过程也是进程本身从的过程•作为执行蓝本的同一段程序,可以被多次加载到系统的内存区域分别执行,形成不同的进程345线程•线程是•线程是比进程•一个生多个的顺序控制流的执行单位程在其执行过程中,可以产程,形成多条执行线索•每个线程有它自身的产生、存在和消亡的过程346
•每个进程都有程切换的开销的代码和数据空间,进。Java主线程每个Java程序都有一个缺省的主线程•Application的主线程是main()方法执行的线索•Applet的主线程是指浏览器加载并执行Java小程序348•同一类线程代码和数据空间,每个线程有的运行栈和程序计数器(PC),线程切换的开销。•多进程•多线程347
Java线程•要想实现多线程,必须在主线程中创建新的线程对象•Java的线程是通过的类来实现的包中创建阻塞解除调度就绪状态运行状态线程状态与生命周期阻塞状态导致阻塞的事件终止•将一个虚拟的CPU,封装在Thread类,每个线程的代码通过Thread类和虚拟的CPU打交道,而Java虚拟机占用一个程,同时运行许多虚拟的CPU,多个虚拟的CPU间的协调不需要人为编码349350
1.创建状态(new)•创建一个新的线程•新线程处于创建状态,具有相应的内存空间和其他资源,但是没有真正执行它,因此系统并不为此线程分配CPU资源3512.可运行状态(Runnable)•创建线程之后,如要执行,则需对线程进行登记,并为它分配CPU系统资源,这些工作通过start()方法来完成•此时线程不一定正在运行,是否运行由Java的运行系统来协调决定。各种不同操作系统协调这些线程的方式是不同的352
/ 50
3.阻塞状态(Blocked)就是一个线程因为人为或系统原因必须让出CPU并暂时停止运行,以后还可以恢复运行的状态4.终止状态(Dead)自然终止:正常运行完成了run()方法的全部工作后终止异常终止:线程被提前强制性终止,如调用了一个stop()方法等353354
线程调动与优先级Java线程•每个线程都是通过某个特定Thread 对象所对应的方法run()来完成其操作的,方法run()称为线程体•Java多线程系统会给每个线程自动分配一个线程的优先级,任务较紧急重要的线程,其优先级就较高•在线程排队时,优先级高的线程可以排在较前的位置,能优先享用处理器资源;而优先级较低的线程则只能等前面高优先级线程执行完毕后才能获得处理器资源355356
线程的优先级•线程的优先级用数字来表示,范围从1到10,一个线程的缺省优先级是5 Thread.MIN_PRIORITY= 1Thread.MAX_PRIORITY= 10Thread.NORM_PRIORITY= 5线程的调度•Java提供一个线程调度器来监控程序启动后进入就绪状态的所有线程•线程调度器按照线程的优先级决定应调度哪些线程来执行357358•获得或设置线程对象的优先级intgetPriority();void setPriority(intnewPriority);
创建线程:继承Thread类实现多线程Java实现多线程的两种途径–创建Thread线程类的子类–在用户自定义类中实现Runnable接口359•通过继承java.lang包中的Thread类来创建自己的线程对象,该继承类重写Thread类中的run()方法•Thread类的构造方法public Thread()public Thread(Runnabletarget)public Thread(Stringname)public Thread(ThreadGroupgroup, Runnabletarget);public Thread(ThreadGroupgroup, String name);360
/ 50
public class MyThreadextends Thread {inti;public void run(){i = 1;while(true){System.out.println(”MyThread: “ + i++);if(i == 50)break;}}public static void main(Stringargs[]){Thread t = new MyThread();t.start();inti = 1;while(true){System.out.println(”MainThread: “ + i++);if(i == 50)break;}}}361创建线程:实现Runnable接口通过创建Runnable接口的实现类对象作为一个线程的目标对象,这种方法用Runnable目标对象初始化Thread类,由目标对象来提供run()方法362
public class TestThread{public static void main(Stringargs[]){inti=1;MyRunnermr= new MyRunner();Thread t = new Thread(mr);t.start();while(true){System.out.println(”MainThread: “ + i++);if(i == 50)break;}}}class MyRunnerimplements Runnable{inti;public void run(){i = 1;while(true){System.out.println(”MyThread: “ + i++);if(i == 50)break;}}}两种创建线程方法的比较直接继承Thread类–不能再从其他类继承–编写简单,可以直接操纵线程实现Runnable接口–可以将CPU、代码和数据分开,形成清晰模型–还可以从其他类继承–保持程序风格的一致性363364
•start()方法:启动线程对象,启动线程是使线程进入到就绪(可运行)状态,并不一定立即开始执行该线程•sleep()方法:线程暂时休眠,让出处理器资源•stop()方法:强制终止某线程的生命周期365方法isAlive()getPriority()setPriority()Thread.sleep()wait()notify()/notifyAll()功能判断线程是否还―活‖着,即线程是否还未终止获得线程的优先级数值设置线程的优先级数值将当前线程暂时休眠可指定时间当前线程进入对象的wait pool唤醒对象的wait pool中的一个/所有等待线程366
多线程间的协调与配合•线程同步•线程死锁class Stack{inti = 0;char[ ] data = new char [10];public void push(char c){data[i] = c;i ++;}public char pop(){i--;return data[i];}}367368
/ 50
线程同步•避免多个线程对同一资源的访问•引入管程(类似于进程信号量)•每个被同步资源都对应一个管程,首先占用这个资源的线程同时拥有了该资源的管程,在它完成操作释放管程前,其他欲访问同一资源的线程只能等候管程,从而实现了线程对资源的独占369互斥锁•每个对象都对应于一个可称为―互斥锁‖的标记(即系统在运行时分配给该对象一个管程),并保证在任一时刻,只能有一个线程访问该对象,可保证共享数据操作的完整性•关键字synchronized来与对象的互斥锁联系•当某个对象用synchronized修饰时,表明该对象在任一时刻只能由一个线程访问370
class Stack{inti = 0;char[ ] data = new char [10];public void push(char c){synchronized(this){data[i] = c;i++;}}public char pop(){synchronized(this){i--;return data[i];}}}}371同步•synchronized 除了象上面放在对象前面限制一段代码的执行外,还可以放在方法声明中,表示整个方法为同步方法public synchronized void push(charc){ …}•如果synchronized用在类声明中,则表明该类中所有方法都是同步方法public synchronized class Stack{ …}372
死锁•在多线程竞争使用多资源的程序中,如果A线程正等待B线程所占用的资源(具有的互斥锁、管程),而B线程也在等待A线程占用的资源•此时哪个线程都不能继续运行,而哪个线程都无法运行完成同步程序块373线程交互•java.lang.Object类中定义了wait()、notify()和notifyAll()三个方法•wait()方法使当前正在执行的线程暂时挂起,进入阻塞状态,放弃当前占用的管程,在管程队列中等待•notify()方法从管程队列中选择优先级最高的一个被挂起的线程,唤醒它,使其占用该管程及相关资源374
class SyncStack{ private intindex = 0;private char []data = new char[10];public synchronized void push(charc){while(index== data.length){try{this.wait();} catch(InterruptedExceptione){ }}this.notify();data[index] = c;index++;}public synchronized char pop(){while(index==0){try{ this.wait();} catch(InterruptedExceptione){ }}this.notify();index--;return data[index];375}}传输控制协议TCP•TCP是一个基于连接的协议,可在两台相连计算机之间提供可靠的数据流•HTTP、FTP、Telnet都是基于点对点通信的TCP协议377 47 / 50
网络连接•当程序需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序则对其发出连接请求•两个程序连接前必须达成一致,即由Client端负责初始化连接,而Server端随时等候请求378网络连接•当程序建立网络连接时,需要知道IP地址或主机名(由32bit点分十进制数表示),还需要一个端口号(由16bit十进制数表示)•连接到正确主机后,需要通过端口号确认连接该端口所对应数据•只有Client端和Server端指定连接地址一致时连接才会建立379
Socket•两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个socket(套接字)•socket(套接字)通常用来实现Client/ Server连接Socket•java.net包中定义的两个socket类Socket和ServerSocket,分别用来实现双向连接的Client和Server端•建立连接时所需的寻址信息–远程计算机的计算机名或IP地址–试图连接的端口号381380
Socket通信模型服务器ServerSocket(port#)ServerSocket.accept()利用socket和服务器交互•双向通信要在服务器端和客户机端分别编程并分别运行•服务器端首先要建立一个ServerSocket,以指定端口号并监听客户机的请求,还要建立一个Socket用来和客户机通信•客户机端要建立套接到同一个端口的Socket以便和服务器通信382383客户机Socket(host,port#)Socket()OutputStreamInputStreamSocket.close()OutputStreamInputStreamSocket.close()
网络编程的基本步骤1.创建socket2.将特定的输入/输出流连接到打开的socket3.按照一定的协议对socket进行读/写操作4.关闭socket384ServerSocket构造方法ServerSocket(intport)ServerSocket(intport, intcount)•port 指连接端口号•count 指服务器所能支持的最大连接数385
/ 50
Socket类的构造方法Socket(InetAddressaddress, intport)Socket(InetAddressaddress, intport, booleanstream)Socket(Stringhost, intport)Socket(Stringhost, intport, booleanstream)客户端Socket的建立Socket socket;try{socket = new Socket(”127.0.0.1“,2000);}catch(IOExceptione){//…}386387
InetAddress类•用来区分计算机网络中的不同计算机并对其寻址•常用方法–getHostName()–getLocalHost()服务器端Socket的建立ServerSocketserver = null;try {server=new ServerSocket(2000);}catch(IOExceptione){ //…}Socket socket=null;try {socket=server.accept();}catch(IOExceptione){ //…}388389
打开输入/输出流PrintStreamos;os= new PrintStream(new BufferedOutputStream(socket.getOutputStream()));DataInputStreamis=new DataInputStream(socket.getInputStream());关闭Socketos.close();is.close();socket.close();390391
URL•URL统一资源定位器,表示Internet上某一资源的地址•URL组成包括:协议名:资源名•URL举例http://392URL类构造方法•public URL(Stringspec)URL u1 = new URL(”http://online.btvu.org/“);•public URL(URL context, String spec)URL u2 = new URL(u1, ”index.html“);•public URL(Stringprotocol, String host, String file)URL u3 = new URL(”http“, ”online.btvu.org“, ”index.html“);•public URL(String protocol, String host, intport, String file)URL u4 = new URL(”http“, ” online.btvu.org“, 80,”index.html");393 49 / 50
第五篇:团干部培训自学手册学习心得
在团干部培训期间,我非常认真地研读了《团干部培训自学手册》。知道了中国共产主义青年团与中国共产党之间的关系,作为团员的基本要求。团员应该履行的义务,团员的权利,团的组织制度,团的中央组织,团的干部,团旗,团徽的意义等等。
我学习到,中国共产主义青年团是中国共产党领导的先进青年的群众组织,是广大青年在实践中学习中国特色社会主义和共产主义的学校,是中国共产党的助手和后备军。中国共产主义青年团坚决拥护中国共产党的纲领,以马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想为行动指南,深入贯彻落实科学发展观,解放思想,实事求是,与时俱进,团结全国各族青年,为把我国建设成为富强民主文明和谐的社会主义现代化国家,为最终实现共产主义而奋斗。中国共产主义青年团在中国共产党领导下发展壮大,始终站在革命斗争的前列,有着光荣的历史。在建立新中国,确立和巩固社会主义制度,发展社会主义的经济、政治、文化的进程中发挥了生力军和突击队作用,为党培养、输送了大批新生力量和工作骨干。党的十一届三中全会以来,共青团根据党的工作重心的转移,紧密围绕改革开放和经济建设开展工作,为推进社会主义现代化建设事业作出了重要贡献,促进了青年一代的健康成长。中国共产主义青年团在现阶段的基本任务是:高举中国特色社会主义伟大旗帜,坚定不移地贯彻党在社会主义初级阶段的基本路线,以经济建设为中心,坚持四项基本原则,坚持改革开放,用社会主义核心价值体系教育青年,在建设中国特色社会主义的伟大实践中,造就有理想、有道德、有文化、有纪律的接班人,不断巩固和扩大党执政的青年群众基础,努力为党输送新鲜血液,为国家培养青年建设人才,团结带领广大青年,自力更生,艰苦创业,积极推动社会主义经济建设、政治建设、文化建设、社会建设,为全面建设小康社会、加快推进社会主义现代化贡献智慧和力量。中国共产主义青年团加强思想政治工作,坚持对青年的教育和引导,组织青年学习马克思列宁主义、毛泽东思想、邓小平理论和“三个代表”重要思想,学习科学发展观,广泛开展党的基本路线教育,爱国主义、集体主义和社会主义思想教育,社会主义道德教育,近代史、现代史教育和国情教育,民主和法制教育,增强青年的民族自尊、自信和自强精神,树立正确的理想、信念和世界观、人生观、价值观。对团员还必须进行中国特色社会主义共同理想和共产主义远大理想教育。努力帮助青年学习现代科学文化知识,吸收和借鉴人类社会创造的一切文明成果,抵御资本主义和封建主义腐朽思想的侵蚀,不断提高青年的思想道德素质和科学文化素质。中国共产主义青年团带领青年在经济建设中发挥生力军和突击队作用,充分调动和发挥青年的积极性和创造性,组织青年参加改革开放和完善社会主义市场经济体制的实践,促进科教兴国战略、人才强国战略和可持续发展战略的实施,树立科学技术是第一生产力的观念,掌握和运用先进的科学技术,学习和适应现代管理方式,诚实劳动,勇于创新,为发展社会生产力,增强综合国力,提高人民生活水平,实现我国经济发展的战略目标建功立业。中国共产主义青年团充分发挥党联系青年的桥梁和纽带作用,积极协助政府管理青年事务,在维护国家和人民利益的同时代表和维护青年的具体利益,围绕党的中心任务,开展适合青年特点的独立活动,关心青年的工作、学习和生活,切实为青年服务,向党和政府反映青年的意见和要求,开展社会监督,同各种危害青少年的现象作斗争,保护和促进青少年的健康成长。中国共产主义青年团高举爱国主义旗帜,坚决维护和发展全国各族青年之间的团结友爱,加强同香港特别行政区青年同胞、澳门特别行政区青年同胞、台湾青年同胞和海外青年侨胞的团结,按照“一国两制”的方针,共同促进香港、澳门长期繁荣稳定和祖国统一大业的完成。中国共产主义青年团在维护我国的独立和主权,坚持和平友好、独立自主、相互学习、平等合作、共同发展的基础上,积极发展同世界各国青年组织的交往和友好关系,反对霸权主义和强权政治,维护世界和平,促进人类进步。“中国共产主义青年团充分发挥党的联系青年的桥梁与纽带作用,积极协助政府管理青年事务,在维护国家和人民利益的同时代表和维护青年的具体利益。围绕党的中心任务,开展适合青年特点的独立活动,关心青年的工作、学习和生活,切实为青年服务,向党和政府反映青年的意见和要求,开展社会监督,同各种危害青少年的现象作斗争,保护和促进青少年的健康成长。”我想这应该对是团员的要求吧。中国共产主义青年团要完成现阶段的基本义务,必须不断加强团的建设。要发扬优良传统和作风,生动活泼,富于创造性地开展工作,把青年团建设成为团结教育的坚强核心。这是把青年团建设成为团结教育的坚强核心的前提。
其实,虽然说在入团以前参加过团校的学习,但是,我认为自己对于团组织的了解还是很少,对于团员的基本要求,团员的权利、义务都不清楚。如今虽胸前带着团徽,光荣的成为了共青团员,但是,对于团的一些基本知识仍然很模糊。1922年5月5日,中国社会主义青年团第一次全国代表大会在广州召开,所以共青团组织也已经有83年的历史了,在这一段很长的时间内,涌现出了许多优秀的人才,我想:我们应该要朝他们看齐。虽然我们可能做的没有他们做的那么的出色,但是,我们也应该要尽自己的所能去做到最好。
在过去的一段时间里,不清楚团员的义务与权利,不了解团的性质,所以基本与普通的队员差不多,没有联系学生与老师,也不曾有身为共青团员的意识与责任感,在今天认真地阅读了《团章》以后,我们不仅应该要认真的学习理论知识,还应该要将其化为行动。在以后的工作中,我会时时提醒自己,要以身作则,做到每件事都要得到大家的许可和信任,要以一颗无私的心为同学与老师服务。