JAVA简单程序课件.ppt

上传人:rrsccc 文档编号:10346975 上传时间:2021-05-10 格式:PPT 页数:46 大小:219.50KB
返回 下载 相关 举报
JAVA简单程序课件.ppt_第1页
第1页 / 共46页
JAVA简单程序课件.ppt_第2页
第2页 / 共46页
JAVA简单程序课件.ppt_第3页
第3页 / 共46页
JAVA简单程序课件.ppt_第4页
第4页 / 共46页
JAVA简单程序课件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《JAVA简单程序课件.ppt》由会员分享,可在线阅读,更多相关《JAVA简单程序课件.ppt(46页珍藏版)》请在三一文库上搜索。

1、第3章类与对象,3.1 Java 的类 3.2 对象的创建与引用 3.3 变量的作用域 3.4 类变量和静态方法 3.5 类的组织-包,3.1.1 系统定义的类,Java API -常用包,java.lang 包 java.io 包 java.util 包 java.awt 包 java.applet 包 包 java.awt.event 包 java.sql 包 .,使用某个类必须指出类所在包的信息,通过指定绝对路径来使用类 java.util.Date x=new java.util.Date(); 先通过import引入类,然后在代码中直接访问类 import java.util.Dat

2、e; Date x=new Date();,3.1.2 用户自定义类,修饰符 class 类名 /类头 /类体 修饰 类型 属性1 = 初值1 ; 修饰 类型 属性2 = 初值2 ; ./其他属性 修饰 类型 方法1(参数列表) 方法体 ./其他方法 ,例3-1 表示人员信息的Person类(未完),public class Person /类头、类名为Personprivate String address; /籍贯private String name; /姓名private int age; /年龄 public String getName() /获取人名 return name;pu

3、blic int getAge() /获取年龄 return age;public void changeName(String newname) /改名 name = new_name;public void incAge() /增加1岁 age+;,例3-1 表示人员信息的Person类 (续),public void setAge(int new_age) /设置年龄 age = new_age; public String getAddress() /获取籍贯 return address;public void setAddress(String x) /设置籍贯 address =

4、 x;public String toString() /读对象信息 String s = Name: + name + n; s += Age: + age + n; s += Address: + address + n; return s;,3.2.1 创建对象及访问对象成员,public static void main(String args) Person p1 = new Person(); /创建一个Person对象 Person p2 = new Person(); /创建另一个Person对象,p1.changeName(John); p1.setAge(23); p1.s

