2-Java 编程基础.ppt_第1页
2-Java 编程基础.ppt_第2页
2-Java 编程基础.ppt_第3页
2-Java 编程基础.ppt_第4页
2-Java 编程基础.ppt_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

1、主讲教师: 李青 TEL:Email: LKJ0986 信息技术学院,JAVA编程,第二章,Java 编程基础,3,回顾,JVM是 Java 编程语言的核心。 Java 运行时环境 (JRE) 包含一方面与硬件交互、另一方面又与程序交互的 JVM。 Java是完全面向对象的语言,所有的实现必须放在类中。 main函数是Java应用程序执行的入口。 JDK可用于开发 Java 程序。,4,目标,掌握如何定义标识符 掌握 Java 的关键字 了解 Java 的基本类型 了解并掌握 String 类 掌握 Java 的程序控制流程 掌握数组的定义方法 掌握 java.lan

2、g.Math 类,5,注释,Java 语言提供三种类型的注释: /单行注释 /* 多行注释*/ /*文档注释*/,以 /* 开始,并以 */ 结束, 注释中的每一行都必须以 * 开始。 使用javadoc工具从源代码和文档注释中将信息取出,然后转换为HTML文件。,6,javadoc注释,javadoc命令只处理源文件中在类、接口定义、方法、变量、构造器之前的注释. 例:运行javadoc MyHelloworld.java,7,关键字2-1,原始数据类型 byte short int long float double char boolean 循环关键字 do while for brea

3、k continue,分支关键字 if else switch case default break 方法、变量和类修饰符 private public protected final static abstract synchronized volatile strictfp,8,关键字2-2,异常处理 try catch finally throw throws 对象相关关键字 new extends implements class instanceof this super,字面值常量 false true null 方法相关关键字 return void 包相关关键字 package

4、 import,9,标识符,在Java中标识符的命名必须符合以下规则: 字母(AZ、az)、特殊符号($、_)和数字(09) 第1个符号不能为数字 不能为关键词、true、false、null 区分大小写,表示指定给变量、方法和类的名称,以便编译器可唯一标识它们。,10,例题:,Which of the following identifiers are ILLEGAL? _underscore、5Interstate、Interstate5、_5_、point4、 5w、 A%、 thisPicture、$currentValue、OK、_23b、Y_123、 length、ab、if,11

5、,标识符,一般约定 表示常量的标识符全部大写,如RED 表示类名的标识符用大写字母开始,如MyCar 表示公有方法和实例变量的标识符用小写字母开始,后面的描述性词以大写开始,如getCurrentValue 表示私有或局部变量的标识符全部用小写字母,如next_value,12,分隔符,空白符 空格、换行符、制表符 分号 表示语句结束,或用于for循环语句中 逗号 变量之间的分隔 冒号 ? : /switch循环中的case语句 花括号 类体、方法体、复合语句(for/while/switch/if),13,基本数据类型,Java 共有八种基本数据类型: 四种整数类型(byte、short、i

6、nt、long) 两种浮点数类型(float、double) 一种字符类型(char) 一种布尔类型(boolean),14,整型数据类型,15,浮点型数据类型,16,字符数据类型,17,布尔数据类型,18,直接数(literal value),直接数就是直接显式赋给某个变量的 具体数值。共有7种类型的直接数: int型直接数(1, 1567) long型直接数(22L,22l) float型直接数(234.5F,1.3f) double型直接数(234.5 , 235.6D,11.0d) boolean型直接数(true, false) char型直接数(a, u000F) String型直

7、接数(“hello”),int score=99; long length=100L; float weight=14.12F; char sex=M; String name=“Tom”;,字符的16进制Unicode编码,19,引用类型,对象引用类型 数组引用类型 Student tom; tom=new Student(); int intArray=new int3; int age=18;,20,用new关键字创建对象,第一步:分配内存空间 第二步:初始化为其变量类型的默认值 第三步:调用构造方法 第四步:返回对象实例的引用 public class Sample byte memb

