




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
D1:Java介绍1.1 Java起源、发展历程和版本划分:1982年SUN公司成立,1991年出现,”Oak”Java的早期称呼,用于嵌入家电;1998年发布JDK1.2,并使用“Java 2”;目前我们大部分用JDK1.6的版本;Java根据应用方向,分为三个版本及对应的类库:J2ME 移动版J2SE 标准版J2EE 企业版1.2 Java语言特点易于学习 ; 高效率的执行方式,即先编译后执行;与平台无关,即跨平台,可运行于主流操作系统如UNIX LINUX Windows上;分布式;安全性;丰富的API文档和类库;多线程;1.3、关于JDK和JVM?要进行Java开发,必须得安装JDK。JDK(Java Development Toolkit)是Java开发工具包的简称,包含运行Java程序的类库和命令;JDK包含JRE,它包含比JRE更多的命令。JRE只是运行时环境,所包含的类库比JDK小;一般来讲,开发人员都应采用对应的JDK,目前用JDK6版本;JRE=JVM+Runtime Interpreter;Java运行环境的三项主要功能:l 加载代码:由class loader 完成;l 校验代码:由bytecode verifier 完成;l 执行代码:由 runtime interpreter完成。关于Java虚拟机(JVM)l 在一台计算机上由软件或硬件模拟的计算机。Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件 。l Java编译器针对Java虚拟机产生class文件,因此是独立于平台的。l Java解释器负责将Java虚拟机的代码在特定的平台上运行。l Java语言是先编译源文件,后执行class文件!1.4 Java程序分类l Java Application以main()方法作为程序入口,由Java解释器加载执行。l Java Apple 没有main()方法作为程序入口,由浏览器或appletviewer加载执行。l Jsp,ServletWeb上的应用程序,即主流J2EE服务程序1.5 JDK安装和配置上级演示1.6 第一个Java程序Java应用程序举例HelloWorld.java:源文件:HelloWorld.java /* *范例名称:Hello World程序 */ public class HelloWorld public static void main (String args) System.out.println(Hello World!); 先编译 javac 类名.java,(编译完会形成一个二进制的class文件,该文件与平台无关,即可以跨平台运行)后运行java 类名1.7 小结命名 如果.java 文件包含一个public 类,它必需按该类名命名。Java语言中单词拼写严格区分大小写;类个数一个源文件中最多只能有一个public 类。其它类的个数不限。 1.8、Java学习路线;初级部分: Java核心技术(Core Java);中级部分: JSP JavaBean Servlet等;高级部分: SSH框架 EJB 数据库(Oracle SQL Server MySQL) 各种商用应用服务器配置;项目部分: UML建模 需求分析等;D2:Java基础2.1 标示符和关键字标示符:标示符:Java程序中的类、属性、方法、对象、变量等元素都应有自己的名称,各元素的名称通称为标识符。 Java标识符定义规则:由字母、数字、_和$组成;开头字符必须是字母、下画线或$。关键字:l Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)l 所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 ;l goto和const 虽然从未使用,但也作被为Java关键字保留;l true,false,null虽被用做专门用途,但也不是Java关键字,它们只是显式常量值; 2.2 Java的基本数据类型Java数据类型划分数据类型基本数据类型引用数据类型数值型字符型(char)布尔型(boolean)整数类型(byte, short, int, long)浮点类型(float, double)类(class)接口(interface)数组boolean布尔类型:只有true和false两种值;char字符型:字符常量是用单引号括起来的单个字符char c = A;Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示char c1 = u0061; /u0061表示a (因为Java字符采用Unicode编码,每个字符占两个字节,故可用16进制编码表示)Java语言中还允许使用转义字符来将其后的字符转变为其它的含义char c2 = n; 如n代表换行,r代表回车,代表反斜杠 整型:类 型占用存储空间表数范围 byte 1字节 -128 127 short 2字节 -2的15次方 2的15次方-1 int 4字节 -2的31次方 2的31次方-1 long 8字节 -2的63次方 2的63次方-1 Java语言整数常量的三种表示形式: 十进制整数,如12, -314, 0。 八进制整数,要求以0开头,如012 十六进制数,要求0x或0X开头,如0x12 Java语言的整型常量默认为int型,如:int i =3;声明long型常量可以后加 l 或 L ,如:long l = 3L;浮点型:Java浮点类型常量有两种表示形式十进制数形式,必须含有小数点,例如: 3.14 314.0 .314 科学记数法形式,如 3.14e2 3.14E2 314E2 Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如: double d = 3.14;float f = 3.14f;float 占4个字节,double占8个字节范例代码VariableTest.java:Java中变量的定义class VariableTestpublic static void main (String args ) boolean b = true; /声明boolean型变量并赋值 int x, y=8; / 声明int型变量float f = 4.5f; / 声明float型变量并赋值double d = 3.1415; /声明double型变量并赋值char c; /声明char型变量c =u0031;/为char型变量赋值 x = 010; /为int型变量赋值 System.out.println(b= + b);System.out.println(x= + x);System.out.println(y= + y);System.out.println(f= + f);System.out.println(d= + d);System.out.println(c= + c);2.3 基本数据类型转换除了布尔型数据外,字符型 整型的数据和浮点类型的数据可以混合在一起进行运算,不同类型数据运算的结果是何种类型的呢?数据可由一种类型转换成另一种类型吗?在这一讲里这些疑问都将得到解决。1整型和浮点类型都可看作是数值型数据,当不同的数值型数据运算时,有一个内在的规则:先统一为同一类型,再进行运算。结果就为运算前统一的类型。这里的“统一”就是自动类型转换。自动类型数据转换总是从低级到高级进行,byte、char、short的级别最低,double的级别最高;范例:定义如下几个变量:int x, byte y, long z, float a, double b, char c;分析:x + y的结果应为int型,x + y + z的结果为long型,a + b的结果为double型,a - x - y的结果为float型,x + c的结果为int型。2欲让高级数据转换成低级数据,需用到强制类型转换,其形式如intx=(int)3.5;class TypeConvertTestpublic static void main (String args ) char c1 = a;System.out.println(c1= + c1 + 1); /输出c1=a1System.out.println(c1 + 1); /输出a的ASC码值97+1=982.4 运算符算术运算符: +,*,/,%,+,关系运算符: ,=,=,=,!=布尔逻辑运算符: !,& , | , , &,|赋值运算符: = 扩展赋值运算符:+=,=,*=,/=字符串连接运算符: + 逻辑运算符逻辑运算符功能!- 逻辑非& - 逻辑与 | - 逻辑或 - 逻辑异或&- 短路与 | - 短路或逻辑运算符功能说明:ab!aa&ba|baba&ba|btruetrue falsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse短路逻辑运算符应用& - 第一个操作数为假则不判断第二个操作数 | - 第一个操作数为真则不判断第二个操作数字符串连接符:+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接int i = 300 +5;String s = hello, + i + 号;System.out.println(s); /输出:hello, 305号条件运算符:三目条件运算符,语法格式:x ? y : z其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。举例:int score = 50;int result = x 60 ? 60: x;String type = score 60 ? 不及格 : 及格;2.5 分支结构之ifif (条件表达式) else if (条件表达式) else if (条件表达式) else 练习:写一方法,在调用时通过参数输入年号,判断是否为闰年。算法: 根据闰年的判断条件当年号能被4整除但不能被100整除时, 为闰年。当年号能被400整除时, 为闰年。2.6 分支结构之switch caseswitch(变量) case 常量1:表达式;break;case 常量2:表达式;break;default:表达式;注意: case后面的常量必须是整数或字符型;通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。switch中的表达式结果必须是一个整型值,该值用来与后续的值1、值2、值n比较,如果值是相同的,则执行case后的语句组。之后不再判断,连续地执行下去,直到遇到break语句或switch运行完毕练习:输入一百分制成绩,输出对应的等级。90100分的等级为A?089分的等级为B?079分的等级为C?069分的等级为D?60分以下的等级为E2.7 循环结构l 循环语句功能在循环条件满足的情况下,反复执行特定代码l 循环语句的四个组成部分初始化部分(init_statement)循环条件部分(test_exp) 循环体部分(body_statement) 迭代部分(alter_statement) l 循环语句分类for 循环while 循环do/while 循环2.8 循环结构之for循环public class HelloWorld public static void main(String args) int i,sum = 0;for(i=1; i=100; i+) sum += i;System.out.println(sum);2.9 循环结构之while循环public class HelloWorld public static void main(String args) int i = 1,sum = 0;while(i=100) sum += i;i+;System.out.println(sum=+sum);2.10 循环结构之do while()先执行循环体,再判断条件public class HelloWorld public static void main(String args) int i = 1,sum = 0;dosum += i;i+;while (iapp-dao目录下。Java的访问控制符分两类:1 类:类只能被public或default(默认 什么都不写)修饰。2 属性和方法:以下四个。同一类中同一包中 同一子类中 通用(其它)private Yesdefault Yes Yes protected Yes Yes Yes public Yes Yes Yes Yesfinal关键字:final可以修饰成员变量、方法和类;不能修饰构造方法;final修饰的变量为常量,一旦赋值不可更改;final修饰的方法不能被子类覆盖;final修饰的类不能被继承,因此类成员默认都是final类型的 因为没机会被覆盖;当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。4.7 基本数据类型的包装类(Wrapper Class)每个基本数据类型都对应一个包装类,用于对象的操作;需要在 基本类型如int包装类IntegerString之间 互转;public class WrapperTest public static void main(String args) /1 字符串转成 intint i1 = Integer.parseInt(1);int i2 = Integer.valueOf(2).intValue();/2 字符串转成IntegerInteger i3 = Integer.valueOf(3);Integer i4 = new Integer(4);/3 int转成字符串String s1 = String.valueOf(1);String s2 = Integer.toString(2);String s3 = + 3;/4 int转成IntegerInteger integer1 = new Integer(4);/5 Integer转成字符串String s4 = integer1.toString();/6 Integer转成intint i5 = Value();4.8 =和equalsequals被用来检测两个对象是否相等,即两个对象的内容是否相等;=检测基本数据类型,只要值相等,结果即为true; 而在比较引用类型时,则是比较引用是否指向同一个对象,是则为true;参照TestEqualsString.java4.9 内部类内部类:放在一个类的内部定义的类就叫内部类。分为静态和非静态内部类。内部类类似于外部类的一个属性;作用:l 可以很好的实现隐藏,一般的类是不允许有private protected修饰的,内部类则可以;InnerTest1.javal 内部类可以访问外部类的所有成员;l 可以实现多重继承;InnerTest2.javal 可以避免修改接口而实现同一类中两种同名方法的调用。内部类和外部类互访规则:l 外部类可以访问内部类的私有成员变量,反之也可;l 非静态内部类只能含有非静态成员,可直接访问外部类成员,如遇同名变量,用 “外部类名.this.属性” 去访问;l 外部类按照常规方式访问非静态内部类,如以下格式;/适合外部类的非静态方法InnerClass innerClass = new InnerClass();innerClass.i = 1;innerClass.methodA();/适合外部类的静态方法(必须将内部类对象指向一个外部类实例的引用)OuterClass outerClass = new OuterClass();InnerClass innerClass = outerClass.new InnerClass();innerClass.i = 1;innerClass.methodA();l 静态内部类可含有静态和非静态成员(和非静态内部类的区别),非静态方法可直接访问外部类的静态成员,访问外部类非静态成员需new外部类实例;静态方法直接访问外部类静态方法,需创建外部类实例访问外部非静态方法;l 外部类访问静态内部类成员,如:OuterClass1.InnerClass2 inner2 = new OuterClass1.InnerClass2();inner2.i = 10;inner2.pay();OuterClass1.InnerClass2.methodS(); /此句只针对访问静态内部类的静态方法匿名(anonymous)内部类:有时候不需要内部类的对象名,即无名的内部类;当一个内部类的类声名只是在创建此类对象时用了一次,而且要产生的新类需继承于一个已有的父类或实现一个接口,才考虑用匿名类。方法中的类称为局部内部类,该类只在本方法中有效,而且只能访问方法中的final成员;D5:异常处理5.1 异常的概念Java程序运行过程中所发生的异常事件可分为两类:l 错误(Error):JVM系统内部错误、资源耗尽等严重情况;l 异常(Exception): 其它因编程错误或偶然的外在因素导致的问题,例如:数组越界 空指针访问试图读取不存在的文件网络连接中断5.2 异常的层次异常包括1 Runtime运行时异常如数组越界 算数异常2 非运行时异常如IO文件未找到异常,此类异常必须在方法中声明或捕捉。5.3 try catch捕获异常try./可能产生违例的代码catch( ExceptionName1 e )./当产生ExceptionName1型违例时的处置措施catch( ExceptionName2 e ). /当产生ExceptionName2型违例时的处置措施 finally. /无条件执行的语句 try 指明异常可能发生的范围;catch 指明对异常进行处理的代码;finally 提供一个最终出口,无论有无异常,都会输出finally中的代码。可选。getMessage() 用来获取异常相关信息;printStackTrace() 用来打印堆栈信息。5.4 用throws声明抛出异常异常处理的第二种方式:表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。5.5 throw关键字throw关键字允许在方法内部主动抛出自定义的异常。throw和throws的区别:1 两者位置不同,throw在方法内部,而throws在方法声明处;2 throw主动抛出自定义异常类的对象,throws声明一个方法可能抛出的异常,但自己不处理,由方法的调用者处理异常;3 throw抛出的是对象,throws抛出的是类。 另外,在子类中,如果要覆盖父类的一个方法,或父类中的方法声明了throws异常,则子类的方法也可以抛出异常,但切记子类方法抛出的异常只能是父类方法抛出的异常的同类或子类。D6:多线程6.1 了解进程和线程一个线程就是一个程序内部的一条执行线索,是比进程更小的单元。多进程: 在操作系统中能同时运行多个任务(程序),比如操作系统可以同时运行多个软件。一个进程可以包含一个或多个线程多线程: 。多线程的优点:1 程序的吞吐量更大;2 有多个CPU的系统,可以并发运行不同的线程。6.2 实现多线程的两种方式可通过继承Thread类和实现Runnable接口两种方式实现多线程。继承Thread类方式:1 编写子类继承Thread类,重写run方法,将需要在新线程上运行的代码放在run方法中;2 要想启动线程不是直接调用run方法,而是调用Thread子类对象的start方法启动线程;3 由于线程的代码段在run方法中,那么该方法执行完成后线程也就结束了,因而我们可以通过控制run方法中的循环条件来控制线程的结束。如 Thread子类 对象名 = new Thread子类(); /继承方式见范例ThreadDemo1.java实现Runnable接口方式:1 编写子类实现Runnable接口,将需多线程运行的代码放在run方法中;2 实例化子类对象,将其传给Thread类的构造方法,如Thread t1 = new Thread(Runnable接口子类对象); 见范例ThreadDemo2.java推荐使用接口形式实现多线程:1 接口比继承更方便; 2 接口可以实现数据共享(如3个售票员同时售100张票的情形);见范例ThreadDemo1.java见范例TicketsDemo1.java(继承) TicketsDemo2.java(接口) TicketsDemo3.java(sleep引发的意外) 模拟铁路售票系统。setDaemon(true)方法可将调用该方法的线程变为后台线程(也叫守护线程),必须在调用start方法前,否则为抛出异常;当只有后台线程时,JVM就可以退出了。tt.join()把tt对应的线程合并到调用tt.join()语句的线程中。见范例JoinThreadDemo.java6.3 线程的生命周期1 创建状态:当用new操作符创建一个新的线程对象时,该线程处于创建状态。2 可运行状态:执行线程的start()方法将为线程分配必须的系统资源,安排其运行,并调用线程体run()方法,这样就使得该线程处于可运行( Runnable )状态。3 运行中状态:Java运行系统通过调度选中一个Runnable的线程,使其占有CPU并转为运行中状态(Running).此时,系统真正执行线程的run()方法.4 阻塞状态:一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态(Blocked),比如调用了sleep()或wait()方法5 消亡状态:线程结束后是消亡状态;6.4 多线程的同步1 为什么要引入同步机制?在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。2 怎样实现同步对于访问某个关键共享资源的所有方法,都必须把它们设为synchronized例如:同步代码块synchronized /* . */ 同步方法synchroni
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 细胞培养培训课件
- 让友谊之树常青课件
- 宠物食品市场2025年用户成分认知度与品牌竞争力提升报告001
- 宠物食品供应链分析报告:2025年市场结构洞察
- 认识汉字“三”的课件
- 保险公司潜能培训课件
- 宠物行业市场细分报告:宠物保险市场2025年增长潜力
- 护士业务学习培训课件
- 香料基础知识培训课件
- 量子测量在量子密码学中的创新创业项目商业计划书
- 2025秋苏教版(2024)小学科学二年级上册(全册)课时练习及答案(附目录)
- 2024长沙电力职业技术学院单招考试文化素质物理考试历年机考真题集附完整答案详解【易错题】
- 2025至2030年中国银川房地产行业市场调查研究及发展战略规划报告
- 装修代购协议书
- 土建质量培训的课件
- 大班课件《了不起的中国人》
- (高清版)DB13∕T 2823-2018 公路高模量沥青路面施工技术指南
- 培训消防培训课件
- 中国避孕药行业发展趋势及发展前景研究报告2025-2028版
- 第一单元 口语交际 讲述(教学课件)
- 良肢位摆放技术
评论
0/150
提交评论