1、第二章 Java的基础知识,本章主要讲述面向对象的初步概念,Java的特点,Java词法,Java的基本数据类型与复合数据类型。,例1系统控制台输出 class Example1public static void main(String args)System.out.println(“欢迎用Java编程!“); ,1、Java是面向对象的编程语言,充分支持类的概念。 2、类是定义对象的数据及方法(处理对象的数据的函数)的数据结构。 3、Java Developers Kit (JDK)提供了类库(叫做package),其中的对象可方便地集成到一个应用程序中 4、一个Java package
2、含有一个或多个相关的类。 5、用System类可实现控制台I/O。 6、System . out方法来向控制台窗口输出文本。 7、控制台指的是含有命令行提示符的窗口,appletviewer在此窗口内启动。Appletviewer总是在控制台运行。 8、Java程序必须以类的形式出现。,9、类声明的作用是定义程序中所使用的类。 10、类体一般包括若干变量的声明和若干方法的声明。 11、一个Java应用程序必须要有一个main方法。Java规定必须在main方法之前依次加上public static void 3个修饰词。 12、main方法之后的圆括号内的args 是一个变量,其类型为Stri
3、ng ,args用来存放执行程序时所用的命令行参数。 13、Java要求将字符串括在一对双引号之间。 14、Java要求每个语句以分号结束。 15、System.out.println()的作用除了将括号中的参数输出到屏幕外,还将屏幕光标移到下一行的行首。System.out.print()的作用只是将括号中的参数输出到屏幕。,例2 如何在applet窗口内显示信息 import java.awt.*; import java.applet.*; public class Example2 extends Applet public void init() public void paint(
4、Graphics g) something s;s = new something(105);g.drawString(“Welcome to Java!“+s, 50, 60 ); ,class somethingprivate int value;public something(int value)this.value = value;public String toString()String s;s = “;return s; ,1、applet内定义类时须用class关键字,其后跟一对花括号 ,类成员在花括号内定义。 2、Java类成员是数据或者方法(对数据进行操作的函数)。 3、
5、如果想使applet外的对象(如browser)也能访问此类,则可在定义类时在class关键字前加上public关键字。如果不用public关键字,则只有和此类位于同一源文件的类才能使用它。 4、类定义之后,即可定义属于此类的变量。创建类的实例(对象)时须用new操作符。 5、每当创建类对象(使用new操作符)时都要运行构造函数。 6、Java没有提供用来清除new所创建的对象的delete操作符,而是由Java自己充当“清洁工”,清除无用的对象。Applet终止时,Java自动清除其中的对象。 7、Java清除无用对象时将调用该对象的finalize函数。 8、类和其构造函数同名。,9、在a
6、pplet窗口显示文本或作图,须使用Graphics类。 10、browser 调用paint 函数时,applet的paint函数就在applet窗内显示出信息。drawString函数可在applet窗口显示文本信息。 11、applet也可在init函数内向applet窗发送信息。但当窗口的尺寸调整、移动、或其内容改变时,窗口内的信息将丢失。 12、当窗口的尺寸调整、移动、或其内容改变时,paint函数重画applet窗口。重定义paint函数是确保applet窗内信息随时更新的唯一办法。 13、Java applet 乃Applet类扩展而来,而Applet类本身定义了init函数,如
7、果applet中没有定义init函数,那么Java将调用Applet类的init函数。 14、Java的Graphics函数显示此对象的值时,须先把其值转换成字符串。 15、toString方法能把对象的值转换成字符串。当把一个对象加到字符串上时,Java自动调用此方法。 16、使用this关键字可以区分参数名和类名。,例3演示运算符的功能 class ArOperatianpublic static void main(String args)int a=7,b=2,c=3,d=-5;System.out.println(“ta的值为“+a+“;b的值为“+b+“;c的值为“+c+“;d的值
8、为“+d);System.out.println(“t(a + b)值为“+(a+b);System.out.println(“t(a - b)值为“+(a-b);System.out.println(“t(b * c)值为“+(b*c);System.out.println(“t(d / c)值为“+(d/c);System.out.println(“t(-d)值为“+(-d);System.out.println(“td % c值为“+(d%c)+“;a % b值为“+(a%b); ,该程序运行后产生的输出为: a值为7;b值为2;c值为3;d值为-5 (a+b)值为9 (a-b)值为5
9、(b*c)值为6 (d/c)值为-1 (-d)值为5 d%c值为-2;a%b值为1,例4 class IncDecpublic static void main (String args)int a, b;a=7;b=a+;System.out.println(“t执行a=7;b=a+;后,a值为“+a+“;b值为“+b);a=7;b=+a ;System.out.println(“t执行a=7;b=+a;后,a值为“+a+“;b值为“+b);a=7;b=a-;System.out.println(“t执行a=7;b=a-;后,a值为“+a+“;b值为“+b);a=7;b=-a;System.
10、out.println(“t执行a=7;b=-a;后,a值为“+a+“;b值为“+b); ,该程序产生的输出为: 执行a=7;b=a+;后,a的值为8;b的值为7 执行a=7;b=+a;后,a的值为8;b的值为8 执行a=7;b=a-;后,a的值为6;b的值为7 执行a=7;b=-a;后,a的值为6;b的值为6,运算符+和- -都是单目运算符.它们分别是对变量进行加1和减运算,它们可以出现变量之前也可以出现在变量之后,这两种情况下的含义不同.例如,设int a;则+a的含义是a的值在使用之前增加1,a+的含义是a的值在使用之后增加1.下面的两个语句 +a; a+: 都等价于语句a=a+1;.在
11、这里看不出递增符号前置与后置的区别.下面的两个语句显示出了它们的区别: a=7;b=+a; 执行的结果是,a,b的值均为8,而 a=7;b=a+; 执行的结果是,a的值均为8,b的值为7.,例5演示对字符的运算 class CharOppublic static void main(String args)char ch=a;ch=(char)(ch+1);System.out.println(“t(a+1)值为“+(a+1);System.out.println(“t(char)(a+1)值为“+ch);System.out.println(“t(A+B)值为“+(A+B);System.o
12、ut.println(“t(AB)值为“+(AB);System.out.println(“t(A100)值为“+(A100);System.out.println(“t(A%60)值为“+(A%60);System.out.println(“t(A/5)值为“+(A/5);System.out.println(“t(A/ )值为“+(A/ );System.out.println(“t(21)值为“+(21);System.out.println(“t(char)(21)值为“+(char)(21); ,该程序的运行结果为: (a+1) 值为98 (char)(a+1) 值为b (A+B)
13、值为131 (AB) 值为false (A100) 值为true (A%60)值为5 (A/5)值为13 (A/ )值为2 (21)值为100 (char)( 21)值为d,1、取值范围 Java字符类型的取值范围是Unicode字符集,一个字符数据的长度是16bit 2、声明字符类型是变量 3、字符类型允许的运算 参与运算前Java将此编号转换成int型.若参与的是关系运算,运算结果为boolean型;若参与的是算术运算或位运算,运算结果为int型.,例6数值数据的输入 import user.*; class TestReadNumberpublic static void main(St
14、ring args)int i=ReadNumber.readInteger();float f=ReadNumber.readFloat();float sum=i+f;System.out.println(“i值为“+i+“;f值为“+f+“;sum值为“+sum); ,package user; import java.io.*; public class ReadNumber private static String str;private static boolean error;public static int readInteger()BufferedReader in=ne
15、w BufferedReader(new InputStreamReader(System.in);error=false;doSystem.out.flush();trystr=in.readLine();catch(IOException e)System.out.println(e);System.exit(1);,if(str.length()=0) error=true;else tryreturn Integer.valueOf(str).intValue();catch(NumberFormatException e)System.out.println(e);System.ou
16、t.print(“请重新输入一个整数:“);error=true;while(error);return Integer.valueOf(str).intValue();,public static float readFloat()BufferedReader in=new BufferedReader(new InputStreamReader(System.in);error=false;doSystem.out.flush();trystr=in.readLine();catch(IOException e)System.out.println(e);System.exit(1);,i
17、f(str.length()=0) error=true;else tryreturn Float.valueOf(str).floatValue();catch(NumberFormatException e)System.out.println(e);System.out.print(“请重新输入一个整数:“);error=true;while(error);return Float.valueOf(str).floatValue(); ,1、标准输出 System.out.print() 2、标准输入System.in.read() 3、输入数值数据 Java没有提供直接从键盘读取整数或浮点数的方法,然而用户可以自己编写这一类方法。,