8、erV1; int memberV2; public Sample() memberV2=2; /构造方法 public static void main(String args)Sample s=new Sample(); ,堆区,Sample对象 memberV1(占1个字节,值为0) memberV2(占4个字节,值为2),引用变量S,21,将一种类型的数据转换为另一种类型的数据 操作数转换为同种类型,然后运算 整数型、实数型和字符型 表达形式: (类型) 操作数 应用场合 二元运算符的二个操作数类型不同 表达式值的类型与变量的类型不同 两种方法 隐型类型转换: 自动类型转换(系统完成)

9、 显型类型转换: 强制类型转换,类型转换 (Casting),22,基本类型安全转换规则,目标数据类型的位数不小于被转换的数据的数据类的位数,这样才是类型安全的转换,才不会丢失需要转换的信息。 基本数据类型 目标类型 byte short char intlongfloat double 高位转化为低位,必须进行强制类型转化 short和char之间的赋值总需要一个强制类型转化,byte b=1; int i=b; short s=(short)i; char c=(char)s;,int a=256; byte b=(byte)a; /数据溢出,变量b的值为0,23,隐型类型转换:自动类型转

10、换(系统完成) 宽化转换(widening conversion) byte j=60; short k=4; int l=31; long m=4l; long result=0l; result +=j-8; result *=k+2; result /=m+1; result -=l; result %=m;,类型转换 (casting),24,隐型类型转换:自动类型转换(系统完成) 类型转换表 源类型 转换后不会丢失数据的目的类型 byte short, char, int, long, float, double short char, int, long, float, doubl

11、e char int, long, float, double int long, float, double long float, double float double,类型转换 (casting),25,基本类型安全转换规则 例题: Which of the following lines will compile without warning or error,a) float f=1.3; b) char c=a; c) byte b=257; d) boolean b=null; e) int i=10; f) short s=1; char cs=s;,26,引用类型的类型转

12、换规则,子类赋值给父类,会自动进行类型转换。 父类赋值给子类,需要进行强制类型转换。,一个生物类型的引用变量可以引用任意一个其子类的实例。 一个动物类型的引用变量永远不能引用植物类型的实例。 一个动物类型的引用变量赋值给狗类型的引用变量,需要强制类型转换。,Animal animal; Cat cat; Dog dog; animal=cat; /编译成功 cat=animal; /编译出错 cat=(Cat)animal; /编译成功 dog=(Dog)cat; /编译出错,27,引用类型的类型转换规则 例题:What will happen if you attempt to compil

13、e and run the following code?,class Base class Sub extends Base public class Tester public static void main(String argv) Base b=new Sub(); Sub s= b; a) Compile and run without error b) Compile time Exception c) Runtime Exception,Sub s=(Sub)b;,28,第二章 Java语法基础,词法规则 数据类型 常量与变量 运算符和表达式 语句 数组和字符串,29,常量,程

14、序执行过程中,值保持不变的量 整型常量 实型常量 布尔型常量 字符型常量 字符串常量,30,常量,整型常量 常用十进制、八进制、十六进制表示 有正负号,31,常量,实型常量 双精度实数(double, 8个字节, 数字后加字母D或d) 浮点实数(float, 4个字节,数字后加字母F或f) 若无明确字母标识,则系统默认为双精度实数 两种表示方法 十进制: 数字和小数点组成,必须有小数点,例 0.12, .12, 12., 12.0 科学计数法: 123e3, 123E3, 0.4e8D, -5e9,32,常量,布尔型常量 true false,33,常量,字符型常量 用单引号括起来的单个字符

