java对象,数组作为参数传递给_第1页
java对象,数组作为参数传递给_第2页
java对象,数组作为参数传递给_第3页
java对象,数组作为参数传递给_第4页
java对象,数组作为参数传递给_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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(pass

2、param 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静态变量、静态方法的使用静态变量相当于

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

4、.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(sta

5、tic 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 begin static code3end45静态方法 注意:1、在静态方法里只能直接调用同类中其它的静态成员(包括变量和

6、方法)。这 是因为,对于非静态方法和变量,需要先创建类的实例对象后 才可使用,而静态方法在使用前不用创建任何对象。2、静态方法不能以任何方式引用 this 和 super 关键字。与上面的的道理一样, 因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时, this 所引用的对象根本就没有产生。3、main() 方法是静态的, 因此 JVM 在执行 main 方法时不创建 main 方法所在类 的实例对象,因而在 main() 方法中,我们不能直接访问该类中的 非静态成员, 必须创建该类的一个实例对象后, 才能通过这个对象去访问类中的 非静态成员。class Bpublic void

7、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、类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中 的静态代码块只被执行了一次。当

8、一个程序中用到了其他的类 ,类是在第一次被使用的时候才被装载, 而不是在程序启动时就装载程序中所有 可能要用到的类。单态设计模式 使类在内存中只创建一个实例对象 class Chineseprivate static Chinese objRef = new Chinese(); / 这里必须用 static ,由于 1、下 面是用静态方法调用 2、如果不用 static 就会陷入死循环中,因为每创建一个 objRef 对象,就会重新载入 Chinese 类,然后又调用 objRef 类。private static int count=0;public static Chinese getI

9、nstance()/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); / 返回结果为 true

10、new Chinese(); / 此处出错,因为构造函数已经是私有的了,所以不能再这样定 义对象了。注意: 1,构造函数必须设为 private2, 类里面定义的对象必须是 private ,static, 也可以加上 final3, 类里面要有一个调用对象的类,这个类必须是 public,static, 和类形是这 个类的名 ,类中的其它要调用的方法还用 public单态设计模式 : 所谓类的单态设计模式, 就是采取一定的方法保证在整个的软 件系统中,对某个类只能存在一个对象实例,并且该类只提供 一个取得其对象实例的方法,如果我们要让类在一个虚拟机中只能产生一个对 象,我们首先必须将类的构造

11、方法的访问权限设置为 private ,这 样,就不能用 new 操作符在类的外部开始产类的对象了,但在类内部仍可以产 生该类的对象。因为在类的外部开始还无法得到类的对象,只能调 用该类的某个静态方法以返回类内部创建的对象, 静态方法只能访问类中的静态 成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。嵌套类1. 嵌套类可以直接访问嵌套它的类成员,包括private 成员,但是,嵌套类的成员却不能被嵌套它的类直接访问。2.在类中直接定义的嵌套类的使用范围,仅限于这个类的内部,也就是说,A 类里定义了一个B类,那么B为A所知,却不被A的外面所知。内部类 的定义和普通类的定义没什么

12、区别, 它可以直接访问和引用它的外部类的所有变 量和方法,就像外部类中的其他非 static 成员的功能一样,和 外部类不同的是,内部类可以声明为 private 或 protected.3. 内部类可以用 static 来修饰,这样相当于是一个外部定义的类,它的用法就和 外部类一样了,所以 static 的内部类中可声明 static 成员,static 的内部类不能再使用外层封装类的非 static 的成员变量, staic 嵌套类很少 使用.class Outer int outer_i=100;void test() Inner in=new Inner();in.display();

13、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经验: 当一个类中的程序代码要用到另外一个类的实例对象,而另外一个类中 的程序代码又要访问第一个类中的成员,将另外一个类做成第一 个类的内部类, 程序代码就要容易编写得多, 这样的情况在实际应用中非常之多*

14、如果函数的局部变量 ( 函数的形参也是局部变量 ),内部类的成员变量,外部 类的成员变量重名,我们应该按下面的程序代码所使用的方式来 明确指定我们真正要访问的变量。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内部类

15、也可以通过创建对象从外部类之外被调用,只要将内部类声明为 即可。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

16、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=100 disp

17、lay: outer_i=100 display: outer_i=100display: outer_i=100display: outer_i=100*在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。class InOut Stri ng str =new Stri ng(Betwee n);public void amethod(fi nal int iArgs) int it315;class Bicycle public void sayHello() System.out.pri nt

18、l n( str);System.out.pri ntln (iArgs);在内部类中的sayHello方法中,我们可以访问变量iArgs和str,但不能访问it315*使用文档注释*对于类的说明应在类定义之前,对于方法的说明应在方法定义之前import java.io.*;/* Title: engin eero 类 * Description: 通过engineer类来说明java中的文档注释* Copyright: (C) 2003 * Company: IT人资讯交流网* author张孝祥* versio n 1.00*/ public class engin eerpubli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论