第3章JAVA简单程序

上传人:gu****n 文档编号:243125678 上传时间:2024-09-16 格式:PPT 页数:46 大小:342.50KB
返回 下载 相关 举报
第3章JAVA简单程序_第1页
第1页 / 共46页
第3章JAVA简单程序_第2页
第2页 / 共46页
第3章JAVA简单程序_第3页
第3页 / 共46页
点击查看更多>>
资源描述
,第,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.Date;,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;public,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 = 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.setAddress(,江西,);,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,对象的初始化和构造方法, 如果定义属性成员时没有指定初值,则系统自动指定初值。, 在定义属性成员时也可以指定初值。,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,的初值是什么?, 更为常用的给对象设置初值的方式是通过构造方法,-,Person,类的一个构造方法,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 ,private 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,),/,有子女构造方法,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 c1=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;k,mychild.length;k,+) ,System.out.println(child,+,(,k+1,),+: +,mychildk,);, /,类结束,3.3,不同类型变量的作用域,(,1,),成员变量,的作用域是整个类体。,(,2,),局部变量,也称自动变量,是在方法中定义或者在一段代码块中定义的变量。在声明的代码块中有效。,注意,,局部变量在定义时系统不会赋默认初值,,因此在引用变量时要保证先赋值。,(,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(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,大家,共享,一份,每个,对象,有各,自的,【,思考,】,如果将程序中的,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,方法,但绝不能直接访问任何归属对象空间的变量或方法,例,3-5,求,10,100,之间的所有素数,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+ , ); ,【,思考,】,如果将,prime,方法设计为非静态方法,则如何在,main,方法中调用。,public static void main(String,args,) ,findPrime,x=new,findPrime,();,for (,int,m=10;m0 &,theMonth,=12),month=,theMonth,;,else,month=1;,year=,theYear,;,day=,checkDay(theDay,);, ,3,、对定义包程序的编译,方法,1,:创建一个,test,子目录,将源程序文件存放到该目录,在该目录下利用,javac,编译源代码,或者在别处编译完程序后将字节码文件拷贝到该目录即可。,方法,2,:采用带路径指示的编译命令:,格式:,javac,d,destpath,filename.java,编译器将自动在,destpath,指定的目录下建一个,test,子目录,并将产生的字节码文件保存到该子目录下,典型用法是源程序放在当前目录下,用如下命令编译,javac,d . Date.java,编译后将在当前目录自动创建,test,子目录,当前目录,1,、引用其它包的类的方法,(1),在引用类时使用包名作前缀。,例 :,new java.util.Date(),(2),用,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,int,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,课堂练习,-,写出程序输出结果,public 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),利用随机函数定义,10,对,(x,y),值,由此创建的,Point,类实例存入一个数组中,按与原点(,0,,,0,)的距离由小到大的顺序输出所有的点及到原点的距离。,2,)编写一个三角形类,能根据,3,个实数构造三角形对象,如果三个实数不满足三角形的条件,则自动构造以最小值为边的等边三角形。输入任意三个数,求构造的三角形面积。,3),定义一个复数类,其中封装有复数的加,减方法,利用随机函数产生数据构造出两复数,利用前面定义的复数计算方法计算两复数的和以及差,.,例:设有三角形,t,,有三条边,a, b, c,求三角形面积的几个方法的比较,方法,1,public double area() ,double p=(a+b+c)/2;,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)/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-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.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,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,( );,不能赋值,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!