15、例: a, A, , , System.out.println(javar语言); System.out.println(javat语言); System.out.println(java语言); System.out.println(java语言); System.out.println(“”java语言“”); ,C:java Test java 言 语言 java 语言 java语言 java语言 “java语言” C:,36,变量,变量是在程序执行期间可根据需要经常变化的值 变量具有 3 个特性: 名称 : 标识符 初始值 :为其赋值或者是保留缺省值 作用域 : 在不同程序块中的可用性

16、及生命周期,37,变量定义,类型 变量名 =初值, 变量名=初值 类型: 基本数据类型或引用类型 int x, y, z; float a, b; char c1, c2, c3; double d1; boolean mycom;,38,变量的默认值,在创建一个类的对象时,Java 会自动为它的成员变量初始化 为默认值。 数值型变量的默认值(0) 字符型的默认值(u0000) 布尔型的默认值(false) 引用类型的默认值(null)。 一个数组变量的默认值(null) 数组的所有元素初始化为其相应类型的默认值。,public class Sample int v1; boolean v2;

17、 Sample v3; long v4=new long3; String v5=new String3; public static void main(String args) Sample sam=new Sample(); System.out.println(sam.v1); System.out.println(sam.v2); System.out.println(sam.v3); System.out.println(sam.v40); System.out.println(sam.v50); ,39,class MyClass 成员变量申明 public void aMeth

18、od(方法参数) 局部变量申明 ,成员变量 范围,方法参数 范围,局部变量 范围,变量的作用域,40,class Spot final static Spot st = new Spot(1, 2); int a, b; int Count; Spot(int a, int b) this.a = a; this.b = b; ,成员变量 a,b,Count 范围,方法参数 a,b 范围,变量的作用域,41,变量的作用域,class Scope int x; /成员变量 int y; /成员变量 Scope(int x) int y=2; int z=3; this.x=x; /this.x代

19、表成员变量x this.y=y; /this.y代表成员变量y x=0; y=0; ,public static void main(String args) Scope s=new Scope(1); System.out.println(s.x); System.out.println(s.y); System.out.println(s.z); /编译出错 ,42,变量的初始化,成员变量会自动初始化 局部变量必须显式初始化再使用,class Sample int v1; boolean v2; public static void main(String args) Sample s=n

20、ew Sample(); System.out.println(s.v1); System.out.println(s.v2); ,public void doComputation() int x = (int)(Math.random() * 100); int y; int z; if (x 50) y = 9; z = y + x; / Possible use before initialization ,43,算术运算符,44,自增、自减运算符,变量赋值,一元运算符 自增运算符(+)、自减运算符(-) int i=5; i+; +i; i-; -i; “赋值”和“运算”的先后顺序,

21、int i = 10; int n = i+%5;,float x =7, y=15, v1, v2; v1 = x+; v2 = +y;,int i = 10; int n = +i%5;,x=8 y=16 v1=7 v2=16,i = 11, n = 0,i = 11, n = 1,45,关系运算符,关系运算符用于测试两个操作数之间的关系。 关系表达式将返回一个布尔结果。,46,逻辑运算符,逻辑运算符与布尔操作数一起使用,所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。 例如: int i = 1; while(i=1) 上述程序段的

22、循环过程将i+语句循环执行100次。,47,位运算符,用于 int、short、long、byte 和 char 数据类型,48,赋值运算符,一次可以为多个变量赋值,如: int a = 20000; int p,q,r,s; p = q = r = s = a;,赋值运算符 (=) 用于为变量赋值,49,三元运算符 (?:),三元运算符 (? :) 可以替代 if-else 结构,class TernaryOp public static void main(String args) int salary,daysPresent = 30; salary = daysPresent = 20

23、 ? 2000 : 3000; System.out.println(您本月薪资为 $+salary); ,50,Instanceof 运算符,class InstanceOfDemo public static void main (String args ) InstanceOfDemo t = new InstanceOfDemo( ); if (t instanceof InstanceOfDemo) System.out.println (T是InstanceOfDemo 的实例); else System.out.println (T不是InstanceOfDemo 的实例!);

