《[互联网]CH01 Jaa语言基础.ppt》由会员分享,可在线阅读,更多相关《[互联网]CH01 Jaa语言基础.ppt(74页珍藏版)》请在三一办公上搜索。
1、主要内容:0.1 Java类库0.2 Java基本语法0.3 面向对象编程,CH0_1 Java语言基础,0.1 Java常用类库 程序开头以import java.*标出类库的名字,就可以直接引用该类库。,java.lang Java语言的基本描述,如:Integer,String注:java.lang不需要用import引用,(2)java.util 提供了一些实用例程,如:Stack,Hashtable,Date,(3)java.io 提供了标准输入/输出及文件例程,如:inputstream,outputstream,file,printStream,(4)java.awt 提供GUI
2、标准组件及接口,如:Button,Label,Textfield,(5)网络包,支持TCP/IP协议,提供了socket、URL等的编程。,(6)java.sql 数据库包.,例0-1:Java Application 实例import java.io.*;public class HelloWorldApplication public static void main(String args)System.out.println(Hello world!);,Java程序书写通用的注意问题(1)大小写敏感(2)的使用(3);的使用(4)注释 单行:/.多行:/*.*/,一.标识符(iden
3、tifier)关键字(reserved word)标识符:以字母 下划线或$符号开始,后跟上述三种符号和数字(0-9)大小写相关的,无最大长度的限制.(对于系统而言,只识别前255个字符,这主要与存储结构有关)关键字:由系统定义的字符串.abstract,break,byte,boolean,catch,case,class,char,continue,default,double,do,else,extends,false,final,float,for,finally,if,import,implements,int,interface,instanceof,long,length,nat
4、ive,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,while。java语言中的保留字均用小写字母表示。,0.2 Java基本语法,CH0_1 Java语言基础,二.数据类型 java语言的数据类型有简单类型和复合类型。简单数据类型包括:整数类型(Integer):byte,short,int(默认),long浮点类型(Floating):float,doub
5、le(默认)字符类型(Textual):char布尔类型(Logical):boolean 复合数据类型包括:classinterface数组字符串类型 String Unicode字符集 16位 065535,简单数据类型,1、数据类型,2、常数,整数 十进制整数 如 123,456,0 八进制整数 以0开头 如0123表示十进制数83,011表示十进制数9。十六进制整数 以0 x或0X开头 如0 x123表示十进制数291,0X12表示十进制数18。长整数必须用后缀L,实数 分为浮点数和双精度数 十进制数形式 由数字和小数点组成,且必须有小数点。如0.123,1.23,123.0 科学计数
6、法形式 如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。float型的值,必须在数字后加f或F,如1.23f。double型的值,可以在数字后加d或D,如1.23D。布尔数 只有两个值:ture与false,字符 字符常量用单引号,3、变量,变量声明格式:数据类型 变量名称=初始值;变量的声明与赋值 变量的作用域和生命期,4、常量 常量声明格式:final 数据类型 常量名称=初始值;,1不同类型数据间的优先关系如下:低-高byte,short,char-int-long-float-double2自动类型转换规则操作数1 类型操作数2 类型转换后byte、
7、short、char int intbyte、short、char、int long longbyte、short、char、int、long float floatbyte、short、char、int、long、float double double3强制类型转换高级数据要转换成低级数据,需用到强制类型转换,如:int i;byte b=(byte)i;/*把int型变量i强制转换为byte型*/,三.简单数据类型中各类型数据间的优先关系和相互转换,四.操作符 运算符“”表达式(算术、逻辑、关系)位运算,1、算术操作符,2、位操作符,3、赋值操作符,4、关系操作符,5、逻辑操作符,6、条件
8、操作符,?操作符 格式:条件表达式?表达式1:表达式2 如果为真,则执行,否则,.,7、操作符的优先级,五.流程控制 分支语句 if_else switch 循环语句 for while do-while break continue label return,1.if 语句 格式:if(boolean-expression)statement;功能:当boolean-expression为“真”时,执行statement。,分支语句,条件转移语句流程图,boolean-expression,statement,true,false,例0-2:产生一个0100间的随机数整数,判断其值是否超过6
9、0。使用方法:Math.random()可以产生一个双精度型(0,1)的随机数。,public class ran100 public static void main(String args)int s;s=(int)(Math.random()*100);if(s=60)System.out.println(“其值超过60”);if(s60)System.out.println(“其值小于60”);,2.if else 语句 格式:if(boolean-expression)statement1;else statement2;功能:当 boolean-expression为“真”时,执行
10、statement1;否则,执行statement 2。,条件转移语句流程图,boolean-expression,statement2,true,false,statement1,例0-3:产生一个0100间的随机数整数,判断其值是否超过60,如果在5559之间,则加到60。使用方法:Math.random()可以产生一个双精度型(0,1)的随机数。,public class ran100 public static void main(String args)int s,t;s=(int)(Math.random()*100);if(s=60)System.out.println(“其值超
11、过60:”+s);else if(s55)t=60-s;System.out.println(“其值小于60,加”+t+“分”);else System.out.println(“其值小于60:”+t);,3.switch 情况语句 格式:switch(expression)case value1:statement1;break;case value2:statement2;break;case valueN:statementN;break;default:defaultStatement;,情况语句流程图,条件,语句n,语句1,语句2,语句3,break,break,break,brea
12、k,例0-4:显示当前星期的汉字名称。使用方法:day.getDay()可以返回当前星期号。import java.util.Date;public class dateswitch public static void main(String args)Date day=new Date();int todays=day.getDay();,switch(todays)case 0:System.out.println(今天是星期日);break;case 1:System.out.println(今天是星期一);break;case 2:System.out.println(今天是星期二)
13、;break;case 3:System.out.println(今天是星期三);break;case 4:System.out.println(今天是星期四);break;case 5:System.out.println(今天是星期五);System.out.println(周末愉快);break;default:System.out.println(今天是星期六);break;,循环语句,1.for 语句 格式:for(initialization;termination;iteration)body;,for语句流程图,循环条件,循环体语句,真,假,初始化,变换的步伐,例0-5:打印1
14、00个0100间的随机数整数。使用方法:Math.random()可以产生一个双精度型(0,1)的随机数。,public class ran100 public static void main(String args)int s;for(int i=1;i=100;i+)s=(int)(Math.random()*100);System.out.println(s);,2.while 语句 格式:initialization while(termination)body;iteration;,while语句流程图,循环条件,循环体语句,真,假,初始化,变换的步伐,例0-6:打印100个010
15、0间的随机数整数。使用方法:Math.random()可以产生一个双精度型(0,1)的随机数。,public class ran100 public static void main(String args)int i,s;i=1;while(i=100)s=(int)(Math.random()*100);System.out.println(s);i+;,3.do-while 语句 格式:initializationdo body;iteration;while(termination);,do-while语句流程图,循环条件,循环体语句,假,初始化,变换的步伐,真,例0-7:打印100个
16、0100间的随机数整数。使用方法:Math.random()可以产生一个双精度型(0,1)的随机数。,public class ran100 public static void main(String args)int i,s;i=1;do s=(int)(Math.random()*100);System.out.println(s);i+;while(i=100),跳转语句,1.berak语句 格式:break 标号;功能:终止当前循环体(switch),转移到循环语句(switch)的下一条语句或标号处执行。2.continue 语句 格式:continue 标号;功能:跳过当前循环体
17、的剩余语句,转移到下一次循环或标号处执行。,3.return 语句 格式:return 返回值;功能:终止方法或程序的执行,将控制返回调用者。,public class prime public static void main(String args)int i=1,j;next_n:while(i=100)i+;for(j=2;ji;j+)if(i%j=0)continue next_n;System.out.println(i);,例0-8:打印2100间的素数。,六.String类,Java通过创建String类来处理字符串。1.利用String类构造方法生成String类字符串 格式
18、:String(String original)范例:String str=new String(This is a string);或 String str;str=This is a string;或 String str=This is a string;,格式:String(char value)范例:char valueA=I,l,o,v,e,b,o,o,k,!String strA=new String(valueA);String strB=new String(valueA,7,4);则:strA的值为I love book!strB的值为book,格式:String(byte
19、 value)范例:byte byteA=73,32,108,111,118,101,32,98,111,111,107,33 String strA=new String(byteA);则:strA的值为I love book!,2.String类的常用方法 常用方法参见JDK的API帮助 长度:int length()范例:String str=new String(This is a string);int len=str.length();则:len的值为16查找:int indexOf(int ch)int indexOf(int ch,int fromposition)int in
20、dexOf(string str)int indexOf(string str,int fromposition),比较 int compareTo(string anotherString)boolean equals(Object anObject)转换 byte getBytes()String toLowerCase()String toUpperCase()Static String valueOf(double d)替换 replace(char OldChar,char NewChar)连接 String concat(String str)分割 提取(略),public cla
21、ss Stringmethods1 public static void main(String args)String s=Hello;System.out.println(s=+s);System.out.println(s.length()=+s.length();String t=Hello;System.out.println(t=+t);System.out.println(s=t+(s=t);System.out.println(s.equals(t)=+s.equals(t);s=s.concat(Class!);System.out.println(s.concat(+Cla
22、ss!+)=+s);System.out.println(s=+s);System.out.println(s.substring(6)=+s.substring(6);System.out.println(s.substring(4,7)=+s.substring(4,7);System.out.println(s.charAt(4)=+s.charAt(4);,例0-9:,System.out.println(s.indexOf(+C+)=+s.indexOf(C);System.out.println(s.replace(,)=+s.replace(,);,运行结果:,七.数组 1.数组
23、声明格式:一维数组 arrayType arrayName;二维数组 arrayType arrayName;或:一维数组 arrayType arrayName;二维数组 arrayType arrayName;2.数组创建 一维数组的创建 A.数组元素为简单数据类型 静态初始化 格式:arrayType arrayName=element1,element2;arrayType arrayName=element1,element2;如:int samllPrimes=2,3,5,7,11,13;,动态初始化 格式:arrayName=new arrayTypearrayLength;ar
24、rayName=new arrayTypearrayLength;如:counts=new int 10;counts=new int 10;注:声明与创建可合并 如:int counts=new int 10;B.数组元素为复合数据类型 分两步:1)创建数据元素 格式:arrayName=new arrayTypearrayLength;2)为数据元素开辟存储空间 格式:arrayNamei=new arrayTypeparamList;i=0,paramList-1,例如:String stringArray;stringArray=new String3;stringArray0=new
25、 String(Welcome);stringArray1=new String(To);stringArray2=new String(Zhnejiang);二维数组的创建 A.数组元素为简单数据类型 静态初始化 例如:int samllPrimes=2,3,5,7,11,13,17;动态初始化 格式:arrayName=new arrayTypearraySize1arraySize2;例如:int a=new int 58;char ch1=new char10;/数组必须至少有一维,另一维可以以后定义。,B.数组元素为复合数据类型 先为数组的最高维分配引用空间,再依次为低维分配引用空间
26、,最后为每个数据元素分配存储空间。例如:String str=new String 2;str0=new String 2;str1=new String 3;str00=new String(Happy);str01=new String(Time);str10=new String(I);str11=new String(love);str01=new String(book!);,3.数组的操作 引用数组元素,下标从0开始。,例0-10 显示螺旋方阵,2 3 4 13 14 5 16 15 610 9 8 7,2 3 9 47 6 5,24 3,实现:外层循环一次转一圈,共循环(SIZE
27、+1)/2次。内层循环一次生成一条边。,0.3 面向对象编程1.面向对象的基本概念(1)对象:现实世界对象的模型化,用属性来维护对象的状态,用方法来实现对象的行为。例如:轿车即:对象由描述状态的属性和可用来实现行为的方法组成。,(3)类:不同的对象具有相同的特征(属性和方法)即:包含共有属性和方法的一组对象,称为类。例如:汽车类的实例化即可创建对象。,(2)方法:描述对象的行为,是对对象的操作的代码。例如:加速,继承性:一个对象获取另一个对象的特性的过程。可以实现代码复用。被继承的类:父类、基类 继承父类的类:子类 子类继承父类的状态和行为,也可以修改父类的状态和行为,同时增加自己特有的状态和
28、行为。C+中支持多重继承(一个类可以继承多个父类)。Java只支持单一继承。Java的基类是java.lang.Object。,(4)OOP(Oriented Object Program)的特点封装性:对象将变量和方法封装在一起,成为一个整体。使得对外部接口和误操作具有保护性。,多态性:一个接口可以用作多个用途,特定的用途由环境所确定。“一个接口 多个用途”。可以有二种方法实现:A.方法重载 一个类中有多个相同名字的方法,根据传递给他们 不同个数和类型的参数来决定使用哪个方法。编译时多态B.方法重写 子类重新实现父类的方法。运行时多态,0.3 面向对象编程1.面向对象的基本概念(4)OOP(
29、Oriented Object Program)的特点,2.对象 对象是类的实例化。2.1 实例,0.3 面向对象编程,实例 0-11:import java.awt.*;class generateObjectDemo Button b1,b2;/对象的说明public generateObjectDemo()b1=new Button(ok);b2=new Button();/对象的实例化 String b=b1.getLabel();b2.setLabel(cancel);/调用对象的方法public ststic void main(String args)generateObject
30、Demo gOD=new generateObjectDemo();,2.2 对象的实现 步骤:1.对象的声明 确定对象属于哪个类的实例 格式:className ObjectName;className可以是类库中的类,也可以是自定义的类。例如:generateObjectDemo gOD;2.对象的创建 为对象开辟内存空间 格式:ObjectNamenew className(参数表);例如:gOD=new generateObjectDemo();注:可以将上述2步合写。例如:generateObjectDemo gOD=new generateObjectDemo();,2.3 对象的
31、使用1)引用对象的成员变量 格式:对象名.成员变量名2)调用对象的方法 格式:对象名.方法名(参数表)注:有无返回值,0.3 面向对象编程 2.对象,3.类3.1 类的基本组成 一个类中通常包含属性(成员变量)和方法。class 类名 type 成员变量1;/定义属性变量(成员变量)type 方法1(参数表)方法体/定义方法/定义方法,0.3 面向对象编程,public class Rectangle/类说明int width,height;/定义成员变量Rectangle(int x,int y)width=x;height=y;/以上为构造方法 int getArea()int a;a=w
32、idth*height;return a;/方法getArea,public void drawRect()int i,j;for(i=width;i0;i-)for(j=height;j0;j-)System.out.print(#);System.out.println();/方法drawArea,例子0-12:,import java.io.*;class ObjectDemo/类说明 public static void main(String args)Rectangle r1;/对象说明 r1=new Rectangle(4,5);/对象初始化 System.out.println
33、(r1.getArea();r1.drawRect();/调用对象的方法,3.2 方法中的特殊关键字this:当前对象,用于指向当前的对象变量super:用来引用父类中的变量和方法,使用super关键字的格式:(1)super.成员变量 子类中访问父类的被隐藏的成员变量(2)super.重载方法名(参数)子类中访问父类的被重载的方法(3)super(参数列表)子类中访问父类的构造方法,0.3 面向对象编程,3.类3.2 方法中的特殊关键字例子0-13:/superDemo1.javaclass ThisMultiplyA int i,j;public ThisMultiplyA(int i,i
34、nt j)this.i=i;this.j=j;,0.3 面向对象编程,int multiply()return i*j;/end of class ThisMultiplyA class ThisMultiplyB extends ThisMultiplyA int i,k;public ThisMultiplyB(int i,int j,int k,int l)super(i,j);this.i=l;this.k=k;,void show()System.out.println(super.i=+super.i);System.out.println(i=+i);System.out.pri
35、ntln(j=+j);System.out.println(k=+k);int multiply(int x,int y)int temp=super.multiply();return temp*x*y;/end of class ThisMultiplyB,public class superDemo1 public static void main(String args)ThisMultiplyB child=new ThisMultiplyB(5,6,8,10);child.show();int m=child.multiply(child.i,child.k);System.out.println(m=+m);/end of class superDemo1,程序结果:super.i=5 i=10 j=6 k=8 m=2400,