java的基本概念.ppt
第1章 预备知识,1.1 为什么要使用Java?1.2 Java的开发环境及其设置1.3 Java语言的数据类型1.4 Java程序中的标识符、关键字和分隔符1.5 Java中变量的作用范围1.6 小结,1.1 为什么要使用Java,简单的Java语言的简单性主要体现在三个方面:1.Java的风格类似于C+,从某种意义上讲,是C与C+的一个变种,因此,C+程序员可以很快掌握Java。2.Java摒弃了C+中容易引发程序错误的特征,如:指针、结构以及内存管理等。3.Java中提供了丰富的类库,可以帮助我们很方便的开发Java程序。,面向对象的 面向对象可以说是Java最重要的特征,所以它支持封装、继承、多态等面向对象的特征。Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。,健壮的 Java也是一种强类型的语言,其类型检查比C+还要严格,可以帮助我们检查出许多开发早期出现的错误。Java自己负责内存管理,提供了垃圾内存回收机制,有效的避免了C+中最头疼的内存泄露问题。,安全的 一方面,在Java语言里,删除了指针和释放内存等C+功能,避免了非法内存操作。另一方面,通过Java的安全体系架构来确保Java代码的安全性。当我们能从网上下载Java代码在本地执行时,Java的安全架构能确保恶意的代码不能随意访问我们本地计算机资源。例如,删除文件,访问本地网络资源等操作都是被禁止的。,解释的 Java代码是解释执行的,我们使用Java编译器将Java代码编译成字节码,这是一种中间代码,然后由Java解释器解释执行。,例:一个java源文件,文件名为Mytest.java编译程序:javac Mytest.java运行程序:java Mytest,与平台无关的 Java作为一种网络语言,其源代码被编译成一种结构中立的中间文件格式。只要有Java运行的系统都能执行这种中间代码(字节码)。Java源程序被编译成一种与机器无关的字节码格式,在Java虚拟机(JVM)上运行。,多线程的 Java语言的一个重要特性就是支持多线程的程序设计。多线程就好像我们做一张桌子,如果你一个人完成这张桌子-就好像单线程,那么你需要先做桌面,做完桌面后,再做4个桌子腿,如果现在有5个人来做桌子-在程序中开辟5个线程,其中1个人做桌面,另外4个人做桌子腿,效率将大大提高。,1.2 Java的开发环境及其设置,一.开发环境JDK 1996年,sun公司的Java 1.0版本正式推出。Java的早期版本成为JDK(Java Development Kit),如JDK 1.0,JDK 1.02,JDK 1.1.5等。1999年升级为1.2版,并改称为JAVA 2。2000年9月升级为1.3版,2001年7月推出了1.4版。,本书所讲的程序可在该环境下编译和运行,所使用的具体版本是。若没有改变安装路径,则安装在c:j2sdk1.4.2目录下,该目录下有个子目录bin,编译和运行Java程序的命令都在该目录下。,例:编译并运行以下程序public class Mytestpublic static void main(String args)System.out.println(Welcome to Beijing!);,文件的编辑:,记事本,ultraedit,二、环境变量的设置 在编译和运行java源程序的时候,需用到java.exe和javac.exe命令,它们默认在c:j2sdk1.4.2bin目录下。,途径1:在命令行键入 set path=c:j2sdk1.4.2bin,缺点:设置只在当前dos窗口有效。,途径2:设置系统环境变量,“我的电脑”-“属性”-“高级”-“环境变量”-“系统变量”,1.3 Java语言的数据类型,整数类型 byte、short、int、long,数据类型,简单数据类型,复合数据类型,数值类型,字符型 char,布尔类型 boolean,浮点类型 float、double,类 class,接口类型 interface,数组类型,表1 Java语言的基本数据类型,1整型 Java语言的整型数据与C/C+相似,按照存储位的不同,分为byte、short、int、long四种,分别表示从8位到64位的整数。,其中,int和long类型是最常用的类型,而byte类型经常用在字节码数据中,比如网络传输数据或进行二进制数据的输入/输出时。由于short类型在使用时要求数据的存储须先高字节后低字节,在某些机器中可能会出错,故使用较少。,表1-2 整型数属性表,Java的整数可以用十进制、八进制和十六进制来表示:八进制数以0打头:数字字符为07;十六进制数用0 x(0X)打头:数字字符为09、af或AF。,例如:78.69L、011、0 x1234等都表示一个整型常量。,一个整型数隐含为int型,如果需要long类型的数,必须在该数后加上字母l(L)。,2浮点型 Java的浮点类型分为两种:单精度浮点数和双精度浮点数,分别用关键字float和double来表示。,表1-3 实型数属性表,浮点数的隐含类型为double型,当我们要定义一个float型的数时,必须在该数后加字母f,告诉编译器该数为float类型。,判断下列语句是否正确:float a1=1.2f;float a2=3.5;double a3=4.6d;double a4=2.0;,注意:不管是double型还是float型,当对实数使用比较运算符“=”时,由于精度的取值问题,必须小心使用。,3字符型 占两个字节内存。,下面用关键字char定义一个字符变量:char a1=b;char a2=98;(不提倡),同C/C+相同,Java字符集中一些不能显示的控制字符可以用转义序列来表示,如表2.3所示。,表1-4 转义字符表,4布尔型 Java中布尔型变量只有两个值:真(true)或假(false)。,例2.While(ture/false),例1.boolean sign=true;,与C/C+不同,布尔型数据是独立的数据类型,所以既不能将整数值赋给布尔变量,也不能将布尔类型的数转换成整型或其他类型。,类型转换,规则:表示数的范围小的数据类型可以自动向表示数的范围大的类型转换,反之则必须强制转换。,表1-5 数据类型自动转换的规则,例如:long longVar=12345;/int类型数据自动转换为long型并赋值double doubleVar=1.2ffloat c=9.83244665757Lint intVar=(int)3.45f;float floatVar=(float)1.2;,Java中的复合数据类型:包括类(class)、数组和接口(interface)。,字符串(String)不是简单的数据类型,是复合数据类型(“类”类型),但在Java语言中可以像使用简单类型一样来使用它。,这里重点讲字符串类型。,一个字符串常量是用双引号括起来的0个或多个字符组成的序列。例如:“”-表示一个空字符串。“Hello Worldn”-表示字符串Hello World,n是回车换行符。,字符串的连接:字符串可以通过连接符“+”进行连接。,例如:“Wecome to”+”Beijing”等价于“Wecome to Beijing”,例:执行下列程序,输出结果为多少?()public class A public static void main(String args)String str=“456”;int a=7,b=8;System.out.println(“str=”+str+a+b);A.str=45615 B.str=45678 C.str=456+7+8 D.编译错误,B,1.4 Java程序中的标识符、关键字和分隔符,1.4.1 标识符,Java语言的标识符必须由数字、字母、下划线或美元符号($)组成,其中首字符不能是数字。标识符长度不限。,标识符区分大小写,不能以数字开头,不能插入空格等,也不能以关键字命名。在程序中标识符用来给类、接口、方法、变量或类对象命名。为提高程序的可读性,用标识符命名最好见名知意。,为使非英语国家的程序员方便地用自己的母语定义标识符,Java标识符采用Unicode字符集,可为任意长度。,下面是合法的标识符:intVariable、doubleVariable、var2、_var3、double1、booleanture、浮点数2,下面的标识符不合法:var 1(不能有空格)、1 var(不能以数字开头)、var%(含有非法字符%)、do(关键字),Java语言关于标识符命名的一些约定:,1.类名和接口名的第一个字母大写,如String、System等。2.方法名的第一个字母小写,如main(),print(),println()。3.为使程序可读性强,做到见名知意,通常类名和方法名比较长,由名词、动词或它们的组合来命名。类名首字母大写,后面各单词首字母大写。方法名的首字母小写,后面各单词首字母大写。如,输入流类InputStream、数据输出流类DataOutputStream,方法setColor()、actionPerformed()等。4.常量(用关键字final修饰的变量)全部用大写,单词间用下划线隔开。如TEXT_PROPERTY。5.变量名或一个类的对象名首字母小写。6.Java的关键字都小写。,表1-6 变量的缺省初始值,1.4.2 关键字,Java中的关键字有50个,按用途可分为如下几组:,用于数据类型:byte,short,int,long,float,double,char,boolean,false,true,new,null,void,instanceof。,用于语句:break,case,catch,continue,defaule,do,else,finally,for,if,return,super,switch,this,throw,try,while.,用于修饰:abstract,final,native,private,protected,public,static,synchronized,transient,volatile。,用于方法、类、接口、包:class,extends,implements,interface,package,import,throws。,保留字:const,goto,1.4.3 分隔符,1.java语言的注释块注释:多行注释/*注释部分*/*文档注释部分*/行注释:仅用于单行注释/注释部分2.空白符空格、回车、换行、制表符(Tab键)等,3.其它分隔符大括号-用来定义类体、方法体、复合语句和数组初始化、一对大括号括起来的代码段都是一个语句块。分号(;)-语句结束标志逗号(,)-区分各个变量,区分方法的参数冒号(:)-用于语句标号中,1.5 Java中变量的作用范围,首先看Java中变量的声明:,在使用任何变量之前必须先定义。,如果是基本数据类型,在声明变量类型的同时,可以为它赋初值。,例:int a=1,b=2;,如果是复合数据类型,声明完数据类型后,还要用关键字new为其分配内存单元,否则取值为null,即不指向任何内存空间。,例:int array1=new int5;for(i=0,i5,i+)arrayi=i+1;,在类体中定义的类成员变量,在该类的各个成员方法中均可以使用。在某个方法中定义的变量,仅能在该方法中使用。在if语句、while语句、for语句等复合语句中定义的变量,仅在它所在的块中有效。,需要说明的是:方法体中的变量必须初始化(赋值)后才能使用,而类中的变量可自动初始化,后面详述。,例:下面程序演示了常量的定义、变量的定义和其作用范围。,class MyTest1 static char charVar=t;/定义字符型变量charVar static final float floatVar=3.14159f;/定义浮点型常量floatVar public static void main(String args)String stringVar=“java”;/变量stringVar在该语句块中 有效,System.out.print(类中定义:floatVar=+floatVar+charVar+stringVar=+stringVar);System.out.println();show();/调用类中的自定义方法 static void show()String stringVar=北京;/变量stringVar在该语句块中有效 System.out.println(类中定义:floatVar=+floatVar+方法中定义:stringVar=+stringVar);,运行结果如下:,1.6 小结,Java的开发环境及其设置,Java语言的数据类型,Java程序中的标识符、关键字和分隔符,Java中变量的作用范围,使用Java的原因,