WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院WEB开发Jsp Java语言深入:对java.lang的研究下 阅读

Java语言深入:对java.lang的研究下

 2008-01-05 18:56:19 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫岄梺璇茬箲濮樸劑鍩€椤掍礁鍤柛鎾跺枎椤繐煤椤忓嫬鐎銈嗘礀閹冲酣宕滄导瀛樷拺闂侇偆鍋涢懟顖涙櫠椤斿墽纾煎璺猴功缁夎櫣鈧鍠栭…閿嬩繆濮濆矈妲烽梺绋款儐閹瑰洤螞閸愩劉妲堟繛鍡楃箲濞堟﹢姊绘担椋庝覆缂傚秮鍋撴繛瀛樼矤閸撶喖宕洪埀顒併亜閹烘垵鈧綊寮抽鍕厱閻庯綆浜烽煬顒傗偓瑙勬磻閸楀啿顕i崐鐕佹Ь闂佸搫妫寸粻鎾诲蓟閵娾晜鍋嗛柛灞剧☉椤忥拷
核心提示:5、SystemSystem类保存静态方法和变量的集合,标准的输入,Java语言深入:对java.lang的研究下,输出和java运行时错误输出存储在变量in,out和err中,它通常用于指明被创建的一个答应对对象进行位复制(也就是对象副本)的类,假如试图用一个不支持Cloneable接口的类调用clone( )方法,

  5、 System
  
  System类保存静态方法和变量的集合。标准的输入,输出和java运行时错误输出存储在变量in,out和err中。由System类定义的方法列在表14-11中。注重当所做操作是安全方式所不答应的时,许多方法引发一个安全异常(SecurityException)。应当注重的另一点是:Java 2不赞成使用runFinalizersonExit( )方法。该方法是在Java 1.1中增加的,同时也被证实是不可靠的。
  
  让我们看一看System类的一些普遍用法。
  
  表11 由Sysem定义的方法
  
  方法 描述
  
  static void arraycopy(Object source, int  sourceStart, Object target, int targetStart,  int size) 复制数组。被复制的数组由source传递,而source中开始复制数组时的下标由sourceStart传递。接收复制的数组由target传递。而target中开始复制数组时的下标由targetStart传递。Size是被复制的元素的个数
  
  static long currentTimeMillis( ) 返回自1970年1月1日午夜至今的时间,时间单位为毫秒。
  
  static void exit(int exitCode) 暂停执行,返回exitCode值给父进程(通常为操作系统)。按照约定,0表示正常退出,所有其他的值代表某种形式的错误
  
  static void gc( ) 初始化垃圾回收
  
  static PRoperties getProperties( ) 返回与Java运行系统有关的属性类(Properties class)将在第15章中介绍)
  
  static String getProperty(String which) 返回与which有关的属性。假如期望的属性没有被发现,返回一个空对象(null object)
  
  static String getProperty(String which,  String default) 返回一个与which有关的属性。假如期望的属性没有被发现,则返回default
  
  static SecurityManager getSecurityManager( ) 返回当前的安全治理程序,假如没有安装安全治理程序,则返回一个空对象(null object)
  
  static native int identityHashCode(Object obj) 返回obj的特征散列码
  
  static void load(String libraryFileName) 载入其文件由libraryFileName指定的动态库,必须指定其完全路径
  
  static void loadLibrary(String libraryName) 载入其库名为libraryName的动态库
  
  static String mapLibraryName(String lib) 对应名为lib的库,返回一个指定平台的名字(在Java 2中新增加的)
  
  static void runFinalization( ) 启动调用不用的但还不是回收站中的对象的finalize( )方法。
  
  static void setErr(PrintStream eStream) 设置标准的错误(err)流为iStream
  
  static void setIn(InputStream iStream) 设置标准的输入(in)流为oStream
  
  static void setOut(PrintStream oStream) 设置标准的输出(out)流eStream
  
  static void setProperties(Properties sysProperties) 设置由sysProperties指定的当前系统属性
  
  Static String setProperty(String which, String v) 将v值赋给名为which的属性(在Java 2中新增加的)
  
  static void setSecurityManager ( SecurityManager secMan) 设置由secMan指定的安全治理程序
  
  5.1、 使用currentTimeMillis( )记录程序执行的时间
  
  可以发现System类的一个非凡有意义的用法是利用currentTimeMillis( )方法来记录你的程序的不同部分的执行时间。currentTimeMillis( )方法返回自从1970年1月1号午夜起到现在的时间,时间单位是毫秒。假如要记录你的程序中一段有问题程序的运行时间可以在这段程序开始之前存储当前时间,在该段程序结束之际再次调用currentTimeMillis( )方法。执行该段程序所花费的时间为其结束时刻的时间值减去其开始时刻的时间值。下面的程序说明了这一点:
  
  // Timing program execution.
  
  class Elapsed {
  
  public static void main(String args[]) {
  
  long start, end;
  
  System.out.println("Timing a for loop from 0 to 1,000,000");
  
  // time a for loop from 0 to 1,000,000
  
  start = System.currentTimeMillis(); // get starting time
  
  for(int i=0; i < 1000000; i++) ;
  
  end = System.currentTimeMillis(); // get ending time
  
  System.out.println("Elapsed time: " + (end-start));
  
  }
  
  }
  
  这里是程序运行的一个输出样本(记住你的程序的运行结果可能与此不同):
  
  Timing a for loop from 0 to 1,000,000
  
  Elapsed time: 10
  
  5.2、 使用arraycopy( )
  
  使用arraycopy( )方法可以将一个任意类型的数组快速地从一个地方复制到另一个地方。这比使用Java中编写的循环要快的多。下面是一个用arraycopy( )方法复制两个数组的例子。首先,将数组a复制给数组b,接下来,数组a中的所有元素向后移一位,然后数组b中元素向前移一位。
  
  // Using arraycopy().
  
  class ACDemo {
  
  static byte a[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
  
  static byte b[] = { 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 };
  
  public static void main(String args[]) {
  
  System.out.println("a = " + new String(a));
  
  System.out.println("b = " + new String(b));
  
  System.arraycopy(a, 0, b, 0, a.length);
  
  System.out.println("a = " + new String(a));
  
  System.out.println("b = " + new String(b));
  
  System.arraycopy(a, 0, a, 1, a.length - 1);
  
  System.arraycopy(b, 1, b, 0, b.length - 1);
  
  System.out.println("a = " + new String(a));
  
  System.out.println("b = " + new String(b));
  
  }
  
  }
  
  正如从下面的输出中看到的那样,可以使用相同的源和目的在任一方向进行复制:
  
  a = ABCDEFGHIJ
  
  b = MMMMMMMMMM
  
  a = ABCDEFGHIJ
  
  b = ABCDEFGHIJ
  
  a = AABCDEFGHI
  
  b = BCDEFGHIJJ
  
  5.3 、 环境属性
  
  下面的属性在Java 2的所有环境中可以使用:
  
  file.separator java.vendor.url os.arch
  
  java.class.path java.version os.name
  
  java.class.version java.vm.name os.version
  
  java.ext.dirs java.vm.specification.name Path.separator
  
  java.home java.vm.specification.vendor User.dir
  
  java.specification.name java.vm.specification.version User.home
  
  java.specification.vendor java.vm.vendor User.name
  
  java.specification.version java.vm.version
  
  java.vendor line.separator
  
  可以通过调用System.getProperty( )方法来获得不同环境变量的值。例如下面的程序显示当前用户目录的路径:
  
  class ShowUserDir {
  
  public static void main(String args[]) {
  
  System.out.println(System.getProperty("user.dir"));
  
  }
  
  }
  
  6、 Object
  
  正如我们在第1部分所提及的,Object类是其他所有类的一个超类。表14-12给出了Object类中定义的方法,这些方法对于每一个对象都是可用的。
  
  表12 由Object定义的方法
  
  方法 描述
  
  Object clone( )  Throws   CloneNotSupportedException 创建一个与调用对象一样的新对象
  
  Boolean equals(Object object) 假如调用对象等价于object返回true
  
  void finalize( )  throws Throwable 默认的finalize( )方法。经常被子类重载
  
  final Class getClass( ) 获得描述调用对象的Class对象
  
  int hashCode( ) 返回与调用对象关联的散列码
  
  final void notify( ) 恢复等待调用对象的线程的执行
  
  final void notifyAll( ) 恢复等待调用对象的所有线程的执行
  
  String toString( ) 返回描述对象的一个字符串
  
  final void wait( )  throws InterruptedException 等待另一个执行的线程
  
  final void wait(long milliseconds)  throws InterruptedException 等待直至指定毫秒数的另一个执行的线程
  
  final void wait(long milliseconds,       int nanoseconds)  throws InterruptedException 等待直至指定毫秒加毫微秒数的另一个执行的线程
  
  7、 使用clone( )和Cloneable接口
  
  由Object类定义的绝大部分方法在本书其他部分讨论。而一个非凡值得关注的方法是clone( )。clone( )方法创建调用它的对象的一个复制副本。只有那些实现Cloneable接口的类能被复制。
  
  Cloneable接口没有定义成员。它通常用于指明被创建的一个答应对对象进行位复制(也就是对象副本)的类。假如试图用一个不支持Cloneable接口的类调用clone( )方法,将引发一个CloneNotSupportedException异常。

Tags:Java 深入

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接