




已阅读5页,还剩109页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java科园-颜诗超,自我介绍,架构师、产品经理东软、Tieto、平安科技现在创业中(小豹科技),课程整体内容,1.基础java(面向对象、语法、java基础类库、内存管理)2课时2.高级java(多线程、socket、NIO、编程规范)2课时3.javaWEB开发(servlet、spring、springmvc、mybatis、事务、quartz、前后端验证、poi、maven、jenkins等)6课时4.java调优与问题诊断(调试、问题定位、性能调优)2课时5.centos和tomcat服务器与高可用等(javaweb应用的部署环境centos、tomcat等服务器及高可用环境haproxy、keepalived的使用)2课时6.基于java的架构设计(针对示例项目的架构设计-基于功能性需求、非功能需求做出适合此项目的架构设计)2课时,语言基础面向对象基础类库java的内存管理,1语言基础,1语言基础,本章是讲述java语言的基础语法。课程内容:1.1Java语言入门1.2标识符、关键字和数据类型1.3运算符,表达式和语句1.4数组1.5方法的封装,1.1.1Java特点,简单面向对象与平台无关健壮性(Java的强类型机制、异常处理、内存的自动收集等),1.1.2Java程序开发基本过程,Java编程基础Java的基本语法格式:所有的java程序都应该写在类中class类的修饰符:public和默认修饰符,publicclassMyFirstJavaApppublicstaticvoidmain(Stringargs)System.out.println(“ThisisMyFirstJavaApplication!”);,1.1.3Java程序开发基本过程,编译Java程序JavacMyFirstJavaApp.java运行Java程序JavaMyFirstJavaApp,1.1.4Java程序开发基本过程,Java注释单行注释/多行注释/*/文档注释/*/,1.1.5开发工具,EclipseIntellijIDEA,1.2标识符、关键字和数据类型,1.2.1标识符1.2.2关键字1.2.3数据类型1.2.4常量1.2.5变量1.2.6类型转换,1.2.1标识符,标识符命名规则定义:Java对各种变量,方法和类等要素命名时使用的字符序列称为标识符规则:标识符应以字母,下划线,美元符号开头标识符应以字母,下划线,美元符号或数字组成标识符对大小写敏感,长度无限止合法的标识符:Indentifier、username、user_name、_userName、$username非法的标识符:class、98.3、HelloWorld,1.2.2关键字,注:java无sizeof,goto,const关键字,但不能用gotoconst作为变量名,1.2.3数据类型,1.2.4常量,常量:就是持续不变的值常量类型:整型常量:十进制(12),十六进制(0 x12),八进制(012)长整型常量:13L浮点数常量:(1)单精度浮点数5.1f,.4f,2e3f,0f(2)双精度浮点数5.1,.4,2e-3,0d布尔常量:true和false,1.2.4常量,字符常量:a,8,u0027r表示接受键盘输入,相当于按下了回车键;n是换行;t是制表符,相当于table键;b是退格键,相当于BackSpace;是单引号,而“是双引号;是一个斜杠“”。字符串常量:“HelloWorld“,”123”,WelcomenXXX“null常量:null常量只有一个值,用null表示,表示对象的引用为空,1.2.5变量,变量概念变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。先声明,再使用变量的元素变量名,变量值,变量的作用范围变量定义intx=0,y;y=x+3;x和y就是变量,1.2.5变量,变量字节大小及有效取值范围byte占用一个字节,数字大小为-2727-1short占用两个字节,数字大小为-215215-1int占用四个字节,数字大小为-231231-1long占用八个字节,数字大小为-263263-1float占用四个字节,数字大小为1.4E-453.4E+38,-1.4E-45-3.4E+38。用二进制的指数形式表示一个浮点数的格式,如:101*22,101*2-3double占用八个字节,数字大小为4.9E-3241.7E+308,-4.9E-324-1.7E+308。char占两个字节,数字大小为0216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。Boolean占一个字节,有两种取值,true和false。,1.2.5变量,变量作用域变量要先定义,后使用,但不是在变量定义后的语句中一直都能使用前面定义的变量。比如:可以用大括号将多个语句包起来形成一个复合语句,则复合语句中定义的变量只能在定义它的复合语句中使用。局部变量在方法或方法中的代码块中定义的变量称为局部变量成员变量在方法外,在类内部定义的变量,1.2.5变量,局部变量的定义在方法或方法中的代码块中定义的变量称为局部变量,局部变量在方法或代码块被执行时创建,在方法或代码块结束时被销毁。局部变量的初始化局部变量在进行取值操作前必须被初始化,否则会出现编译错误,1.2.6类型转换,自动类型转换(也叫隐式类型转换)byteb=3;intx=b;/b被自动转换为int型强制类型转换(也叫显式类型转换)bytea;intb;a=(byte)b;/b被强制转换为byte型,1.3运算符,表达式和语句,1.3.1运算符1.3.2表达式1.3.3控制语句,1.3.1运算符,何为运算符运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。运算符类型算术运算符赋值运算符比较运算符逻辑运算符位运算符移位运算符,1.3.1运算符,1.3.1运算符,算术运算符的注意问题“+”除字符串相加功能外,还能把非字符串转换成字符串,如:“x”+123;的结果是“x123”。如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。intx=3510;x=x/1000*1000;实际运行结果是3000,想想为什么?,1.3.1运算符,赋值运算符,1.3.1运算符,赋值运算符注意:注1:在JAVA里可以把赋值语句连在一起,如:x=y=z=5;在这个语句中,所有三个变量都得到同样的值5。注2:x+=3等效于x=x+3,等于*=,-=,/=依此类推。,1.3.1运算符,比较运算符,1.3.1运算符,比较运算符注意:注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。注2:比较运算符“=”不能误写成“=”,1.3.1运算符,逻辑运算符,1.3.1运算符,逻辑运算符注意点注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型。注2:“case常量2:语句break;default:语句break;,1.3.3控制语句,switch选择语句:switch(x)/x只能为int、byte、char、shortcase1:System.out.println(“Monday”);break;case2:System.out.println(“Tuesday”);break;case3:System.out.println(“Wednesday”);break;default:System.out.println(“Idontknow”);思考:无break的情况,1.3.3控制语句,for循环语句for(初始化表达式;布尔值测试表达式;更改表达式)语句或语句块;例:for(inti=0;i=0)size=newSize;publicintgetSize()returnsize;,Spot对象实例,privateSpotspot=null;.spot=newSpot();spot.setSite(1);,示例中的继承和接口,publicclassClickMeextendsJComponentimplementsMouseListener.,publicclassClickMeextendsJComponentimplementsMouseListener./MethodsrequiredbytheMouseListenerinterface.publicvoidmousePressed(MouseEventevent)if(spot=null)spot=newSpot();spot.setSize(RADIUS);spot.x=event.getX();spot.y=event.getY();repaint();publicvoidmouseClicked(MouseEventevent)publicvoidmouseReleased(MouseEventevent)publicvoidmouseEntered(MouseEventevent)publicvoidmouseExited(MouseEventevent),多态,TestPolymoph/Test.java多态是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。上面例子中,根据Lady对象的成员变量Pet所引用的不同的实际类型而调用相应的enjoy方法。,classBirdextendsAnimalprivateStringfeatherColor;Bird(Stringn,Stringf)super(n);this.featherColor=f;publicvoidenjoy()System.out.println(鸟叫声.);publicclassTestpublicstaticvoidmain(Stringargs)Birdb=newBird(“birdname”,”green”);Ladyl3=newLady(l3,b);l3.myPetEnjoy();,1.要有继承2.要有重写3.父类引用指向子类对象,3重点类库,为什么java很流行?丰富的类库是很重要的因素。,java常用的包介绍,java.langjava的核心类基本类,如:String,Integer,System,Runtime等。java.io输入输出的类网络连接相关的类java.niojdk1.4后出现的新的io包,更高的效率。java.util一些工具类,如数据结构相关的类。java.lang.reflect反射相关的类。java.security安全相关的类。更多请参考jdk文档。,字符和字符串,JavaAPI提供了四个处理字符数据的类:Character:这个类的实例可以容纳单一的字符数值。该类还定义了一些简洁的方法来操作或者检查单一字符数据。String:这个类用于处理由多个字符组成的不可变数据。StringBuffer:这个类用于存储和操作由多个字符组成的可变数据。线程安全。StringBuilder非线程安全的StringBuffer,效率更高,异常类,在Java中,将异常情况分为Exception(异常)和Error(错误)两大类。Error类对象由Java虚拟机生成并抛出;Exception类对象由应用程序处理或抛出。,异常类的继承结构,checked异常与unchecked异常,RuntimeException类及其子类被称为“运行时异常”一般发生在JRE内部也称“非必检异常”如NullPointerException其他异常被成为“非运行时异常”一般发生在JRE外部也称“必检异常”如IOException,异常处理的一般步骤,异常抛出异常捕获异常处理,try抛出异常的代码catch(某Exception类型e)处理该异常类型的代码catch(某Exception类型e)处理该异常类型的代码finally,Io包,Reader与Writer类,Reader类的相关方法:voidclose()voidmark(intreadAheadLimit)booleanmarkSupported()intread()intread(charcbuf)intread(charcbuf,intoff,intlen)booleanready()voidreset()longskip(longn)Writer类的相关方法:voidclose()voidflush()voidwrite(charcbuf)voidwrite(charcbuf,intoff,intlen)voidwrite(intc)voidwrite(Stringstr)voidwrite(Stringstr,intoff,intlen),流的使用(1),流的使用(2),流的使用(3),Serializable接口,并非所有对象都是可串行化的,如果要对某对象进行串行化,该对象的类必须实现Serializable接口Serializable接口是一个空接口,也就是说,它不包含任何方法的声明,该接口的作用只是表明这个类的对象可以被串行化,数据结构类,集合框架中的接口,Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。Map:包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。,集合框架中的实现类,SortedSet,Set,List,Map,HashSet,LinkedHashSet,TreeSet,ArrayList,LinkedList,SortedMap,HashMap,TreeMap,ArrayList,ArrayList:我们可以将其看作是能够自动增长容量的数组。,ArrayList,向ArrayList对象中添加任何对象使用size()方法打印所有对象直接输出一个ArrayList对象自定义类应该重写toString()方法以便输出时被自动调用使用toArray()方法转换为对象数组使用Arrays.asList(Objecto)返回一个列表返回的列表的大小固定,不能添加元素,可以使用set()方法修改节点的元素,否则会抛出不支持的操作异常(UnsupportedOperationException)。,ArrayList,迭代器(Iterator)给我们提供了一种通用的方式来访问集合中的元素。remove()方法是一个可选的操作,实现Iterator接口可以选择实现该方法,或做空实现并抛出不支持的操作异常(UnsupportedOperationException),类库采用这种方式避免产生太多的接口,否则会增加学习的难度。,迭代器的工作原理,返回的元素,删除的元素,next(),remove(),next(),Collections类,排序:Collections.sort()(1)自然排序(naturalordering);(2)实现比较器(Comparator)接口。取最大和最小的元素:Collections.max()、Collections.min()。在已排序的List中搜索指定的元素:Collectons.binarySearch()。,LinkedList,LinkedList是采用双向循环链表实现的。利用LinkedList实现栈(stack)、队列(queue)、双向队列(double-endedqueue)。,数据结构,一般将数据结构分为两大类:线性数据结构和非线性数据结构。线性数据结构有线性表、栈、队列、串、数组和文件;非线性数据结构有树和图。,栈,栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。栈的物理存储可以用顺序存储结构,也可以用链式存储结构。,a1,a2,an,栈底,栈顶,出栈,进栈,队列,队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。队列的操作是按先进先出(FIFO)的原则进行的。队列的物理存储可以用顺序存储结构,也可以用链式存储结构。,a1a2a3an,队头,队尾,出队,入队,ArrayList和LinkedList的比较,ArrayList底层采用数组完成,而LinkedList则是以一般的双向链表(double-linkedlist)完成,其内每个对象除了数据本身外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际商法国际贸易术语模拟试题
- 环保行业表格-
- 自然灾害频发背景下的防汛应急管理需求变化
- 生物技术成果转化合作协议
- 社会实践与实习机会的多元化发展策略
- 设备使用情况表格-设备维护保养
- 历史与文化背景下的跨文化交际题集
- 中医医院发展现状及面临的主要挑战
- 高职院校创新创业教育与专业课程融合分析
- 2025年艺术治疗师考试试题及答案详解
- 2025安全月竞赛应知应会1000题库(必答题 抢答题 风险题)
- 2025年高考语文全国一卷试题真题及答案详解(精校打印)
- 消防堵漏工具课件
- 2024年成都市八年级(初二会考)中考地理+生物真题试卷
- 福建福建省红十字基金会人员招聘笔试历年参考题库附带答案详解
- 无人机紧急应变方案试题及答案
- 2024北京海淀区四年级(下)期末数学试题及答案
- 星期音乐会智慧树知到期末考试答案章节答案2024年同济大学
- 生命哲学:爱、美与死亡智慧树知到期末考试答案2024年
- 迪恩斯改编作品《山楂树》Thorntree(UralRowanTree);RolandDyens古典吉他谱(精选)
- 武汉大学分子生物学_2007期末试卷A
评论
0/150
提交评论