这里是的小编为您带来的java 教学设计通用6篇,如果能帮助到您,小编的一切努力都是值得的。
Java定义格式:
1、数据类型的强制性转换语法:
(欲转换的数据类型)变量名称;
2、if语句的格式:
if(条件判断)
语句;
3、if语句的格式:
if(条件判断){ 语句1;
语句2;
…
语句3; }
4、if…else语句的格式:
if(判断条件){ 语句主体1; } else { 语句主体2; }
5、条件语句格式:
条件判断?表达式1:表达式2; 即:
If(条件判断){ 变量 x=表达式1; } Else { 变量x=表达式2; }
6、if…else if…else语句格式:
if(判断条件1){ 语句主体1; } else if(判断条件2){ 语句主体2; }
…
//多个else if语句 Else { 语句主体3; }
7、switch语句格式:
switch(表达式){ case 选择值1:语句主体1;
break;
case 选择值2:语句主体2;
break;
……
case 选择值n:语句主体n;
break;
default: 语句主体; }
8、while循环语句格式:
while(判断条件){ 语句1;
语句2; ……
语句n; }
9、do……while语句格式:
do { 语句1;
语句2;
……
语句n;
}while(判断条件)
10、for循环语句格式:
for(赋值初值:判断条件:赋值增减量){ 语句1;
……
语句n; }
11、break语句格式:
for(赋值初值:判断条件:赋值增减量){ 语句1;12、13、14、15、16、17、18、19、20、21、语句2; …….break;
……
//若执行break语句,此块内的语句都不再执行 语句n; } continue语句格式:
for(赋值初值:判断条件:赋值增减量){ 语句1;
语句2;
……
Continue;//若执行continue语句,此块内的语句不再执行
……
语句n; } 一维数组的声明与分配内存格式:
数据类型
数组名[];
//声明一维数组
数组名=new 数据类型[个数];
//分配内存给数组 声明数组的同时分配内存格式:
数据类型 数组名[]=new 数据类型[个数] 数组长度的取得格式: 数组名。length 数组初值的赋值格式:
数据类型 数组名[]={初值0,初值1,…,初值n}; 二维数组的声明格式: 数据类型 数组名[][];
数据名=new 数据类型[行的个数][列的个数]; 二维数组色声明及分配内存格式:
数据类型 数据名[][]=new 数据类型[行的个数][列的个数]; 二维数组初值的赋值格式:
数据类型 数组名={{第0行初值},{第1行初值},……
{第n行初值} };
取得二维数组的行数与特定行的元素的个数格式: 数组名。length
//取得数组的行数
数组名[行的索引].length
//取得特定行元素的个数 声明方法并定义内容格式:
返回值类型 方法名称(类型 参数1,类型 参数2,…){ 程序语句;
return 表达式;22、23、24、25、26、27、28、} 类的定义格式: cla 类名称 { 数据类型 属性;
……
返回值的数据类型 方法名称(参数1,参数2…){ 程序语句;
return 表达式; } } 对象的产生格式:
类名 对象名=new 类名();
访问对象中某个变量或方法格式: 访问对象:对象名称。属性名 访问方法:对象名称。方法名()封装类中的属性或方法格式:
封装属性:private 属性类型 属性名
封装方法:private 方法返回类型 方法名称(参数)构造方法的定义格式: cla 类名称 { 访问权限 类名称(类型1 参数1,类型2 参数2,…){
程序语句;
…
//构造方法没有返回值 } } 定义内部类格式:
标识符 cla 外部类名称 { //外部类的成员
标识符 cla 内部类的名称 {
//内部类的成员 } } 类的继承格式
cla父类
//定义父类 { } cla 子类 extends 父类
//用extends关键字实现类的继承 { 29、30、31、32、33、34、35、} Super调用父类中的属性或方法格式: super.父类中的属性; super.父类中的方法();
子类复写父类中的方法的格式: cla Super { 访问权限 方法返回值类型 方法1(参数1)
{ } } cla Sub extends Super { 访问权限 方法返回值类型 方法1(参数1)//复写父类中的方法
{ } } 抽象类的定义格式:
abstract cla 类名称
//定义抽象类 { 声明数据成员;
访问权限 返回值的数据类型 方法名称(参数…)
{ } abstract 返回值的数据类型 方法名称(参数…);
//定义抽象方法,在抽象方法里,没有定义处理的方式 } 接口的定义格式:
Interface 接口名称
//定义抽象类 { final 数据类型 成员名称=常量;
//数据成员必须赋初值
abstract 返回值的数据类型 方法名称(参数…);
//抽象方法,注意在抽象方法里,没有定义处理的方式 } 接口的实现格式:
cla 类名称 implements 接口A,接口B
//接口的实现 { …… } 接口的扩展格式:
Interface 子接口名称 extends 父接口1,父接口2,… { …… } 异常处理的语法格式: try 36、37、38、39、40、41、{ 要检查的程序语句;
… } catch(异常类 对象名称){ 异常发生时的处理语句; } finally { 一定会运行到的程序代码; } 抛出异常的语法格式: Throw 异常类实例对象; 由方法抛出异常格式:
方法名称(参数…)throws 异常类1,异常类2,… 编写自定义异常类格式:
cla 异常名称 extends Exception { …… } Package的声明格式: Package package名称; package的导入格式:
import package名称。类名称; 由键盘输入数据基本形式格式: Import java.io.*;Public cla cla_name
//类名 { Public static void main(String args[])throws IOException { BufferedReader buf;//声明buf为BufferedReader类的变量
String str;//声明str为String类型的变量
……
Buf=new BufferedReader(new InputStreamReader(System.in));//产生buf对象
Str=();
//读入字符串至buf …… } }
案例1 p6
联合编译运行多个JAVA程序
package pa001;
public cla meyhello {
} public static void main(String[] args){
} Hello1 hello1=new Hello1();hello1.show();Hello2 hello2=new Hello2();hello2.show();Hello3 hello3=new Hello3();hello3.show();
public cla Hello1 {
} public void show(){ } System.out.println(“功能程序1”);
JAVA(1-5章)知识总结 第一章初识JAVA
一、什么是程序 1.概念
为了让计算机执行某些操作或者解决某个问题而编写的一系列有序的指令的集合编写程序的工具,计算机语言,java就是其中一种。
2.JAVA发展史
1995年5月23日,Java语言诞生; 1996年1月,第一个JDK-JDK1.0诞生;
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术; 1996年9月,约8.3万个网页应用了JAVA技术来制作; 1997年2月18日,JDK1.1发布;
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录;
1997年9月,JavaDeveloperConnection社区成员超过十万; 1998年2月,JDK1.1被下载超过2,000,000次; 1998年12月8日,JAVA2企业平台J2EE发布;
1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版; 2000年5月8日,JDK1.3发布; 2000年5月29日,JDK1.4发布;
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机; 2001年9月24日,J2EE1.3发布;
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升;
2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0;
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;
2006年12月,SUN公司发布JRE6.0;
2009年4月7日Google App Engine开始支持Java;[8] 2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权; 2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP; 2011年7月28日,甲骨文发布java7.0的正式版;
2014年3月19日,甲骨文公司发布java8.0的正式版。太阳微系统(2010年被甲骨文公司收购
3、java的体系结构:
Java ME-->微型版 适用于手机,无线设备的开发 Java SE-->标准版 使用开发客户端程序 java EE-->企业版 适用服务器端程序
4、java语言的特点
1.面向对象
java是纯面向对象的语言 2.跨平台
针对每个操作系统,java都有特定的虚拟机 jvm java虚拟机 什么是jvm? 运行的过程
字节码-----》类装载器---》字节码验证器---》解析器----》执行 java虚拟机
3、java安全性比较高
4、java是简单化的
5、计算机语言机制
解释型:同声翻译,写一句解释一句 c++ Basic语言
编译型:利用专门的编译器针对特定的系统将源文件一次性编译 C语言
java语言两种同时兼备
java语言先将 java 的源文件编译成。cla 文件,此时可以说是 编译型。在jvm 运行的时候,先将字节码加载到内存中,读出一条指令,解释一条指令,执行一条指令。解释型
6、JDK和JRE JDK Java Development Kit java开发工具包 JRE Java Runtimes Environment java运行时环境
7、java的环境安装:
下载JDK
安装完成:会生成JDK JRE JDK目录:
bin目录:常用的jdk工具 lib目录:类库
include:一些与C链接时用到的文件 src.zip:源代码的压缩文件
配置环境变量:
指明java 的安装路径
JAVA_HOME: C:Program FilesJavajdk1.7.0_21 可以不设置(有可能你把java 的安装目录改了)指明java虚拟机要用到的类库
CLASS_PATH: %JAVA_HOME%libdt.jar;
C:Program FilesJavajdk1.7.0_21libtools.jar 指明系统在任一路径执行java 的命令 PATH %JAVA_HOME%bin
批处理文件:.exe
测试是否配置成功
出现的问题: 找不到无法加载主类
解决办法
在cla_path 中加上。;.表示当前目录。表示上一级目录
8、java的运行机制:
1、编写源文件。java2、编译源文件。cla3、运行 java平台上运行
9:、常见的错误:
1、类名与文件不同
2、引号、分号。10、注释
java注释:
单行注释://dhsajdal 多行注释:/*dsajdksajdksad */ 文档注释:/** dsadada*/ 第二章、JAVA基本语法
1、变量?
电脑使用内存来记忆数据 内存是如何存储的? 会根据不同的数据类型申请不同的内存空间
变量:一个数据存储空间的表示
不同的数据存入 具有不同的内存地址,相互独立的
2、堆栈结构
java中内存分为两种: 一种叫栈内存 堆内存 定义的基本数据类型都是在栈内存中,引用类型的变量 ps: Scanner in = new Scanner(System.in);堆内存中存放的是new创建的对象或者是数组
2、数据类型
基本数据类型 8种:
整型 byte short int long 1个字节 2个字节 4个字节 8个字节
1byte = 8b
2~8 2^16 65536 2^32 2^64
-2^7---2^7-1-2^15----2^15-1-2^31---2^31-1-2^63---2^63-1 字符型 char u000 空格
浮点型 float double 4个字节
8个字节 2^32 2^64-2^31---2^31-1-2^63---2^63-1 布尔型 boolean true false
8种数据类型的默认值
整型全部是0,boolean为false
引用数据类型-----------》所有的引用类型的默认值为:null
3、变量的命名规范
1、必须以:$ _ 字母开头
2、不能是用关键字
3、不能有特殊字符
4、首字母最好小写
5、区分大小写
6、驼峰命名 ps: helloWorld
4、数据类型的转换
1、隐式转换(自动类型转换)小转大:去尾巴
2、显式转换(强制类型转换)大转小:长尾巴 int b;float a = 5;b =(int)a;
1)boolean 不能转换成其他类型
2)byte、short、char之间不会互相转换,在计算之前都会转成int byte b= 10;char c = 10;
java运算符
1、算术运算符:+-* / %
2、赋值运算符:= +=-= *= /= ++--int a;a = 10;System.out.println(a);
a += b;a = a+b;
++ 在前 先+ 再运算 ++ 在后 先运算在+
--在前 先-再运算 ++ 在后 先运算在-ps:
int x = 10;int y = 8;
if((++x>y--)&(--y(y--)){
}
3、关系运算符:>=
4、逻辑运算符:& |!&& || &和&&的区别:
&----》不管boolean值是真还是假,都会把整个表达式执行完 &&---》也叫短路与,一假即为假,表达式不再运行
|和||的区别:
!取反
5、位运算符:& | ^ ~>>>>ps: 9&13
&-----按位与 只要有0那一位就为0 |-----按位或 只要有1那一位就为1 |-----异或 相同为0,不同为1 ~-----取反 +1 取反
9>>3
三目运算符:(表达式)?(表达式1):(表达式2)
(表达式)为boolean类型表达式
如果(表达式)结果为true 执行表达式1 否则 执行表达式2
引用数据类型-----------》所有的引用类型的默认值为:null
第三章、流程控制
控制语句:
1)顺序语句 2)分支语句 3)循环语句
分支语句:
if 和 switch
其中if使用布尔表达式或布尔值作为判断条件来进行分支控制 而switch则用于对整型值或字符串进行匹配,从而实现分支控制
switch(count){
default:
System.out.println(“罚写代码”);
break;
case 1:
System.out.println(“去参加夏令营”);
case 2:
System.out.println(“奖励一个电脑”);
case 3:
System.out.println(“奖励笔记本”);}
循环
循环语句一般包含4部分:初始化语句、循环条件、循环体、迭代语句 while 初始化语句
int count = 0;循环条件
while(count
System.out.println(“nihao”+count);
迭代语句
count++;} for 结构
a b c for(int i = 0;i
a----->b------->d------>c---->b----d do{ 循环体
}while(表达式);
while 和 do while的区别 首先,他们都是循环结构。do while 至少会被执行一次
while是先判断在执行 do while是先执行后判断
break continue 以及 return的区别 用在循环中:
break的作用是跳出当前循环
continue的作用跳出本次循环,执行下一次循环,不再执行continue后面的循环体代码
可以用的返回值 结束当前方法
第四章、数组
1.概念 1)数组是用来存储一组相同数据类型的数据
2)在数组中,他的类型是唯一。也就是说在一个数组中,只能存储同一种类型的数据
3)声明一个变量的时候是在内存中开辟一块空间,申明数组就是在内存中申请一串连续的空间
4)数组中保存任意数据类型(基本数据类型、引用数据类型)数组也是一种数据类型-------->引用数据类型
1、数组中的数据称为元素
2、不管有多少个元素。数组只有一个名字,也就是数组名
3、数组中的元素按照顺序排列编号,即下标
4、数组中的元素可以用下标来访问
5、数组有大小,在创建数组的时候就创建了大小,如果超出了数组的范围(xxx)java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常
2.数组的定义:
ps int a[];int[] a;这两种方式仅仅是申明了一个数组变量,所以并没有内存空间来存储数据,此时不能访问这个数组
boolean[] booleanArray;char[] charArray;String[] stringArray;对象数组
Student[] student
数组的创建:
数组名 = new 数组类型[数组的长度];ps a = new int[100];
这个数组的下标 : 0~99 数组的下标:0~数组的长度-1 获取数组的长度: 数组名。length a[0] 表示数组的第一个元素 a[99] 表示第一百个元素
数组的初始化:
分为两种: 静态初始化:
ps: int[] a ={1,2,3,4,5};动态初始化:
ps: int a = new int[5];a[0] = 1;
a[1] = 2;
....a[5] = 6;error: 或者通过循环赋值
数组的应用
1、输入五个人的成绩:求出平均分
2、创建一个数组,求最值
3、排序
Arrays.sort(num);系统提供的工具类Arrays 静态方法sort 默认的是升序排列 冒泡排序
4、数组的拷贝
1)将一个数组变量拷贝给另一个数组的变量,这两个数组的变量指向的同一个数组
2)将一个数组指定的元素,拷贝到另一个数组的指定位置,原数组不会发生改变 System.arraycopy(src, srcPos, dest, destPos, length)参数一:原数组 参数二:开始下标 参数三:目标数组
参数四:目标数组开始下标 参数五:拷贝的长度
数组的默认值:
基本数据和引用数据类型的默认值是一样的
多维数组: 二维定义:
int[][] a;int[][][] a;
int[][] a = new int[4][];当使用new来创建二维数组的时候,不必指定每一维数组的长度,只需要指定最左边的那个就行
多维数组的初始化: 静态初始化:
int[][] a = {{1,2},{1,2,3},{1,2,3,4}};动态初始化:
int[][] a = new int[3][];a[0] = new int[2];a[1] = new int[3];a[2] = new int[4];
a[0][0] = 1;String字符串 如何使用字符串? 1)定义初始化字符串 2)对字符串进行操作
注意:
String是一个字符串常量,被创建出来之后不能被修改
ps:String name=“aa”;name = name+“aa”;
怎么样实例化一个String对象呢?
1、通过字符串常量
ps: String str = “Hello world!”;
2、通过String类提供的构造方法
ps:String str1 = new String(“Hello world!”);String str5 = new String();定义了一个空字符串
String str5 = new String(bytes, offset, length)将一个byte数组变成一个String字符串
String字符创的应用:
1、字符串的长度
str.length();
2、String
字符创的比较
1)字符串1.equals(字符串2);str1.equals(str2)这个方法的返回值是:boolean 将逐个比较每一个字符(会比较大小写)2)字符串1.compareTo(字符串2);int count = (str2);方法的返回值是int 将逐个比较相同位置上的字符的Unicode码
如果完全相等方法返回0,如果发现不同的地方停止比较,如果比较的字符Unicode码大于被比较的,放回一个整数值,反之为负数 3)字符串1.equalsIgnoreCase(字符串2);忽略大小写的比较
3、字符串的连接
1)使用“+”将多个字符串链接到一起
其他数据类型和字符串以“+” 连接之后会变成一个字符串 2)字符串1.concat(字符串2);
4、字符串的其他常用方法:
indexOf----->从前往后取得查找字符串的下标,如果没有这个字符串,返回-1 str.indexOf(“a”, 3);参数二:从第几个下标开始查找
str.lastIndexOf(“a”);从后往前取得查找字符串的下标,如果没有这个字符串,返回-1 str.lastIndexOf(“a”, 3);str.substring(2);参数是从第n个下标开始截取,返回值为字符串
str.substring(str.length()-3, str.length()-1);参数为开始位置和结束位置
str.split(“@”);按照某个字符进行分割,返回一个String[] ();把字符串字母变成小写,返回一个新的字符串 ();大
();去掉字符串前后的空格,返回一个新的字符串
(“a”, “1”);替换 参数就是把旧的字符串替换成新的字符串 (“.java”);是否以指定的字符串结尾,返回值是boolean str.startsWith(“ac”); 开头,();把字符串转换成char[] str.charAt(3);将指定位置上的字符取出
---------------StringBuffer类
和String是相反的。StringBuffer的内容是可以改变 StringBuffer的实例化
StringBuffer sb = new StringBuffer(“aa”);常用方法:
append(“bb”);往缓冲区追加字符串 sb.length();获得长度
sb.insert(2, “mm”);往指定位置追加数据
();将所有字符前后互换。生成一个新的字符串 sb.charAt(2);将指定位置上的字符取出
StringBuffer是线程安全的在jdk1.5之后出了一个叫StringBuilder类线程不安全 如果不考虑线程问题尽量选择StringBuilder 速度更快 当数据量大的时候选择StringBuilder
System.currentTimeMillis();获取系统当前时间
String、StringBuffer、StringBuilder的区别?
String是一个字符串常量,被创建出来之后不能被修改,不存在线程安全问题。如果不考虑线程问题尽量选择StringBuilder 速度更快
当数据量大的时候选择StringBuilder 若数据量不大,而考虑安全性的情况下,选用StringBuffer 第五章、面向对象
面向对象(Object Oriented)把一个问题的处理过程按照构成问题的事物分解成对象,建立对象的目的不是为了完成整个过程中的一个步骤,而是为了描述某个事物 在整个解决问题的过程中的行为。它不是一种编程语言,而是一种编程方法,一种思维方式。它的三大特性:封装、继承、多态。
类
对某一类事物的描述,是抽象的,概念上的定义。对象是实际存在的该类事物的每一个个体,因而也成为实例。
对象
实际的个体。
一、package(包)与import(导入)(一)package的概念
包即是将一些类聚集在一起的一个空间域。(二)包的命名
包的命名中一般包含组织类型、组织名、项目名、类的分类名。一般与域名相反如:com.baidu.map;(三)包的作用
就像Windows中使用文件夹给文件分类一样,Java可以使用包将各个类进行分类。
在一个类里面只能有一个package。
注:package必须放在第一句有效代码。(四)import的作用
在一个类中使用另一个类,而两个类又不在同一个包中时,则需要使用import关键字通知计算机导入所需的类。
import语句应该出现在package语句(如果有)之后、类定义之前。导入类名时,需要写出包括包名在内的完整类名。
注:在一个类里面import可以有多个,import在package之后,类名之前。(五)import的两种导入类型机制(1)单类型导入
如:import java.util.Scanner;单类型导入仅仅导入import关键字后面的类名所指定的类。(2)按需类型导入
如:import java.util.*;它会导入包中所有的类,当然,也包括当前需使用的类。
二、类的封装
(一)概念
封装是面向对象三大特征之一,将对象的属性信息隐藏起来,不准外部程序直接访问。若外部需要访问,则须定义一个公共的方法来访问私有属性(二)访问修饰符(1)访问修饰符
public private protected 还有一个默认的什么都不写(有好的:default)(2)作用
访问修饰符可以修饰成员变量和方法,也可以修饰类。它限制了被修饰者的使用范围。
(3)访问控制级别
public:任何包中的任何类都可以访问,对外公开,访问级别最高。被public修饰的类、方法、属性可以被所有成员访问。private:同一个类中可以访问,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。protected:同一个类,同一个包,子类中可以访问。受保护的,对于子女(子类,可以在其他包中),朋友(同包)来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部cla,protected就变成private。default:同一个类,同一个包中可以访问。(无修饰符符)友好的,类的成员没有访问控制修饰符,只有该类的成员和当前包下其他类的成员可以访问。(三)对属性进行封装
就是将属性私有化,隐藏实现细节。提供公有方法访问私有属性 通过这些公有方法访问私有属性。
三、类的继承
(一)概念
继承也是面向对象的三大特征之一,它是基于现有的类(基类或父类)派生出新的类(派生类或子类)。子类可以有自己特有的方法和属性,也可以在父类方法的基础上去拓展(可以增加新的数据和功能),子类不能选择性地继承父类,子类可以继承父类所有的非私有的属性和方法。
注:子类只可以直接继承一个父类,且父类不能继承子类。(二)语法
访问修饰符(可不加)cla关键字 字类的类名 extends关键字基类的类名,加上后面的一对大括号。如: cla Dog extends Animal{ }(三)作用
继承有效的减少了重复代码。(四)方法的重载与方法的重写(1)方法的重载
⑴前提:在同一个类中。⑵概念:同名不同参。
同名:函数(方法)名相同,参数列表不同。⑶参数列表不同: ①参数类型不同 ②参数个数不同 ③两者都不同(2)方法的重写
⑴前提:必须是在有继承关系的基础上进行,子类重写父类的方法。
⑵概念:如果在子类中定义一个方法,其名称、返回类型及参数列表与父类中方法的名称、返回类型及参数完全一样,那么新方法被称做重写(Overriding)旧方法。方法重写又称方法覆盖。
(五)this和super关键字 ⑴this this表示当前活动对象本身,任何一个活动的对象都有一个默认的this指针指向自己。使用格式:
this.成员变量名; this.成员方法名
this([参数列表]);//构造方法
注:this必须在构造方法的第一句有效代码,且不能在静态中使用 ⑵super super表示当前活动对象的直接父类 使用格式:
super.成员变量名; super.成员方法名
super([参数列表]);//父类的构造方法
注:super必须在构造方法的第一句有效代码,且不能在静态中使用
四、多态
(一)概念
多态,也是面向对象三大特征顾名思义,多种状态。它是指面向对象程序运行时,相同的信息可能会送给多个不同的类型之对象,而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。Java中的多态
Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。当它们出现不一致时,就可能出现所谓的多态了。
多态体现在继承过程中也就是说子类和父类的相互类型转换。子类转换为父类称为向上转型,在创建对象时,对象既可以作为其本身的类进行引用也可以作为其父类型进行引用。也就是说将一个子类对象直接赋值给一个父类的引用变量,这种我们称为向上转型。
父类转换成子类,与向上类型相对应的这个父类对象作为其子类类型的引用时,这时候我们就说父类转换成子类了。父类转换成子类需要强制类型转换。也叫向下转型。
自动进行类型转换父类型 引用变量名=new 子类型(); 调用的方法是子类重写或继承父类的方法 无法调用子类特有的方法 强制类型转换
子类型 引用变量=new 父类类型();强转后才能访问子类特有的方法 继承关系的类型关系才能向下转型 A-B-C 其中A是父类,B是它的两个子类。B-A-B是可以运行的 B-A-C? 经实践发现:语法上没有问题,运行时会出错。B-A:是把子类B的对象赋值给父类A向上转型 B(A)-C:把父类B转化成子类C 向下转型
子类B是伪装的父类,在编译时没有问题,但是B和C没有继承关系,所以在运行时会出错。
接口(Interface)
implements 一。抽象类 1.概念
用abstract关键字来修饰一个类时,该类叫做抽象类。若使用抽象类,则必须被继承。
抽象类不能被直接实例化,它只能被继承,作为其它类的超类,这一点与最终类(final类)正好相反 2.格式
abstract cla 类名{ abstract void 方法名(){ } } 3.抽象方法
用abstract关键字来修饰一个方法时,该方法叫做抽象方法。抽象方法不能有实现的方法体,它必须被重写,定义了抽象方法的类必须是抽象类
⑴抽象方法必须被重写。⑵抽象方法只有声明,不能有实现。⑶定义了抽象方法的类必须是抽象类
4.作用
很多时候,父类只能明确子类有哪些行为(方法),但是不能准确的知道子类是如何做的。
二、接口 1.概念
只具有抽象方法的抽象类
三、接口的特点
接口不能被类继承(extends),只能被类实现(implements); 一个类可以实现多个接口;
实现接口的为抽象类。类必须实现接口中的所有方法。
在类中实现接口中定义的方法时,不能比接口中定义的方法有更低的访问权限。因此,被实现的接口方法必须用public修饰。格式
访问修饰符 Interface 接口名{ } 接口也可像定义类一样实现继承,但接口只能继承接口,不能继承任何类。接口是多继承的。
访问修饰符 Interface 接口名 extends 父借口名1,父借口名2...{ } 7.接口的成员变量必须被初始化,成员方法只能有声明不能有实现。
四、接口的实现
[修饰符] cla 类名 extends 父类名 implements 接口1, 接口2„{ //实现接口的方法 } 1.接口是可以被“多实现”的,一个类可以实现多个接口;
2.接口的实现不影响类的继承,接口的实现使用implements关键字; 3.接口之间的继承使用extends,而不是implements。
五、抽象类和接口的区别
1.抽象类可以有实现的方法,也可以有抽象方法,接口只有抽象方法 2.职能的区别:抽象类是作为父类有关联性的,而接口是无关联性 3.抽象类可以继承可以实现,接口只能继承接口
4.有抽象方法的类一定是抽象类,抽象类不是必须有抽象方法
5.非抽象子类必须重新抽象父类中的所有的抽象方法,而抽象子类则不必
六、按值传递和按引用传递的区别
值传递:传递的是副本,本身没发生改变
引用传递:传递的是本身,内外改变是一致的(本质就是传递的内存地址)final修饰的类不能被继承,被其修饰的方法不能被重写,被其修饰的变量的值不能被修改,即为常量。
七、内部类
1.概念 定义在其他类内部的类叫做内部类,也叫嵌入类
内部类是指定在另一个类内部的类,它是java中一种非常有用的特性
2.类型
内部类共包括四种类型:非静态内部类、静态内部类、局部内部类、匿名内部类。最初,它看起来就像是一种代码隐藏机制,但是内部类的作用远不止如此,通过内部类,可以访问外部类的所有私有成员,可以使得代码更加优雅清晰,还使得重继承解决方案更加完整等。3.格式
cla关键字类名{ cla关键字类名{
} } 4.成员内部类根据访问权限的不同又可以划分为静态内部类和非静态内部类。
⑴还有一种特殊的内部类叫做匿名内部类,这种内部类比较特殊它仅仅适合被使用一次的类。也就是说在程序运行中仅仅被使用一次即刻消亡。必须继承一个父类或一个借口
⑵非静态内部类:无static修饰的内部类。
⑶静态内部类(类内部类):被static修饰的内部类 ⑷局部内部类:定义在成员方法中的内部类,不能使用static或访问控制符修饰。局部内部类不能用访问控制符来修饰如public、private也不能用static来修饰。同理局部内部类不能在外部类以外的地方使用。对于局部成员而言,无论是局部变量或者是局部内部类他们的上一级程序都是方法或代码块,而不是类。所以局部成员的作用域仅仅是所在的方法或代码块。其他的程序单元也就不能访问到它们。
5.静态内部类的使用
外部类。内部类 类名=new 外部类。内部类();
《JAVA程序设计》课程教学模式改革的思考
[摘要]为适应职业教育改革发展需要,针对Java课程的教学做一些思考。在教学方法上做到灌输式教学向导向式教学的改变,并且在授课过程中体现项目驱动的方式,加强实践教学环节的实施和监控,切实做到对java应用能力的培养。
[关键词]java 教学方法 实践教学 应用能力
中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1020139-01
Java是1995年由Sun公司组织开发的一种编程语言,其所具备的简单性、跨平台、面向对象、多线程等特点,已经成为当今世界面向对象程序设计的主流。目前,各大高校都开设了《JAVA程序设计》相关课程,考虑到Java 语言的实践性强和开发环境的特殊,结合职业教育改革的发展需要,本人针对该门课程的教学模式改革做了一些思考。
一、传统灌输式教学向导向式教学的转变
在传统的教学过程中,大都是以理论知识灌输和教师为主体,学生学习非常被动。这种方式的教学在很大程度上限制了学生主观能动性的发挥,从而使得课堂气氛沉闷,学生上课走神,最终导致教学效果不理想。随着《国务院关于大力推进职业教育改革与发展的决定》,“以学生为主体,以教师为主导”的新型教育模式被提了出来,这种教育模式要求学校和教师把学生放到应有的学习主体的地位上,充分地发挥教师教导与引导的主动性和学生自主学习的主观能动性,真正达到教学相长,师生互动,寓教于乐,学生自悟与自觉的高水平教育境界,培养德、智、体、美全面发展的具有行动能力和创造能力的高层次社会人才。“互动式教学”、“参与式教学”、“研究型学习”等新的教学方法应运而生。为了培养学生学习兴趣和积极性,切实培养学生使用java语言进行程序开发的能力,所以在教学过程必须打破传统教育教学方式,做好导向式教学。为了更好地体现导向式教学,我将整个教学环节进行了调整,授课过程中更多地增加了提问、小组讨论、实践练习等。例如在讲述java基础语法知识时,我采用与C语言进行对比的方式,列出问题,给出测试题目。引导学生带着问题,自己看书,并通过小测验,加强对理论知识的理解和掌握。
二、项目驱动式方法贯穿整个教学过程
项目驱动教学法作为教育领域中一种比较新的教育教学方法,近年来我国教育界开始吸收并实践这一教学方法。结合职业教育特点和java语言在软件开发中的广泛应用,在此课程的讲授过程中,项目驱动始终贯穿其中。
(一)准备阶段
首先参照企业开发模式将学生划分成小组,确定组长后,由各组组长进行管理。然后根据学生语言基础能力和兴趣,确定企业实际项目。
(二)实施阶段
根据java程序设计大纲所规定的能力单元,将项目切分,渗透到各个相关知识点的讲授中。例如在讲授面向对象基础知识时,有了继承、封装、多态的概念继承,讲到类的定义,就可以要求学生将实际项目中所涉及的各个cla文件创建出来,为后期开发做准备。后面讲授多线程、I/O流、图形界面、网络编程、数据库操作等,在实践练习环节都引入实际项目的分模块开发,从而提高教学的深度和广度,在一定程度上也激发学生的积极性和知识扩展性,充分调动学生兴趣,提高教学质量。
(三)检查阶段
在整个教学过程结束后,一个较完整的项目就开发出来了。对此,小组组长要对各组员的项目结果进行检查,教师要对各小组的项目质量进行检查。工作结果要按照预定的目标来进行自我和相互的检查并判断达到的效果如何。此过程锻炼学生的责任心、质量意识及评估方法。同时,教师除对工作计划以内的内容进行检查外,还应对质量保证情况进行检查。
(四)评估阶段
最后,学生完成工作评定,教师完成最终评估。首先学生自己对所做的工作进行工作评定,包括项目的准备、项目实施过程中解决的各种疑难问题、自己所负模块的效果等各方面进行总结;然后指导教师进行最后的工作总结、成绩评定,并找出差距和改正办法。
三、加强实践教学环节的实施与监控
根据《java程序设计》课程的特点,在授课过程中,着重突出学生动手能力的培养,因此该门课程的理论和实践课时比为1:1,授课地点都在机房。但通过听取其他同事对java课程的讲授和对学过java课程的学生的调查,发现很多教师在授课过程中,虽然加重了实践课时的比例,由于对实践环节的落实和监控力度不够,最终导致学生的动手能力没有得到很大很好的提高和改善。因此在教学过程中一定要切实落实实践教学环节的展开,并在实践教学环节中加强学生实践练习的过程和结果的监控反馈力度。采取分组管理的方式,由教师对组长,组长对小组成员进行监督、控制的方式,切实保证教学实践环节人人参与的目标。最后组长要根据各组实践练习情况写出书面总结报告,教师根据各组情况针对集中存在的问题进行反馈。
四、总结
总之,Java教学一定要围绕提高学生实践应用能力展开,注重面向对象编程思想的培养,真正做到培养符合职业教育要求,符合社会需求的实用性人才。教学过程中注重导向式教学,以项目驱动贯穿整个教学过程,并加强实践教学环节的实施与监控力度,这是本人对Java程序教学的几点思考,希望能够抛砖引玉,最终取得良好的教学效果。
参考文献:
[1]郑莉,计算机入门语言讲什么?[J].计算机教育,2006(07),25-26.[2]朱平,Java程序设计教学[J].湖北教育学院学报,2006,23(02),46-48.[3]孙伟,《Java程序设计》课程的教学改革与实践[J].计算机时代,2005(11),84-86.[4]张孝祥,Java就业培训教程[M].北京:清华大学出版社,2003.[5]张哲,陈桂生,在Java语言教学中实施“项目驱动”教学法的实践探索[J].教育与职业,2007年18期。作者简介:
李桂珍,女,汉族,山东德州人,北京工业大学在职研究生,新疆农业职业技术学院软件技术学院助教,研究方向:软件技术;李欣,北京工业大学工程硕士,在读,助教,软件技术方向。
《java程序设计》多媒体双语教学总结
计算机与信息工程系
2008~2009双语课程
2001年9月教育部《关于加强高等学校本科教育工作,提高教学质量的若干意见》指出:为适应经济全球化和科技革命的挑战,本科教育要创造条件使用外语进行公共课和专业课教学。对高科技领域的生物技术、信息技术等专业力争3年内,外语教学课程达到所开课程的5%-10%。
我校双语教学起步较晚,对于计算机专业,目前主流的编程语言的语义均来自于英文,国际上最先进、前沿的计算机技术大都用英文论述,最新的编程框架90%以上是用英文论述或注释。计算机专业的双语教学,不仅是对现行教学方法的一次探索,也是培养高素质双语计算机人才的重要途径之一。为将我院本科各专业学生培养成富有创新思想、开拓能力,具有国际视野和知识的高素质人才,我2008年9月开始担任本课程的双语教学工作,结合过去一个学期的教学经验,现对本课程的意义、多媒体双语教学应具备的条件、应注意的问题、存在问题和应采用的措施等方面作一总结
1、本课程采用多媒体双语教学的意义
(1)作为基础外语教学的延伸,提高学生的专业外语水平,并为学生毕业后从事科研、生产和经济建设活动服务,从而提高学生面向市场的竞争能力。(2)吸收国外教材中的先进成分,学习国外科学家开展科学研究、参加工程实践和面向市场经济的务实态度和献身精神,培养具有强烈创新意识和实际创新能力的人才。所选择的图像处理技术国外教材特别注重理论和实践的结合,在内容安排、习题的选择和工程项目的举例等方面均很有特色。
(3)为部分后续课程的学习提供新的平台。本课程承前启后,本科生,以及将来学生深入学习,进入研究生课程都与它有密切关联。(4)利于学生的毕业论文利用新的外文资料。
(5)展多媒体双语教学有利于提高师资素质,培养青年教师后备队伍,使他们树立起“面向世界”、“赶超世界先进水平”的观念。
(6)课程的研究还有利于加强国际交流和合作,为今后培养留学生、国外访问学者打下基础。本课程多媒体双语教学已具备的条件
java程序设计是理论性和实用性都很强的学科。java编程语言和编程平台都起源于西方国家,为了缩小我国在本学科的研究水平与国际上的差距,国内的部分著名大学开始选用国外的原版或影印教材。
为了适应现代化教学、与国内名牌院校和国外大学教学水平接轨的要求,本课程逐步实行多媒体双语教学,已具备的条件如下:
(1)任课教师对该课程教学熟悉,有良好的外语口语和书写表达能力。(2)由于课程属于专业课程,学生的专业知识和外语水平较好,条件比较成熟。(3)选择了近年来国外优秀的图像处理原版或影印教材。(4)选择难度适中的中英文参考书。(5)以多媒体课件加大课堂教学的信息量。
(6)先实行外语教材、外文课件、中文授课,逐步过渡到全英文教学。3 本课程在教学工作中的具体实施
(1)教材和参考书的选择。教材选用原版英文教材或影印教材。参考书以中文书为主,适当选择一些英文参考资料,中英文参考书相互补充,便于学生加深对课程的理解和中英文表达方式的对照。例如,选择《Introduction to java programming》(6 edition),本教材有相应的中文译本,而且被机械工业出版社入选为《国外优秀计算机科学与技术系列教学用书》.相辅助的参考书有《 Thinking in java》《java how to program》等,都有对应中文参考书并全部被列为经典原版教材,多数院校经久使用。
(2)中英文教材在内容、体系上的异同。对现有中文教材和原版外文教材的教学大纲进行比较分析,以实现不同语种教材间的互补。列出重点掌握的专业词汇对照
(3)英文的习题和试题的命题
本课程使用英文作业和试卷考核形式,这是把握教学质量的重要环节,是分析教学实际效果的重要依据。这方面没有现成的经验可遵循,必须探索。示例作业和英文试卷见后面附录A、B。4 双语教学效果
鉴于目前我院师资情况,双语课程只是在部分班级开设,即使同一年级同专业的各班之间也不是全部开设。同时我们本着实事求是的原则,谨慎推进双语教学。通过对双语教学课程学生反馈信息的总结,可以确定双语教学的开展产生了如下效果。
(1)学生不仅掌握了相关课程的基本概念和基本理论知识,而且通过双语学习掌握了准确系统的英语专业表达方式。提高专业英文的阅读能力和自学能力。
(2)通过课堂提问,书面作业等形式的教学方法,初步培养了学生用外语进行专业交流的能力,增强了学生开口说,动手写的热情,提供了学生与老师间进行专业交流的平台,提升了学生的综合素质。
(3)在本课程学习的基础上,学生在毕业论文设计初期可以充分,自由的利用新的外文资料。
(4)为学生毕业后从事科研、生产和经济建设活动服务,从而提高学生面向市场的竞争能力。
5、本课程在教学过程中存在的问题
从学生外语能力来看,由于大多数学生口语表达能力和听力较差,特定题材的英文写作能力较弱,限制了老师和学生的知识沟通,使双语教学停留在老师语言表达较为简单、专业词汇较为基础的层面上,导致更进一步的知识传授与探讨无法顺利进行。影响了双语教学的效果。
从教师的授课内容来看,由于双语教学开展时间较短,授课教师教学经验不足,出现了教师的讲授更多停留在英文教材的书面表述上;
从课件准备上看,为了更好地阐述和传授英文教材中的专业知识,授课教师在课件中大多使用全英文专业词汇,部分使用了英文单词的缩写形式,考虑到中国学生的知识背景和英文认知能力,部分学生对授课教师课件中的这些内容难以理解和接受。本课程在实施中为解决问题所采用的应对措施(1)教学与科研相结合 将科研成果结合到教学当中去,以增强学生的学习兴趣和求知欲望。也可以在本科毕业设计中指导学生进行java程序设计方面课题的较为深入的研究,使他们在实践中加深对所学知识的理解。同时对教学和科研都有相应的促进作用。目前我所代09届毕业生10名,有一半的学生使用java结合IDE和服务器软件做毕业设计,这说明教学的知识可以充分的应用到实践中去。(2)传统教学方法与多媒体课件相结合现代的多媒体技术虽然所包含的信息量大,形式多样,但是并不能完全代替传统的教学方法,靠课件往往在速度上和表达的准确性上难以奏效,教师的口头表达以及在黑板上书写显得更为方便。(3)中文教授和英文讲授相结合在专业语言表达上,中英文存在一定的差异,针对学生英语水平的现状,全英文讲授将导致教学效果不好。针对学生的现状,收集学生对教学效果的反馈意见,采用英文教案和多媒体课件,课堂上主要以中文讲授为主,适当穿插英文专业术语效果较好。只有在条件成熟时才能适当采用全英文教学。(4)教师指导与优秀本科生和研究生参加教改相结合下一步打算,吸收部分优秀本科生参与课件制作,通过与学生交互,收集反馈意见,提升教学质量,并可以提高学生学习兴趣。7 结论
总之,双语教学对高校而言,是一种新的实践,它必然要经过一个从不成熟到成熟的过程。本课程在实际教学过程中取得了一定的教学效果,同时也存在一定的问题,应当在今后的实践中积极探索,及时总结经验,采取积极有效的措施,促进双语教学工作的顺利进行。附录A Test paper B 附录B homework
实验项目七
1、实验项目名称: 监听和过滤
2、实验项目性质:验证性
3、实验要求:必修
4、计划学时数:2学时
5、实验内容:
(1).实现网上书店项目后台管理用户的过滤功能。具体要求如下:
禁止用户非法访问,只有登录成功才能访问后台页面。
没有登录,直接访问后台其他页面,将跳转到登录页面。
(2).在网上书店项目中增加监听功能,当用户登录成功时自动更新数据库中该用户的登录次数。
(3).实现网上书店项目后台图书管理中的修改图书信息功能模块。具体要求如下: 在图书管理页面bookManager.jsp中,单击“修改图书信息”按钮,对选定的图书进行修改。
一次只能修改一本图书信息。
修改页面中显示图书的原有数据。
图书ISBN不可修改。
(4).实现网上书店项目后台用户管理中的修改用户信息功能模块。具体要求如下: 在用户管理页面userManager.jsp页面中,单击“修改用户信息”按钮,对选定的用户信息进行修改。
一次只能修改一个用户信息。
修改页面中显示该用户原有信息。
用户名不可修改。
根据第七章所学内容以及上机实践情况,在实验报告中完成以下问题。
(1).编写一个过滤器,名称为ForceNoCacheFilter,通过使用此过滤器使浏览器不缓存任何页面。在实验报告中给出其中的关键代码。
(2).画图说明Servlet上下文监听器的工作流程。
6、项目需用仪器设备名称: 计算机
7、所需主要元器件及耗材:无
8、实验项目目的和任务:
(1).了解监听器原理及生命周期中的方法。
(2).掌握Servlet上下文监听。掌握HTTP会话监听。了解请求监听。
(3).理解过滤器原理及生命周期。掌握实现一个过滤器的步骤。了解过滤器链。