1、1第3章 JAVA语言基础2注释及分隔符、注释及分隔符、Java文档化工具文档化工具标识符标识符关键字关键字Java基本数据类型基本数据类型Java引用类型引用类型值传递值传递关键字关键字this3Example:/*Description:This class is*counts to a number dictated by*the input to the program.*Copyright:Copyright(c)2007*Company:Dalian University of Technology*author Vivian Zhao*version 1.1*/4Cont.pub
2、lic class CountingProgram/*This method counts from zero to X,printing*the“count”to the screen.*param countNumber The int number to count to.*/public static void count(String countNumber)int countTo=new Integer(countNumber);/for loopfor(int i=0;i countTo;i+)System.out.println(“Count=“+(i+1);public st
3、atic void main(String args)if(args0=null)System.out.println(“should input a number);else count(args0);5Java语言中定义了三种注释形式:/单行注释-注释到行尾/*单行或多行注释*/*可以用于文档化处理的单行或多行注释*/JDK中提供了一个文档自动生成工具javadoc,在自定义类中public的成员前以/*/形式加入的注释内容均可被自动提取到生成的说明文档中。用法:somepathjavadoc source.java 还可指定目录 javadoc d somepath source.jav
4、a6常用的标记-javadoc标记l Javadoc能识别标记的一些特殊变量,并把注释加入它所生成的HTML文件:l version:版本信息l auther:作者l param:参数l return:返回说明l exception:异常说明l 举例:HelloDate.java7 Java分隔符组成:分号-“;”、花括号-“”、空格-“”Java分隔符作用:Java语句必须以分号作为结束标记 Java允许用花括号“”将一组语句括起来,形成一个语句块(block)Java程序源代码中各组成部分之间可以插入任意数量的空格,包括换行。8 Java语句块(block)用法:定义类时类体必须采用语句块
5、形式 定义方法时方法体必须采用语句块的形式 定义循环语句时,循环体可以语句块的形式,采用将0多条语句集合到一起,作为一个整体进行处理 语句块可以嵌套,嵌套层数无限制9 Java语言中,为各种变量、方法和类等起的名字称为标识符 Java标识符的命名规则:应以字母、下划线、美元符开头后跟字母、下划线、美元符或数字 Java标识符大小写敏感,长度无限制10 Java标识符举例合法的标识符不合法的标识符 HelloWorld class DataClass DataClass#_983 98.3$bS5_c7 Hello World11 Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(k
6、eyword)所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 goto和const 虽然从未使用,但也作被为Java关键字保留1213数据类型基本数据类型引用数据类型数值型字符型(char)布尔型(boolean)整数类型(byte,short,int,long)浮点类型(float,double)类(class)接口(interface)数组 14 Java中定义了四类/八种基本数据类型逻辑型-boolean文本型-char整数型-byte,short,int,long浮点数型-float,double15 boolean类型适于逻辑运算,一般用于程序流程
7、控制 boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false。用法举例:boolean b=false;if(b=true)/do somethingl默认值:false16 char型数据用来表示通常意义上“字符”字符常量是用单引号括起来的单个字符char c=A;Java字符采用Unicode编码,每个字符占两个字节char j=97;/j=a unicode 中的编码值 Java语言中还允许使用转义字符来将其后的字符转变为其它的含义char c2=n;/代表换行符l默认值:u000017类 型占用存储空间表数范围 byte 1字节-128 12
8、7 short 2字节-215 215-1 int 4字节-231 231-1 long 8字节-263 263-1 Java各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证Java程序的可移植性:18 Java语言整型常量的三种表示形式:十进制整数,如12,-314,0。八进制整数,要求以0开头,如012 十六进制数,要求0 x或0X开头,如0 x12 Java语言的整型常量默认为int型,如:int i=3;声明long型常量可以后加 l 或 L ,如:long l=3L;19 Java浮点类型有固定的表数范围和字段长度类 型占用存储空间表数范围 float 4字节-
9、3.403E383.403E38 double 8字节-1.798E3081.798E308 20lJava浮点类型常量有两种表示形式十进制数形式,必须含有小数点,例如:3.14 314.0 .314 科学记数法形式,如3.14e2 3.14E2 314E2 lJava浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:double d=3.14;float f=3.14f;21public class Test public static void main(String args)boolean b=true;/声明boolean型变量并赋值 int
10、 x,y=8;/声明int型变量 float f=4.5f;/声明float型变量并赋值 double d=3.1415;/声明double型变量并赋值 char c;/声明char型变量 c=u0041;/为char型变量赋值(A)x=12;/为int型变量赋值 22 1.练习在一个已有.java源代码文件中使用三种不同类型的注释,并用javadoc命令创建自己的类文档,体会其用法。2.练习在已有应用程序的一个语句中插入多处空格、中间换行、将多个语句组成一个语句块儿(置于“”中),并编译运行程序,体会其自由程度。3.在程序中试将不合法的标识符(如:3ar,*bily,d9#8等)、或关键字作
11、为变量名,编译然后改正错误。23 Java语言中除8种基本数据类型以外的数据类型称为引用类型 引用类型数据以对象的形式存在 引用类型变量的值是某个对象的句柄,而不是对象本身 声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象 24 Java引用类型成员变量默认初始化原则成员变量类型 取值 byte0 short0 int 0 long0 charu0000 float0.0F double0.0D booleanfalse 所有引用类型null 25public class MyDate private int day=12;private int month=6;priv
12、ate int year=1900;public MyDate(int y,int m,int d)year=y;month=m;day=d;public void display()System.out.println(year+/+month+/+day);public static void main(String args)MyDate m;m=new MyDate(2001,9,22);m.display();26 为引用类型变量分配引用空间 MyDate m;创建新对象-首先为新对象分配内存空间,并进行属性(实例变量)的默认初始化 new MyDate(22,9,2001);nul
13、lnullm000daymonthyearm27 进行属性(成员变量)的显式初始化,显式初始化取值来自于类的定义中属性声明部分 private int day=12;private int month=6;private int year=1900;nullm1261900daymonthyear28 执行构造方法public Mydate(int y,int m,int d)year=y;month=m;day=d;nullm2292001daymonthyear29 为引用类型变量m赋值m=new MyDate(22,9,2001);0 x3a478bm2292001daymonthyea
14、r0 x3a478b30 Java中进行赋值操作或方法调用中传递参数时,遵循值传递的原则:基本类型数据传递的是该数据的值本身 当向一个方法传递一个对象时,Java没有把对象放入堆栈,它只是拷贝对象的引用然后将这个引用的拷贝放入堆栈。也就是说,根据定义,Java使用的是传值方式。31class BirthDate private int day;private int month;private int year;public BirthDate(int d,int m,int y)day=d;month=m;year=y;public void setDay(int d)day=d;publi
15、c void setMonth(int m)month=m;public void setYear(int y)year=y;public int getDay()return day;public int getMonth()return month;public int getYear()return year;public void display()System.out.println(day+-+month+-+year);32public class Examplepublic static void main(String args)Example ex=new Example(
16、);int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void chang
17、e3(BirthDate b)b.setDay(22);33main程序开始执行时内存状态栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.di
18、splay();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);34main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);B
19、irthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934ex da
20、ted1354752d219707720001135main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.disp
21、lay();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d21970772000119ichange136main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=
22、9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDat
23、e b)b.setDay(22);处内存状态1109259587934exdated1354752d21970772000111234ichange137main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);
24、System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d219707720001138main栈内存堆内存public class Examplepublic static void main(Stri
25、ng args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDa
26、te(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200011587934bchange239main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.
27、change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200011666888bchange222
28、2200440main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void c
29、hange1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d219707720001141main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate
30、(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态110925
31、9587934exdated1354752d2197077200011354752bchange342main栈内存堆内存public class Examplepublic static void main(String args)Example ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+d
32、ate);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,2004);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d21970772000221354752bchange343main栈内存堆内存public class Examplepublic static void main(String args)Exa
33、mple ex=new Example();int date=9;BirthDate d1=new BirthDate(7,7,1970);BirthDate d2=new BirthDate(1,1,2000);ex.change1(date);ex.change2(d1);ex.change3(d2);System.out.println(date=+date);d1.display();d2.display();public void change1(int i)i=1234;public void change2(BirthDate b)b=new BirthDate(22,2,200
34、4);public void change3(BirthDate b)b.setDay(22);处内存状态1109259587934exdated1354752d2197077200022144lJava中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。构造方法中指该方法所创建的新对象 普通方法中指调用该方法的对象 45public class ThisSampleprivate int year;private int month;private int day;public ThisSample(int year,int month,int day)th
35、is.year=year;this.month=month;this.day=day;public void setYear(int year)this.year=year;public void setMonth(int m)month=m;public void setDay(int d)day=d;public void setting()this.setYear(2001);this.setMonth(9);setDay(11);/同this.setDay(11);461.练习值传递演示中的例程,Example.java,体会和巩固Java中值传递的思想。2.运行程序并分析流程,体会T
36、his的用法。public class TestMyDate public static void main(String args)MyDate m1=new MyDate(22,7,1964);MyDate m2=m1.copy(m1);m1.display();m2.display();/类MyDate的定义见下一页47public class MyDateprivate int year,month,day;public MyDate()public MyDate(int year,int month,int day)this.year=year;this.month=month;th
37、is.day=day;public void setYear(int year)this.year=year;public void setMonth(int m)month=m;public void setDay(int d)day=d;public void setting()this.setYear(2001);this.setMonth(9);setDay(11);/同this.setDay(11);public MyDate copy(MyDate d)MyDate m=new MyDate();m.year=d.year;m.month=d.month;m.day=d.day;return m;public void display()System.out.println(day+-+month+-+year);