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课时`1.语言基础2.面向对象3.基础类库4.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和默认修饰符publicclassMyFirstJavaApp{publicstaticvoidmain(String[]args){System.out.println(“ThisisMyFirstJavaApplication!”);}}1.1.3Java程序开发基本过程编译Java程序JavacMyFirstJavaApp.java运行Java程序JavaMyFirstJavaApp1.1.4Java程序开发基本过程Java注释单行注释//多行注释/**/文档注释/***/1.1.5开发工具EclipseIntellijIDEA1.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、HelloWorld1.2.2关键字abstractdoimplementprivatethisbooleandoubleimportprotectedthrowbreakelseinstanceofpublicthrowsbyteextendintreturntransientcasefalseinterfaceshorttruecatchfinallongstatictrycharfianllynativestrictfpvoidclassfloatnewsupervolatilecontinuefornullswitchwhiledefaultifpackagesynchronized注:java无sizeof,goto,const关键字,但不能用gotoconst作为变量名1.2.3数据类型数据类型基本数据类型引用数据类型类接口数组数值型字符型(char)布尔型(boolean)整数型(byteshortIntlong)浮点型(float,double)1.2.4常量常量:就是持续不变的值常量类型:整型常量:十进制(12),十六进制(0x12),八进制(012)长整型常量:13L浮点数常量:(1)单精度浮点数5.1f,.4f,2e3f,0f(2)双精度浮点数5.1,.4,2e-3,0d布尔常量:true和false1.2.4常量字符常量:‘a’,‘8’,'\u0027'‘\r‘表示接受键盘输入,相当于按下了回车键;‘\n‘是换行;‘\t‘是制表符,相当于table键;‘\b‘是退格键,相当于BackSpace;‘\‘‘是单引号,而‘\“‘是双引号;‘\\‘是一个斜杠“\”。字符串常量:“HelloWorld“,”123”,Welcome\nXXX“null常量:null常量只有一个值,用null表示,表示对象的引用为空1.2.5变量变量概念变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。先声明,再使用变量的元素变量名,变量值,变量的作用范围变量定义intx=0,y;y=x+3;x和y就是变量1.2.5变量变量字节大小及有效取值范围byte占用一个字节,数字大小为-27—27-1short占用两个字节,数字大小为-215—215-1int占用四个字节,数字大小为-231—231-1long占用八个字节,数字大小为-263—263-1float占用四个字节,数字大小为1.4E-45~3.4E+38,-1.4E-45~-3.4E+38。用二进制的指数形式表示一个浮点数的格式,如:101*22,101*2-3double占用八个字节,数字大小为4.9E-324~1.7E+308,-4.9E-324~-1.7E+308。char占两个字节,数字大小为0—216-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:“&”和“&&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。“|”和“||”的区别与“&”和“&&”的区别一样。1.3.1运算符位运算符任何信息在计算机中都是以二进制的形式保存的,&,|,^除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。只有参加运算的两位都为1,&运算的结果才为1,否则就为0。只有参加运算的两位都为0,|运算的结果才为0,否则就为1。只有参加运算的两位不同,^运算的结果才为1,否则就为0。1.3.1运算符移位运算符左移右移无符号右移1.3.1运算符移位运算的注意事项及小技巧移位运算符适用类型有byte、short、char、int、long对低于int型的操作数将先自动转换为int型再移位。对于int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a33和a1结果是一样的,a32的结果还是a原来的数字。对于long型整数移位时ab,则是先将移位位数b对64取模。移位不会改变变量本身的值。如a1;在一行语句中单独存在,毫无意义。x1的结果和x/2的结果是一样的,x2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y=1x;1.3.1运算符高低运算符的优先级1.3.1运算符编程技巧运算符的优先级顺序不用刻意去记,使用括号控制优先级不但能降低编程的难度,而且能增加程序的可读性1.3.2表达式表达式语句:符合一定语法规则的操作数和运算符的序列例:b;b+5;a10&&b10表达式的运算顺序先按照运算符的优先级优先级相同的,按照约定的结合方向表达值的值和类型1.3.3控制语句条件控制语句循环控制语句特殊的循环流程控制1.3.3控制语句条件控制语句Ifelse语句的语法:If(布尔表达式){语句或语句块}If(布尔表达式){语句或语句块}elseif(布尔表达式){语句或语句块}else{语句或语句块}1.3.3控制语句switch语句的语法switch(表达式1){case常量1:语句break;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(“Idon’tknow”);}思考:无break的情况1.3.3控制语句for循环语句for(初始化表达式;布尔值测试表达式;更改表达式){语句或语句块;}例:for(inti=0;i=10;i++){System.out.println(“i=”+i);}1.3.3控制语句while循环while(布尔值){语句或语句块;}注意:while表达式的括号后不能加“;”,否则会造成不易察觉的无限循环1.3.3控制语句dowhile循环do{语句或语句块;}while(布尔测试)注意:while表达式的括号后要加“;”1.3.3控制语句思考:while循环和dowhile循环的不同之处while循环先判断循环条件,再