5、etAddress(江西); p1.incAge( ); P2.changeName(“Mary Ann”); P2.setAge(22); P2.setAddress(“北京”); Person p3=p1; P3.age+; System.out.println(“姓名=”+p1.getName( )+” ,地址=”+p1.getAddress( );System.out.println (姓名=+p2.getName()+,地址=+p2.getAddress(); ,3.2.2 对象的初始化和构造方法, 如果定义属性成员时没有指定初值,则系统自动指定初值。 在定义属性成员时也可以指定初值

6、。 public class Person private String address; /籍贯 private String name=“无名氏”; /姓名 private int age=100; /年龄, 指定初值的另一种办法是通过初始化块来设置对象的初值。,public class Person private String address; /籍贯private String name; /姓名private int age=12; /年龄 /初始化代码块 name=无名氏; age=100; 思考:age的初值是什么?, 更为常用的给对象设置初值的方式是通过构造方法 -Perso

7、n类的一个构造方法,public Person(String myname, int myage) name = myname; age = myage; ,Person p3 = new Person(John, 20);,使用该构造方法可以创建一个Person对象,构造方法的特点,构造方法的名称必须与类名同名; 构造方法没有返回类型; 通常一个类可提供多个构造方法,这些方法的参数不同。,如果一个类未指定构造方法,则只能使用系统自动提供的无参构造方法创建对象,形式如下: public Person() ,例3-2 Person类添加子女属性,public class Person priva

8、te String name;private int age; private Person children = null;public Person(String myname, int myage) /无子女构造方法 name = myname; age = myage; public String toString() String s = Name: + name + n; s += Age: + age + n; return s; ,例3-2 Person类添加子女属性 (续1),public Person(String name1, int age1, Person chs)

9、/有子女构造方法 name = name1; age = age1; children = chs; public Person getChildren() return children; public void setChildren(Person mychildren) children = mychildren; ,例3-2 Person类添加子女属性 (续2),public static void main(String args) Person p1 = new Person(John, 20); Person p2 = new Person(Mary, 18); Person c

10、1=p1,p2; Person p3=new Person(Smith, 50,c1); System.out.println(father: +p3+have following children ); Person mychild=p3.getChildren(); for (int k=0;kmychild.length;k+) System.out.println(child +(k+1)+: + mychildk); /类结束,3.3 不同类型变量的作用域,(1)成员变量的作用域是整个类体。 (2)局部变量也称自动变量,是在方法中定义或者在一段代码块中定义的变量。在声明的代码块中有效

11、。 注意,局部变量在定义时系统不会赋默认初值,因此在引用变量时要保证先赋值。 (3)方法参数的作用域是整个方法。参数值由方法调用时实参决定。 (4)异常处理参数跟方法参数的作用很相似,差别在是前者是传递参数给异常处理块而后者是传递给方法。,例3-3 各类变量的作用域,public class Scope int x=2; int y=1; public void method( int a ) int x=5; for ( int i =1;ia;i+) x=x+i; System.out.println(x=+x+,y=+y +,a=+a); public static void main(

12、String a) Scope x =new Scope(); x.method(6); ,3.4.1 类变量-类变量的访问形式,在本类中直接访问:count 通过类名访问:User.count 通过类的一个对象访问,如:x1.count,3.4 类变量和静态方法,理解类空间与对象空间,public class User static int count=0; String username; int age;,类空间,对象空间,张三,0,count,x1,username,age,20,李四,x2,username,age,16,大家 共享 一份,每个 对象 有各 自的,【思考】如果将程序中

13、的count变量改为实例变量,程序输出结果如何?,public class User static int count=0; void login() count+; System.out.println( you are no +count+ user);public static void main(String args) User x1=new User(); x1.login(); User x2=new User(); x2.login(); ,3.4.2 静态方法,用 static修饰的方法称为静态方法,也叫类方法 在static方法中只能处理类变量,也可访问其它static方法

14、,但绝不能直接访问任何归属对象空间的变量或方法,例3-5 求10100之间的所有素数,public class findPrime public static boolean prime(int n) if (n=0|n=1|n=2) return false; for (int k=2;k=Math.sqrt(n);k+) if ( n % k=0) return false; return true; public static void main(String args) for (int m=10;m=100;m+) if (prime(m) System.out.print(m+ ,

15、 ); ,【思考】如果将prime方法设计为非静态方法,则如何在main方法中调用。,public static void main(String args) findPrime x=new findPrime(); for (int m=10;m=100;m+) if ( x.prime(m) ) System.out.print(m+ , ); ,1、包的组织,采用分层结构 同一包中不能有两个同名的类 在缺省情况下,系统会为每一个源文件创建一个无名包,lang,util,awt,applet,event,System类,Applet类,Graphics类,String类,java (核心包

16、的根),3.5 使用包组织类,2、用户自定义包,package语句放在源文件的第一行。,Package test; Class Myclass .,当前文件夹,Myclass.java,test,Myclass.class,创建包就是在指定目录路径下创建一个 子文件夹 ,这个包中所有类的字节码文件将存放在该文件夹下,例3-6 包的定义,package test; public class Date private int month, day, year; public Date(int theMonth,int theDay,int theYear) if (theMonth0 ,3、对定义

17、包程序的编译,方法1:创建一个test子目录,将源程序文件存放到该目录,在该目录下利用javac编译源代码,或者在别处编译完程序后将字节码文件拷贝到该目录即可。 方法2:采用带路径指示的编译命令: 格式:javac d destpath 编译器将自动在destpath指定的目录下建一个test子目录,并将产生的字节码文件保存到该子目录下 典型用法是源程序放在当前目录下,用如下命令编译 javac d . Date.java 编译后将在当前目录自动创建test子目录,当前目录,1、引用其它包的类的方法,(1) 在引用类时使用包名作前缀。 例 :new java.util.Date() (2) 用

18、import语句加载需要使用的类。 例:import java.util.Date; 然后在程序中可以直接通过类名创建对象 如:new Date(); (3) 用import语句加载整个包-用“*”号代替类名位置。 它将加载包中的所有的类。例如:import java.util.*;,例3-7 给Person类中加入出生日期属性,import test.*; public class Person private String name;private int age; private Date birthDay;public Person(String myname, int myage,i

19、nt year,int month,int day) name = myname; age = myage; birthDay = new Date(year,month,day); / 其它代码 ,2、设置环境变量CLASSPATH,通过设置环境变量CLASSPATH指明字节码文件路径。 例:SET CLASSPATH=.;C:jdk1.4lib; import语句指定的包路径也首先在classpath路径下查找 例如:javax.swing.*是在jdk的lib目录的dt.jar中。所以,要在classpath中包括: c:jdk1.4libdt.jar,课堂练习-写出程序输出结果,pub

20、lic class test static int x=4; public static void main(String a) for (int x=2;x5;x+); System.out.println(x); ,写出程序输出结果,public class Static static int x , y; public static void main(String args) x-; myMethod(); System.out.println(x + y + +x); public static void myMethod() y= x+ + +x; ,3 (y=0),实验安排,1)

21、 利用随机函数定义10对(x,y)值,由此创建的Point类实例存入一个数组中,按与原点(0,0)的距离由小到大的顺序输出所有的点及到原点的距离。 2)编写一个三角形类,能根据3个实数构造三角形对象,如果三个实数不满足三角形的条件,则自动构造以最小值为边的等边三角形。输入任意三个数,求构造的三角形面积。 3) 定义一个复数类,其中封装有复数的加,减方法,利用随机函数产生数据构造出两复数,利用前面定义的复数计算方法计算两复数的和以及差.,例:设有三角形t,有三条边a, b, c 求三角形面积的几个方法的比较,方法1 public double area() double p=(a+b+c)/2;

22、 return Math.sqrt(p*(p-a)*(p-b)*(p-c); ,方法设计与调用的思考举例,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法2 public double area(double a,double b,double c) double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c); ,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法3 public static double area(double a,double b,double c) double p=(a+b+c)/

23、2; return Math.sqrt(p*(p-a)*(p-b)*(p-c); ,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法4 public static double area( Triangle t ) double p=(t.a+t.b+t.c)/2; return Math.sqrt(p*(p-t.a)*(p-t.b)*(p-t.c); ,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法5 public void area( ) double p=(t.a+t.b+t.c)/2; double s=Math.sqrt(p*(p-t.a)*(p

24、-t.b)*(p-t.c); System.out.println(“面积=“+s); ,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法1 public double area() double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c); ,调用方式:double s = t.area();,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法2 public double area(double a,double b,double c) double p=(a+b+c)/2; return Math.

25、sqrt(p*(p-a)*(p-b)*(p-c); ,double s = t.area(t.a, t.b, t.c);,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法3 public static double area(double a,double b,double c) double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c); ,double s = Triangle.area(t.a, t.b, t.c);,行否? double s = Triangle.area(3,4,5);,设有三角形t,有三条边a,

26、b,c求三角形面积的几个方法的比较,方法4 public static double area( Triangle t ) double p=(t.a+t.b+t.c)/2; return Math.sqrt(p*(p-t.a)*(p-t.b)*(p-t.c); ,double s = Triangle.area( t );,设有三角形t,有三条边a,b,c求三角形面积的几个方法的比较,方法5 public void area( ) double p=(t.a+t.b+t.c)/2; double s=Math.sqrt(p*(p-t.a)*(p-t.b)*(p-t.c); System.out.println(“面积=“+s); ,t.area( );,不能赋值,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1