java基础培训资料.ppt_第1页
java基础培训资料.ppt_第2页
java基础培训资料.ppt_第3页
java基础培训资料.ppt_第4页
java基础培训资料.ppt_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java2 SE讲解,Java基础 1、语法基础 2、面向对象 3、JDBC 4、异常,课程内容,OOP&Java Base,面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),3,Java学习路线,Java SE应用程序设计:面向对象(类,继承,接口,多态,抽象与封装) 异常处理,I/O编程,集合框架,GUI程序设计,多线程编程 数据库的学习:可以学习Oracle数据库安装配置、基本管理及开发,使用OEM/SQL Plus,标准SQL,DML,DDL,函数,事务,约束,序列,索引,视图,数据库设计,MySql,SQL Server的基本使用。 Java Web应用开发: JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC设计模式,Tomcat,Eclipse+MyEclipse. Java企业级应用开发: Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX,Jquery,Json,4,5,Java 语言的发展历史,Java 已经成为当今最为流行的软件开发语言技术之一。,Java的平台无关性,Java是一种既面向对象又可以跨平台的语言,即:编写一次,随处运行(Write once, Run anywhere); Java不仅适用于单机应用程序和基于网络的程序,也可用于创建消费类设备的附件程序,如移动电话、掌上设备等。,6,MAC OS,Java虚拟机,Java虚拟机(Java Virtual Machine)是可运行Java字节码的虚拟计算机系统; 使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上; 它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。,7,用户USER,字节码程序,JVM (Java 虚拟机),操作系统,硬 件,Java虚拟机的运行过程,8,Java发展史,95年sun发布jdk1.0 98年jdk1.2 后续jdk1.3、1.4、1.5 目前jdk1.6、1.7 现在SUN已推出 Java 2 Platform Micro Edition (Java 2 ME) Java 2 Platform Standard Edition (Java 2 SE) Java 2 Platform Enterprise Edition (Java 2 EE),JDK目录,src.zip:核心API所有类的源文件 bin :包含编译器,解释器等可执行文件 Demo:包含源代码的程序示例 include:用于本地方法的文件 jre:Java运行环境 lib:Java类库,Java开发环境的下载、安装、配置,下载: 安装(windows环境下) 配置环境变量:path 验证: Java version Javac 编译源文件 Java 执行文件 编写第一个Java文件:HelloWorld.java,第一个Java Application应用程序,打开记事本,新建一个文本文件,将文件名改为Hello.java,在文件中键入如下内容并保存:,public class Hello public static void main(String args) System.out.println(“Hello world!“); ,Java源程序,扩展名为.java 的源文件,使用记事本 进行编辑,使用javac编译器编译源文件,接下来需要将源程序进行编译; 进入命令提示行,切换到源文件所在的目录,执行javac命令,使用javac编译器编译源文件; javac命令的格式是:javac 完整的源文件名,切换到源文件所在的目录,使用javac命令编译源文件,光标闪烁表示语法无误, 顺利通过编译,.class(字节码)文件,顺利通过编译后将生成一个扩展名为.class的字节码文件(类描述文件)。,扩展名为.java 的源文件,通过编译后 生成的扩展名 为.class的 字节码文件,使用java解释器运行字节码文件,进入命令提示行,在字节码文件所在的目录下,执行java命令,使用java解释器运行字节码文件; java命令的格式是:java 类名称 请注意:这里只需要类名称,而不是带扩展名的文件名。,执行java命令运行字节码文件,程序运行效果,分析程序,关键字class用来定义一个类,Hello是类的名称; 在Java程序中,所有的语句都必须放在某个类中; 整个类及其所有成员都包含在一对花括号中(即和之间),它们标志着类定义块的开始和结束。 定义类的一般语法: class 类名 ,分析程序3-2,程序必须从main函数开始执行; 关键字public是访问修饰符,用来控制类成员的可见范围及作用域; 关键字static允许在不创建类的实例的情况下,调用main函数; 关键字void用来说明main函数是没有返回值的; args是字符串数组,用来从命令行接收参数; main函数的一般形式如下: public static void main(String args) ,分析程序,String是字符串类型的数组; 在Java中,类名称一般首字母大写; 使用System.out.println()将信息输出到控制台上,即打印出来。,常用Java 命令, 编译一个java源文件 $javac 运行java可运行文件 $java -options class args. 生成java注释文档 $javadoc options packagenames sourcefiles files 例:javadoc -d D:javados -sourcepath D:java abstractMoreType.java javadoc -d c:doc -sourcepath c:src -subpackages com.liigo(递归所有com.liigo子包里的java文件) 生成一个jar包 $ jar ctxuvfm0Mi jar-file manifest-file -C directory files . 例:jar -cvf aa.jar -C news . (把news文件夹里的文件整个打包),J2SE基础语法,标识符 数据类型 数据类型的转换(主讲四类八种) 运算符 条件语句、循环语句:if/for/while/dowhile()/break-continue/switch,标识符命名规范, Java语言中,为各种变量、方法和类等起的名字称为标识(identifier)。 Java标识符的命名规则: 应以字母、下划线(_)、美元符($) 、数字组成,但不能以数字开头. Java标识符大小写敏感,长度无限制 不能与关键字同名,Java的基础类型及常量,Java的八种基础类型: 整型:byte、short、int(默认)、long 字符型:char 浮点型:float、double (默认) 布尔型:boolean(一般用于程序的流程控制),注:Java采用Unicode编码(全球语言统一编码),每个字符占两个字节, 因此一个Char类型的变量可以存放一个汉字(一个汉字占两个字节),Java的基础类型及常量,长度 表示范围 byte 1字节,8位 -2727-1 short 2字节,16位 -215215-1 int 4字节,32位 -231231-1 long 8字节,64位 -263263-1 float 4字节,32位 大约为+/- 3.403E38 double 8字节 64位 大约+/-1.798E308,基本数据类型转换,boolean类型不可转换为其他类型。 整型,字符型,浮点型的数据在混合运算中相互转换遵循如下原则: 容量小的类型自动转换为容量大的,数据类型按容量大小排序如下: byte、short、char-int-long-float-double bypt、short、char三者之间不互相转换,三者参与运算时先转换为int类型 容量大的在转换为容量小的时候要加强制转换符,但可能造成精度降低或溢出 浮点型常量默认值为double类型,整型常量默认值为int类型,成员变量、局部变量、变量作用域 在Java中,变量一旦声明,就应对其进行初始化,TestConvert.java,基本数据类型转换,int i = 1,j; float f1 = 0.1; float f2 = 123; long l1 = 12345678; long l2 = 8888888888; double d1 = 2e20,d2 = 20; byte b1 = 1,b2 = 2, b3 = 129; j = j + 10; i = i / 10; i = i * 0.1; byte b = b1 - b2; float f3 = f1 + f2; float f4 = f1 + f2 * 0.1; double d = d1 * i + j; float f = (float)(d1 * 5 + d2);,Java数据类型划分图,数据类型,基本数据类型,引用数据类型,类:class,接口:interface,浮点型:float、double,整型:byte、short、int、long,布尔型:boolean,字符型:char,数值型,数组,运算符:operator,Java语言支持的运算符: 算术运算符:+,-,*,/,%,+,- 关系运算符:,=,基本不用 赋值运算符:= 扩展赋值运算符:+=,-=,*=,/= 字符串连接运算符:+,注:+(-) 在前时先计算后取值 在后时先取值后计算,int x = 2; System.out.println(1 + +x + 2 + x); ? x = 2; System.out.println(1 + x+ + 2 + x); ?,逻辑运算符,逻辑运算符:【! 逻辑非】【& 逻辑与】【| 逻辑或】【 逻辑异与】【& 短路与】【| 短路或】,public static void main(String args) boolean a = true, b = false, c; c = !a;System.out.println(c); c = ab;System.out.println(c); c = a|b;System.out.println(c); c = a ,”“逻辑异与:相同就为false,不同则为true,|和|区别?&和&区别?,位运算符(一),移位运算符:“ 右移”;“ 无符号右移” 例子: -53=-1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其结果与 Math.floor(double)-5/(2*2*2) 完全相同。 -53=0 0000 0000 0000 0000 0000 0000 0000 0101 0000 0000 0000 0000 0000 0000 0000 0000 其结果与 5/(2*2*2) 完全相同。 53=536870911 1111 1111 1111 1111 1111 1111 1111 1011 0001 1111 1111 1111 1111 1111 1111 1111 无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -532=-5、-532=-5。 一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。 0000 0000 0000 0000 0000 0000 0000 0001 1000 0000 0000 0000 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111,位运算符(二),位逻辑运算符:& 与;| 或; 非(也叫做求反); 异或 “& 与”、“| 或”、“ 非”是基本逻辑运算,由此可以演变出“与非”、“或非”、“与或非”复合逻辑运算。“ 异或”是一种特殊的逻辑运算,对它求反可以得到“同或”,所以“同或”逻辑也叫“异或非”逻辑。 例子: 5&3=1 0000 0000 0000 0000 0000 0000 0000 0101 0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0001 -5&3=3 1111 1111 1111 1111 1111 1111 1111 1011 0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0011 5|3=7 0000 0000 0000 0000 0000 0000 0000 0101 0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0111 -5|3=-5 1111 1111 1111 1111 1111 1111 1111 1011 0000 0000 0000 0000 0000 0000 0000 0011 1111 1111 1111 1111 1111 1111 1111 1011 5=-6 0000 0000 0000 0000 0000 0000 0000 0101 1111 1111 1111 1111 1111 1111 1111 1010,位运算符(三),位逻辑运算符:& 与;| 或; 非(也叫做求反); 异或 “& 与”、“| 或”、“ 非”是基本逻辑运算,由此可以演变出“与非”、“或非”、“与或非”复合逻辑运算。“ 异或”是一种特殊的逻辑运算,对它求反可以得到“同或”,所以“同或”逻辑也叫“异或非”逻辑。 例子: -5=4 1111 1111 1111 1111 1111 1111 1111 1011 0000 0000 0000 0000 0000 0000 0000 0100 53=6 0000 0000 0000 0000 0000 0000 0000 0101 0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0110 -53=-8 1111 1111 1111 1111 1111 1111 1111 1011 0000 0000 0000 0000 0000 0000 0000 0011 1111 1111 1111 1111 1111 1111 1111 1000,字符串连接符,“+”除用于加法运算外,还可以用于字符串的连接 int i = 55 + 21; String s = “wang” + “hz”; “+”运算符两侧的操作数只要有一个字符串(String)类型,系统就会自动将另一个操作数转换为字符串类型,然后连接: int i = 12; System.out.println(“wanghz” + i); 输出结果:wanghz12 String s1 = 10+2+”qing” String s2 = “qing”+ 10+2 s1和s2的输出结果会是什么?,注:System.out.println(value);中的value无论是何类型,都会先转为字符型,然后打印,if条件语句,表达式,语句块,false,true,TestIf.java,循环控制语句,表达式1,表达式2,语句块,true,表达式3,false,TestFor.java,课堂练习 编写程序,用以个for循环计算 1!+2!+3!+ +10!的值, 并打印出计算结果。 OddSum.java,while与do-while,表达式,true,语句块,false,语句块,表达式,true,false,两者区别?,WhileTest.java,循环语句举例,/输出1100内前5个能被3整除的数 public class Test public static void main(String args) int num = 0,i = 1; while(i=100) if (i%3=0) System.out.print(i+“ “); num+; if (num=5) break; i+; ,/输出101200内的质数 public class Test public static void main(String args) for(int i=101;i200;i+=2) boolean f = true; for (int j=2;ji;j+) if (i%j=0) f = false; break; if (!f) continue; System.out.print(i+“ “); ,Switch条件控制,注:表达式必须是int类型的(byte,short,char,int),break语句穿透问题,SwitchTest.java,方法,Java中的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:修饰符1 修饰符2 返回值类型 方法名(形式参数列表) Java 语句 Sample: public String getName(String name) return “name = ” + name; ,形式参数: 在方法被调用时,用于接收外界输入的数据。 实参: 调用方法时,实际传给方法的数据。 返回值: 方法在执行完毕后返还给调用它的环境的数据。 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void,Java语言中使用下述形式调用方法:对象名.方法名(实参列表) 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配 return语句终止方法的运行,并指定要返回的数据 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void,TestFuncation.java,基本语法总结,标识符 数据类型 数据类型的转换(主讲四类八种) 运算符 条件语句、循环语句:if/for/while/dowhile()/break-continue/switch,面向对象,类与对象 对象在内存中的解析 方法的重载(overload) 关键字:this、static、以及他们与类之间的关系 package和import语句 继承 访问控制符 多态,类与对象,类:具有相同属性和功能的一类事物(属性和方法的集合)。 抽象:对具有相同属性和方法的一类事物的描述过程就叫抽象,抽象的结果就是类。 对象:类的一个实例,对象是组成类的元素。,类的定义,类定义的格式: 修饰符 class 类名 类体代码 类的定义主要有两部分组成:成员变量和方法 /用class关键字定义类,例如: class Person /成员变量定义 private int id=1; private int age = 20; /定义方法 public int getId() return id; public int getAge() return age; public void setAge(int i) age = i; ,对象的创建,p=null,stack,heap,Person p;,p = new Person();,p,id:1,age:20,方法的调用,class Person /成员变量定义 private int id; private int age = 20; /定义方法 public int getId() return id; public int getAge() return age; public void setAge(int i) age = i; ,public class Test public static void main(String args) Person p = new Person(); p.setAge(34); int age = p.getAge(); System.out.println(age); ,使用 对象引用.方法名(参数列表)来调用对象的方法。,封装性,类的封装性:即不能让外面的类随意修改一个类的成员变量 在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用; 为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx(); 一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。,构造方法,类内部一种特殊的方法,创建对象时所调用的方法。 使用 new +构造方法名 创建一个新的对象。 构造方法是定义在java类中的一个用来初始化对象的方法。 构造方法没有返回值类型,它与其他的方法在此处不同 构造方法的方法名与类名完全相同,构造方法,创建对象时,使用构造方法初始化对象的成员变量。 public class Test public static void main(String args) /创建对象 Person tom = new Person(1,25); Person jack = new Person(2,20); ,tom,stack,jack,1,25,2,20,heap,构造方法,每个类都至少有一个构造方法,如果我们没有显示的声明,JVM会在加载该类时为其添加一个public的无参的构造方法: 类名() 例如:,class Point int x; int y; .main Point p = new Point(); ,课堂练习,定义一个点(point)类用来表示三维空间中的点(有三个坐标) 。要求如下: 1. 可以生成具有特定坐标的点对象 2. 提供可以设置三个坐标的方法 3. 提供可以计算该”点”到原点距离平方的方法 4. 编写程序验证上面三点,TestPoint.java,方法的重载,方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时会根据不同的参数表选择对应的方法。 判断方法重载的依据: 1、在同一个类内 2、方法名相同 3、参数的类型不同,或者参数的个数不同,或者参数的排列顺序不同 4、方法的返回值的不同不能作为判断方法重载的依据,仅仅是返回值的不同,就造成了方法的重名,会报错。,TestOverLoad.java,构造方法的重载,与普通方法一样,构造方法也可以重载 例如: Person类的构造方法,class Person int id; int age; public Person() id = 1; age = 20 public Person(int m) id = m; age= 20; public Person(int m,int n) id = m; age= n; ,课堂练习: 利用Person类,编写程序, 分别用三种构造方法创建三个Person 对象,如下图所示:,p1,p2,p3,1,20,2,20,5,36,关键字this,在类的方法中使用。 This:当前对象的一个引用,指向它自己,在类的内部使用。 有时使用this可以处理方法中成员变量和参数重名的情况。,TestThis.java,this,heap,关键字static,在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说, static成员变量该变量只有一份,保存在内存的data segment中。 用static声明的方法,表示该方法为静态方法,在调用方法时,不会将对象的引用传递给它,所以在static方法中,不能直接调用非静态的成员变量或非静态的方法。可以直接通过类名.静态方法名调用。 可以通过对象、引用或类名(不需要实例化)访问静态成员。,TestStatic.java,TestFuncation.java,package和import语句,为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,java引入包(package)机制。 package语句作为java源文件的第一条语句,指定该文件中定义的类所在的包。 它的格式为: package pkg1.pkg2.pkg3; Java编译器把包对应于文件系统的目录管理, package语句中,用.来指明包的层次,例如使用语句: package com.test; 则该文件中所有的类位于. comtest 目录下,TestPackage.java,继承,子类通过继承获得基类的所有属性(包括私有的)及方法。在创建子类对象时,可以通过子类对象调用基类的方法和访问除去私有的一切成员变量。 继承提高了代码的复用性。 子类可以扩展基类的方法及属性。 子类对象的创建伴随着父类对象的创建,TestExtends.java(内存分析),age,age,Animal,color,Cat,访问权限控制,Java权限修饰符public、private、protected置于类的成员定义前,用来限定其它对象对该类对象成员的访问权限。,对于class的权限修饰只可以用public和default。 public类可以在任何地方被访问。 default类只可以被同一个包内的类访问。,TestAccess.java,继承中的权限控制,class Parent private int n_private = 1; int n_default = 2; protected int n_protected = 3; public int n_public = 4; class Child extends Parent public void f() n_private = 10; /error n_default = 20; n_protected = 30; n_public = 40; ,课堂练习,编写一个Computer 类,提供加(add)、减(reduce)、乘(sheng)、除(div)方法。SubComputer类,继承Computer 类,提供取余(mod)、求平方(square)、立方(cube)方法。,TestComputer.java,方法的重写,在子类中可以根据需要对从基类中继承来的方法进行重写。 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。 重写方法的访问权限不能比被重写方法的低。,TestOverride.java,super关键字,在子类中可以使用super关键字来引用基类的成分,例如:,class FatherClass public int value; public void f() value = 100; System.out.println(“FatherClass.value=” +value ); class ChildClass extends FatherClass public int value; public void f() super.f(); / 这里的super可以省略吗? value = 200; System.out.println(“ChildClass.value=” +value ); System.out.println(“super.value=” +super.value ); .main. ChildClass cc = new ChildClass(); s.f();,this,super,value:200,value:100,cc,super关键字,class Person public static void prt(String s) System.out.println(s); Person() prt(“A Person.“); Person(String name) prt(“A person name is:“+name); public class Chinese extends Person Chinese() super(); /调用父类构造函数(1),必须写在第一行 prt(“A chinese.“); Chinese(String name) super(name);/调用父类具有相同形参的构造函数(2) prt(“his name is:“+name); Chinese(String name,int age) this(name);/调用当前具有相同形参的构造函数(3) prt(“his age is:“+age); public static void main(String args) Chinese cn=new Chinese(); cn=new Chinese(“kevin“); cn=new Chinese(“kevin“,22); ,课堂练习,创建一个仅有一个非缺省构造器的基类,并创建一个带有缺省构造器和非缺省构造器的导出类。在导出类的构造器中调用基类的构造器。,关键字final,final修饰类,表示该类是不能被继承的; final修饰成员变量,表示该变量为常量,值不可以被修改,变量名一般采用大写字母,字母之间通过下划线连接; final修饰方法,表示该方法不能被重写,但是可以使用 一般final和static一起用,当类被多次创建时,只创建一次变量,可以节约内存。,class Animal public String name; Animal(String name) = name; class Cat extends Animal public String eyesColor; Cat(String n,String c) super(n); this.eyesColor = c; class Dog extends Animal public String furColor; Dog(String n,String c) super(n); this.furColor = c; ,多态,public class Test public static void main(String args) Test test = new Test(); Animal a = new Animal(“name“); Cat c = new Cat(“catName“,“blue“); Dog d = new Dog(“dogName“,“black“); test.f(a); test.f(c); test.f(d); public void f(Animal a) System.out.println(“name: “+); if (a instanceof Cat) Cat cat = (Cat)a; System.out.println(“ “+cat.eyesColor+“ eyes“); else if (a instanceof Dog) Dog dog = (Dog)a; System.out.println(“ “+dog.furColor+“ fur“); ,多态,多态,TestPolymoph/Test.java 多态是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 上面例子中,根据Lady对象的成员变量Pet所引用的不同的实际类型而调用相应的enjoy方法。,class Bird extends Animal private String featherColor; Bird(String n,String f) super(n); this.featherColor = f; public void enjoy() System.out.println(“鸟叫声.“); public class Test public static void main(String args) Bird b = new Bird(“birdname”,”green”); Lady l3 = new Lady(“l3“,b); l3.myPetEnjoy(); ,1.要有继承 2.要有重写 3.父类引用指向子类对象,课堂练习,分析上面的程序,体会“多态特性”对于系统可扩充性的重要性。 利用多态性编程,实现求三角形,正方形和圆形面积。方法:抽象出一个共享父类,定义一函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。,MianJi.java,抽象类,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰方法时,该方法叫做抽象方法。 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。 抽象类不能被实例化。 抽象方法只需声明,不需要实现。,TestAbstract.java,abstract class Animal private String name; Animal(String name) = name; abstract public void enjoy(); class Cat extends Animal private String eyesColor; Cat(String n,String c) super(n); this.eyesColor = c; public void enjoy() System.out.println(“猫叫声.“); ,课堂练习,创建一个基类,包含抽象方法print(),并在导出类中将其实现。重载的版本中会打印基类中定义的某个整型变量的值。在定义该变量时,请赋予非零值。在基类的构造器中,可以调用这个方法。现在,在main()方法中,创建一个导出类对象,然后调用它的print()方法。解释发生的情形。,接口,接口是(interface)是抽象方法和常量值的定义的集合。 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 接口定义举例:,public interface runner int id = 1; public void start(); public void run(); public void stop(); ,接口特性,多个无关的类可以实现同一个接口。 接口不能实例化。 一个类可以实现多个无关的接口。 定义java类的语法格式: class extends implements , 接口中声明属性默认为 public static final 的,也只能是public static final 的;即使不写,在编译时会为其加上public static final。 接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的; 接口可以继承其他的接口,并添加新的属性和方法。,interface Singer public void sing(); public void sleep(); class Student implements Singer private String name; Student(String name) = name; public String getName() return name; public void study() System.out.println(“studying“); public void sing() System.out.println(“student is singing“); public void sleep() System.out.println(“student is sleeping“); ,接口举例,interface Painter public void paint(); public void eat(); class Teacher implements Singer,Painter private String name; Teacher(String name) = name; public String getName() return name; public void teach() System.out.println(“teaching“); public void sing() System.out.println(“teacher is singing“); public void sleep() System.out.println(“teacher is sleeping“); public void paint() System.out.println(“teacher is painting“); public void eat() System.out.println(“teacher is eating“); ,public class Test public static void main(String args) Singer s1 = new Student(“le“); s1.sing(); s1.sleep(); Singer s2 = new Teacher(“steven“); s2.sing(); s2.sleep(); Painter p1 = (Painter)s2; p1.eat(); p1.paint(); ,输出结果: student is singing student is sleeping teacher is singing teacher is sleeping teacher is eating teacher is painting,课堂练习,创建三个接口,使之各有两个方法。再创建一个新的接口,继承三者,并添加一个新方法。然后创建一个类,在实现此新接口的同时,继承一个实际的类。并为这个类写四个方法,每个方法分别以四个接口中的一个作为参数。在main()中,创建这个类的对象,然后将它作为参数传递给那四个方法。,总结,类与对象 对象在内存中的解析 方法的重载(overload) 关键字:this、static、以及他们与类之间的关系 package和import语句 继承 访问控制符 多态,java常用的类,String类与StringBuffer类的区别 8个基础数据类型包装类 java.lang包下的一些类的解读 比如Math类 Java API 查阅,java常用的类,String类与StringBuffer类的区别: 在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作。不可变类。 3.StringBuffer 也是对一串字符进行操作,但是可变类。,java常用的类,String类与StringBuffer类的区别: String: 是对象不是原始类型. 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去. String 是final类,即不能被继承. StringBuffer: 是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象 它只能通过构造函数来建立, StringBuffer sb = new StringBuffer(); note:不能通过付值符号对他进行付值. sb = “welcome to here!“;/error,java常用的类,String类与StringBuffer类的区别: 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer 中赋值的时候可以通过它的append方法. sb.append(“hello“); 字符串连接操作中StringBuffer的效率要比String高: String str = new String(“welcome to “); str += “here“; 的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后 再将StringBuffer toSting(); 这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣. 并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值. 这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.,java常用的类,String类与StringBuffer类的区别: 看看以下代码: 将26个英文字母重复加了5000次. 1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论