24、,可以确定对象是否属于一个特定的类,51,字符串操作符 例题:which of the following are valid?,String s1= Hello+ World; /s1= HelloWorld String s2=Age:+1; /s2= Age:1 String s3=Age:+new Integer(1); /s3= Age:1 String s4=Answer : +true; /s4= Answer:true String s5=Answer : +new Boolean(true); /s5= Answer:true String s6=5+1+ 1 +new In

25、teger(1)+ 2 +4+ new Long(11); String s7=5+new Integer(1)+ 2 +4+ new Long(11); /编译出错,表达式的执行步骤如下: (1)5+1 6 /数学加法操作符 (2)6+1 61 /字符串连接操作符 (3)61+new Integer(1) 611 /字符串连接操作符 (4)611+2 6112 /字符串连接操作符 (5)6112+4 61124 /字符串连接操作符 (6)61124+new Long(11) 6112411 /字符串连接操作符,52,操作符=,int a=1; int b=1; Integer int1=ne

26、w Integer(1); Integer int2=new Integer(1); Integer int3=int1; /int3和int1引用同一个对象 int array1=new int1; int array2=new int1; int array3=array1; /array3和array1引用同一个数组 System.out.println( a=b is +(a=b); System.out.println(int1=int2 is +( int1=int2); System.out.println(int1=int3 is +( int1=int3); System.o

27、ut.println(array1=array2 is +(array1=array2); System.out.println(array1=array3 is +(array1=array3);,程序打印结果如下: a=b is true int1=int2 is false int1=int3 is true array1=array2 is false array1=array3 is true,当操作符=两边都是引用类型变量时,这两个引用变量必须都引用同一 个对象,结果才为true。,53,equals()方法,equals()方法是在Object类中定义的方法,它的声明格式如下:

28、public boolean equals(Object obj) Object类的equals()方法的比较规则为:当参数obj引用的对象与当前对象为同一个对象,就返回true,否则返回false: public boolean equals(Object obj) if(this=obj)return true; else return false; ,Animal animal1=new Dog(); Animal animal2=new Cat(); Animal animal3=animal1; System.out.println(animal1 = animal2); /打印fa

29、lse System.out.println(animal1.equals(animal2); /打印false System.out.println(animal1 = animal3); /打印true System.out.println(animal1.equals(animal3); /打印true,54,equals()方法,在JDK中有一些类覆盖了Object类的equals()方法,它们的比较规则为:如果两个对象的类型一致,并且内容一致,则返回true。这些类包括:java.io.File、java.util.Date、java.lang.String、包装类(如java.la

30、ng.Integer和java.lang.Double类)。,Integer int1=new Integer(1); Integer int2=new Integer(1); String str1=new String(Hello); String str2=new String(Hello); System.out.println(int1=int2); /打印false System.out.println(int1.equals(int2); /打印true System.out.println(str1=str2); /打印false System.out.println(str1

31、.equals(str2); /打印true,55,区分和equals()方法 例题:Which of the following yields a boolean value of true.,Float f1 = new Float(10F); Float f2 = new Float(10F); Double d1 = new Double(10D); a) f1 = f2 b) f1.equals(f2) c) f2.equals(d1) d) f2.equals(new Float(10),56,运算符的优先级,后缀运算符 postfix operators . (params) e

32、xpr+ expr- 一元运算符 unary operators +expr -expr +expr -expr ! 构造或类型转换creation or cast new (type)expr 乘法 multiplicative * / % 加法 additive + - 移位 shift 关系 relational = instanceof 相等 equality = != 按位与 bitwise AND class Test public static void main(String args) throws IOException System.out.println(“请输入三个0

33、9之间的数); byte x = (byte)System.in.read(); byte y = (byte)System.in.read(); byte z = (byte)System.in.read(); x -= 48; y -= 48; z -= 48; byte n = xy? x : y; byte m = n z? n : z; System.out.println(“max= “+m); ,char 0 (48) char 1 (49) ,x=x-48; y=y-48; x=z-48;,C:java Test 请输入三个09之间的数 370 max= 7 C:,62,条件选

34、择语句,示例 import java.io.IOException; class Test public static void main(String args) throws IOException System.out.println(“中国足球能否进入世界杯?); System.out.println(“是(y) 否(n) 不一定(p); char c = (char) System.in.read(); if (c = y) System.out.println(“Cool”); else if (c = n) System.out.println(“Bad”); else if (

35、c = p) System.out.println(“Sorry”); else System.out.println(“Input Error”); ,逐条if语句进行判断 条件匹配,进入语句体 否则对if语句继续匹配,63,switch 选择语句,switch(表达式) case 常量值 1: 语句(组); break; case 常量值 2: 语句(组); break; case 常量值 N: 语句(组); break; default: 语句(组); ,表达式必须为byte,short,int或char类型,常量值必须是与表达式类型兼容的特定的一个常量 不允许有重复的case值,与任一

36、case值不匹配,则进入default语句,64,几点注意 switch语句表达式的结果必须是byte, char, short, int 类型 表达式的结果依次与每个case子句比较 break语句用于跳出switch语句 default子句是可选的,65,switch/开关语句,示例 1 import java.io.IOException; class Test public static void main(String args) throws IOException System.out.println(“中国足球能否进入世界杯?); System.out.println(“是(y

37、) 否(n) 不一定(p); char c = (char) System.in.read(); switch (c ) case y: System.out.println(“Cool”); break; case n: System.out.println(“Bad”); break; case p: System.out.println(“Sorry”); break; default: System.out.println(“Input Error”); break; ,66,示例 2,public class Test public static void main(String a

38、rgs) int month = 2, year = 2000; int numDays = 0; switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6:,case 9: case 11: numDays = 30; break; case 2: if (year % 4 = 0) ,switch/开关语句,67,循环,while 循环 while(条件) 语句组; do-while循环 do 语句组; while(条件); for

39、 循环 for(变量初始化; 条件; 递增或递减变量的值) 语句组; ,68,循环控制语句,while循环 语法 while (布尔表达式) 循环体; ,69,循环控制语句,示例 class Test public static void main(String args) int i, sum; sum = 0; i = 0; while (i java Test 输入一句子以.表示结束 fdsfs. Output = fdsfs. C:java Test 输入一句子以.表示结束 fdsf中国. Output = fdsf?. C:,72,循环控制语句,for循环: 最有效、最灵活的循环结构

40、 语法 for (初始化部分;条件判断部分;迭代因子) 循环体; 初始化部分 设置循环变量的初值 条件判断部分 任意布尔表达式 迭代因子 控制循环变量的增减,73,循环控制语句,for语句求07之间任意数的阶乘 import java.io.IOException; class Test public static void main(String args) throws IOException int i, n, sum=1; System.out.println(“Please input(07):”); n = System.in.read(); n -= 48; for (i = 1

41、; i java Test Please input(07): 5 5!=120 1.能否算09 2.能否算12, 134?,74,循环控制语句,for循环的几点注意 初始化部分和迭代因子可以包含多个语句,以“,”分开 for (int i=0, j=10; ij; i+, j-) 初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,表示无限循环 for ( ; ; ) / infinite loop . ,75,循环控制语句,如果一个人出生于1970年,那么他这一辈子能有几个闰年(以70岁为寿命长度) int length = 70; int firstYear = 1970; int year; for (int i =0; i length; i+) year = firstYear + i; if(year%4=0 ,1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 2028 2032 2036,76,循环控制语句,循环的嵌套 一个循环体内包含另一个完整的循环结构 嵌套的层次多,多重嵌套 while循环、do-while循环、for循环相互嵌套,77,循环控制语句,

温馨提示

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

评论

0/150

提交评论