1、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。
2、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 在一台计算机上由软件或硬件模拟的计算机。J
3、ava虚拟机(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
4、第一个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语言中单词拼写严格区
5、分大小写;类个数一个源文件中最多只能有一个public 类。其它类的个数不限。 1.8、Java学习路线;初级部分: Java核心技术(Core Java);中级部分: JSP JavaBean Servlet等;高级部分: SSH框架 EJB 数据库(Oracle SQL Server MySQL) 各种商用应用服务器配置;项目部分: UML建模 需求分析等;D2:Java基础2.1 标示符和关键字标示符:标示符:Java程序中的类、属性、方法、对象、变量等元素都应有自己的名称,各元素的名称通称为标识符。 Java标识符定义规则:由字母、数字、_和$组成;开头字符必须是字母、下画线或$。关键
6、字: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)接口(inter
7、face)数组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
8、的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浮点型常量默认
9、为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
10、型变量并赋值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 基本数据类型转换除了布尔型数据外,字符型 整型的数据和浮点类型的数据可以混合在一起进行运算,不同类型数据运算的结果是何种类型的呢?数据可由
11、一种类型转换成另一种类型吗?在这一讲里这些疑问都将得到解决。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
12、型,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 运算符算术运算符: +,*,/,%,+,关系运算符: ,=,=,=,!=布尔逻辑运算符: !,& , | , , &,|赋值运算符: = 扩展赋值运算符:+
13、=,=,*=,/=字符串连接运算符: + 逻辑运算符逻辑运算符功能!- 逻辑非& - 逻辑与 | - 逻辑或 - 逻辑异或&- 短路与 | - 短路或逻辑运算符功能说明:ab!aa&ba|baba&ba|btruetrue falsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse短路逻辑运算符应用& - 第一个操作数为假则不判断第二个操作数 | - 第一个操作数为真则不判断第二个操
14、作数字符串连接符:+运算符两侧的操作数中只要有一个是字符串(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
15、 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语句提供一个出口,使流程跳出开关语句。
16、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
17、) 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+;Sys
18、tem.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 Ye
19、s public Yes Yes Yes Yesfinal关键字:final可以修饰成员变量、方法和类;不能修饰构造方法;final修饰的变量为常量,一旦赋值不可更改;final修饰的方法不能被子类覆盖;final修饰的类不能被继承,因此类成员默认都是final类型的 因为没机会被覆盖;当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。4.7 基本数据类型的包装类(Wrapper Class)每个基本数据类型都对应一个包装类,用于对象的操作;需要在 基本类型如int包装类IntegerString之间 互转;public class WrapperTest publi
20、c 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 i
21、nteger1 = new Integer(4);/5 Integer转成字符串String s4 = integer1.toString();/6 Integer转成intint i5 = integer1.intValue();4.8 =和equalsequals被用来检测两个对象是否相等,即两个对象的内容是否相等;=检测基本数据类型,只要值相等,结果即为true; 而在比较引用类型时,则是比较引用是否指向同一个对象,是则为true;参照TestEqualsString.java4.9 内部类内部类:放在一个类的内部定义的类就叫内部类。分为静态和非静态内部类。内部类类似于外部类的一个属性;
22、作用:l 可以很好的实现隐藏,一般的类是不允许有private protected修饰的,内部类则可以;InnerTest1.javal 内部类可以访问外部类的所有成员;l 可以实现多重继承;InnerTest2.javal 可以避免修改接口而实现同一类中两种同名方法的调用。内部类和外部类互访规则:l 外部类可以访问内部类的私有成员变量,反之也可;l 非静态内部类只能含有非静态成员,可直接访问外部类成员,如遇同名变量,用 “外部类名.this.属性” 去访问;l 外部类按照常规方式访问非静态内部类,如以下格式;/适合外部类的非静态方法InnerClass innerClass = new In
23、nerClass();innerClass.i = 1;innerClass.methodA();/适合外部类的静态方法(必须将内部类对象指向一个外部类实例的引用)OuterClass outerClass = new OuterClass();InnerClass innerClass = outerClass.new InnerClass();innerClass.i = 1;innerClass.methodA();l 静态内部类可含有静态和非静态成员(和非静态内部类的区别),非静态方法可直接访问外部类的静态成员,访问外部类非静态成员需new外部类实例;静态方法直接访问外部类静态方法,需
24、创建外部类实例访问外部非静态方法;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文件未找