




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java学习笔记(四)-对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释2009-10-15 20:21对象作为参数传递class passparam int x;public static void main(String args) passparam obj = new passparam(); obj.x=5; change(obj); System.out.println(obj.x); /如果change方法不是静态的,想调用它就得写成 new passparam().change(obj);public static void change(passparam obj) /如果这个函数前面没加static编译出错,因为非静态方法,不能被静态方法直接调用,main是一个静态方法。 obj.x=3;结果: 3数组作为参数传递class passparam int x;public static void main(String args) passparam obj = new passparam(); int x=new int1; x0=5; change(x); System.out.println(x0);public static void change(int x) x0=3; 结果: 3静态变量、静态方法的使用静态变量相当于全局变量class Chinese static string country=中国; /如果改为private static string country=中国 下面的两处调用,就会出错String name;int age;static void sing() System.out.println(啊)void singOurCountry() System.out.println(country); sing();class TestChinese public static void main(String args) System.out.println(Chinaese.country); /static 静态变量可以直接引用 Chinese ch1=new Chinese(); ch1.singOurCountry(); System.out.println(ch1.country); Chinese.sing(); /静态方法的引用 new.Chinese.sing(); / 用对象引用方法-class Chinese private static int count=0; /定义一个静态整形变量static /静态代码块 类在第一次使用时,初使化 count=2; /这个类在第一次使用时,count被初使化 System.out.println(static code)String name;int age;public Chinese() System.out.println(+count); class TestChinese public static void main(String age)System.out.println(static begin)new Chinese();System.out.println(end)new Chinese();new Chinese();输出结果为static beginstatic code3end 4 5-静态方法 注意:1、在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法)。这是因为,对于非静态方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。2、静态方法不能以任何方式引用this和super关键字。与上面的的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。3、main()方法是静态的,因此JVM在执行main方法时不创建main方法所在类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。class Bpublic void b() System.out.print(000);public static void e()public void c()b(); e(); /类中的非静态方法可以调用该类中的其它非静态方法,和静态方法class Apublic static void main(String args)new B().c();-静态代码块1、一个类中可以使用不包含在任何方法中的静态代码块(static block),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常来进行类属性的初始化。2、类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。-单态设计模式 使类在内存中只创建一个实例对象class Chineseprivate static Chinese objRef = new Chinese(); /这里必须用static,由于1、下面是用静态方法调用 2、如果不用static就会陷入死循环中,因为每创建一个objRef对象,就会重新载入Chinese类,然后又调用objRef类。private static int count=0;public static Chinese getInstance() /Chinese 为这个方法的返回类型, 这个方法是用静态方法来调用静态变量 return objRef; private Chinese() /单态设计模式要把构造函数设为私有的 System.out.println(+count); class TestChinese public static void main(String age)Chinese obj1 = chinese.getInstance();Chinese obj2 = chinese.getInstance();System.out.println(obj1=obj2); /返回结果为truenew Chinese(); /此处出错,因为构造函数已经是私有的了,所以不能再这样定义对象了。注意:1,构造函数必须设为private 2, 类里面定义的对象必须是private,static,也可以加上final 3, 类里面要有一个调用对象的类,这个类必须是public,static,和类形是这个类的名,类中的其它要调用的方法还用public-单态设计模式 : 所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法,如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部开始产类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。-嵌套类1.嵌套类可以直接访问嵌套它的类成员,包括private成员,但是,嵌套类的成员却不能被嵌套它的类直接访问。2.在类中直接定义的嵌套类的使用范围,仅限于这个类的内部,也就是说,A类里定义了一个B类,那么B为A所知,却不被A的外面所知。内部类的定义和普通类的定义没什么区别,它可以直接访问和引用它的外部类的所有变量和方法,就像外部类中的其他非static成员的功能一样,和外部类不同的是,内部类可以声明为private或protected.3.内部类可以用static来修饰,这样相当于是一个外部定义的类,它的用法就和外部类一样了,所以static的内部类中可声明static成员,static的内部类不能再使用外层封装类的非static的成员变量,staic嵌套类很少使用.class Outer int outer_i=100;void test() Inner in=new Inner(); in.display();class Inner void display() System.out.println(display: outer_i=+outer_i); class InnerClassDemo public static void main(String args) Outer outer=new Outer(); outer.test(); 输出结果:display: outer_i=100-经验: 当一个类中的程序代码要用到另外一个类的实例对象,而另外一个类中的程序代码又要访问第一个类中的成员,将另外一个类做成第一个类的内部类,程序代码就要容易编写得多,这样的情况在实际应用中非常之多!-*如果函数的局部变量(函数的形参也是局部变量),内部类的成员变量,外部类的成员变量重名,我们应该按下面的程序代码所使用的方式来明确指定我们真正要访问的变量。pulic class Outer private int size;public class Inner private int size; public void doStuff(int size) size+; /引用的是doStuff函数的形参 this.size+; /引用的是Inner类中的成员变量 Outer.this.size+; /引用的Outer类中的成员变量 -*内部类如何被外部引用*内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为Public即可。class Outer private int size=10;public class Inner /被外部引用,必须声明为public public void doStuff() System.out.println(+size); public class TestInner public static void main(String args) Outer a =new Outer(); Outer.Inner b=a.new Inner(); b.doStuff();-*方法中定义的内部类*class Outer int outer_i=100;void test() for (int i=0;i5;i+) class Inner /方法中定义的内部类 void display() System.out.println(display: outer_i=+outer_i); Inner inner=new Inner(); inner.display(); class InnerClassDemo public static void main(String args)Outer outer=new Outer();outer.test();结果:display: outer_i=100display: outer_i=100display: outer_i=100display: outer_i=100display: outer_i=100*在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。class InOut String str=new String(Between);public void amethod(final int iArgs) int it315; class Bicycle public void sayHello() System.out.println(str); System.out.println(iArgs); 在内部类中的sayHello方法中,我们可以访问变量iArgs和str,但不能访问it315-*使用文档注释*对于类的说明应在类定义之前,对于方法的说明应在方法定义之前。import java.io.*;/* Title: engineero类* Description: 通过engineer类来说明java中的文档注释* Copyright: (C) 2003* Company: IT人资讯交流网* author 张孝祥* version 1.00*/public class engineer public String Engineer_name;/* * 这是engineer对象的构造函数 * param name engineer的名子*/public engineer(String name)/* 这是repairing方法的说明* param sum 需要修理的机器总数* param alltime需要修理的总时间* return Repairing的数量*/public int repairing (int sum, int alltime)- 在html中换行,而带有标志的属性会自动换行,结尾就省略了author 用于类的说明,表示这个java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年临沂莒南县教体系统部分事业单位公开招聘教师(1名)考前自测高频考点模拟试题及完整答案详解
- 2025贵州惠水县公益性岗位招聘4人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025包头市喜桂图文化旅游开发有限公司招聘讲解员15人模拟试卷及答案详解(易错题)
- 2025年温州市卫生健康委员会直属卫生健康单位面向社会公开招聘116人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025北京昌平区统计局招聘经济运行监测工作专班助统员1人考前自测高频考点模拟试题及答案详解(新)
- 2025河南省蓝天实验室招聘工作人员20人考前自测高频考点模拟试题完整参考答案详解
- 2025湖北天门市城市社区专职工作人员招聘59人模拟试卷及答案详解一套
- 2025江苏苏州市自来水有限公司专业化青年人才定岗特选录用人员考前自测高频考点模拟试题及答案详解1套
- 2025年玉环市经济和化局公开选聘工作人员1人模拟试卷(含答案详解)
- 2025年中国三峡新能源(集团)股份有限公司春季校园招聘笔试题库历年考点版附带答案详解
- 综合仓储物流服务合同
- 高中英语:倒装句专项练习(附答案)
- 土地承包经营权长期转让协议
- 成人糖尿病食养指南(2023年版)
- 地方病防治技能理论考核试题
- 四川省高等教育自学考试自考毕业生登记表001汇编
- (2024版)初级茶叶加工工理论知识考试题库(含答案)
- 北京市-实验动物上岗证培训考试题库
- 不锈钢加工及安装合同集合
- 妊娠期高血压用药
- 我不是完美小孩
评论
0/150
提交评论