欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦]

      時間:2019-05-14 15:53:21下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦]》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦]》。

      第一篇:黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦]

      分享一個獲取指定包名下所有類的工具類,代碼如下

      1.2.3.4.5.6.7.8.9.import java.io.File;import java.io.FileFilter;

      import java.lang.annotation.Annotation;import java.net.JarURLConnection;import java.net.URL;

      import java.util.ArrayList;import java.util.Enumeration;import java.util.List;

      import java.util.jar.JarEntry;

      10.import java.util.jar.JarFile;11.12.public class ClassUtil { 13.// 獲取指定包名下的所有類 14.public static List> getClassList(String packageName, boolean isRecursive){

      15.List> classList = new ArrayList>();16.try { 17.Enumeration

      urls

      = Thread.currentThread().getContextClassLoader().getResources(packageName.replaceAll(“.”, “/”));

      18.while(urls.hasMoreElements()){ 19.URL url = urls.nextElement();20.if(url!= null){

      21.String protocol = url.getProtocol();22.if(protocol.equals(“file”)){

      23.String packagePath = url.getPath();

      24.addClass(classList, packagePath, packageName, isRecursive);

      25.} else if(protocol.equals(“jar”)){ 26.27.28.JarURLConnection jarURLConnection =(JarURLConnection)url.openConnection();

      JarFile

      jarFile

      = jarURLConnection.getJarFile();

      Enumeration jarEntries = jarFile.entries();

      29.while(jarEntries.hasMoreElements()){

      30.JarEntry jarEntry = jarEntries.nextElement();

      31.String jarEntryName = jarEntry.getName();32.if(jarEntryName.endsWith(“.class”)){ 33.String

      className

      = jarEntryName.substring(0, jarEntryName.lastIndexOf(“.”)).replaceAll(“/”, “.”);

      34.{

      if(isRecursive || className.substring(0, className.lastIndexOf(“.”)).equals(packageName))35.classList.add(Class.forName(className));

      36.} 37.} 38.} 39.} 40.} 41.}

      42.} catch(Exception e){ 43.e.printStackTrace();44.}

      45.return classList;46.} 47.48.// 獲取指定包名下的所有類(可根據(jù)注解進行過濾)49.public static List> getClassListByAnnotation(String packageName, Class annotationClass){

      50.List> classList = new ArrayList>();51.try { 52.Enumeration

      urls

      = Thread.currentThread().getContextClassLoader().getResources(packageName.replaceAll(“.”, “/”));

      53.while(urls.hasMoreElements()){ 54.URL url = urls.nextElement();55.if(url!= null){

      56.String protocol = url.getProtocol();57.if(protocol.equals(“file”)){

      58.String packagePath = url.getPath();

      59.addClassByAnnotation(classList, packagePath, packageName, annotationClass);

      60.} else if(protocol.equals(“jar”)){ 61.62.63.JarURLConnection jarURLConnection =(JarURLConnection)url.openConnection();

      JarFile

      jarFile

      = jarURLConnection.getJarFile();

      Enumeration jarEntries = jarFile.entries();

      64.while(jarEntries.hasMoreElements()){ 65.JarEntry

      jarEntry

      = jarEntries.nextElement();

      66.String jarEntryName = jarEntry.getName();67.if(jarEntryName.endsWith(“.class”)){ 68.String

      className

      = jarEntryName.substring(0, jarEntryName.lastIndexOf(“.”)).replaceAll(“/”, “.”);

      69.70.Class cls = Class.forName(className);

      if(cls.isAnnotationPresent(annotationClass)){

      71.classList.add(cls);72.} 73.} 74.} 75.} 76.} 77.}

      78.} catch(Exception e){ 79.e.printStackTrace();80.}

      81.return classList;82.} 83.84.private static void addClass(List> classList, String packagePath, String packageName, boolean isRecursive){

      85.try {

      86.File[] files = getClassFiles(packagePath);

      87.if(files!= null){

      88.for(File file : files){

      89.String fileName = file.getName();90.if(file.isFile()){

      91.String className = getClassName(packageName, fileName);

      92.classList.add(Class.forName(className));93.} else {

      94.if(isRecursive){ 95.96.97.String subPackagePath = getSubPackagePath(packagePath, fileName);

      String subPackageName = getSubPackageName(packageName, fileName);

      addClass(classList, subPackagePath, subPackageName, isRecursive);

      98.} 99.} 100.} 101.}

      102.} catch(Exception e){ 103.e.printStackTrace();104.} 105.} 106.107.private static File[] getClassFiles(String packagePath){ 108.return new File(packagePath).listFiles(new FileFilter(){ 109.@Override

      110.public boolean accept(File file){ 111.return

      (file.isFile()

      && file.getName().endsWith(“.class”))|| file.isDirectory();

      112.} 113.});114.} 115.116.private static String getClassName(String packageName, String fileName){

      117.String className = fileName.substring(0, fileName.lastIndexOf(“.”));

      118.if(org.apache.commons.lang.StringUtil.isNotEmpty(packageName)){

      119.className = packageName + “.” + className;120.}

      121.return className;122.} 123.124.private static String getSubPackagePath(String packagePath, String filePath){

      125.String subPackagePath = filePath;126.if(org.apache.commons.lang.StringUtil.isNotEmpty(packagePath)){

      127.subPackagePath = packagePath + “/” + subPackagePath;128.}

      129.return subPackagePath;130.} 131.132.private static String getSubPackageName(String packageName, String filePath){

      133.String subPackageName = filePath;134.if(org.apache.commons.lang.StringUtil.isNotEmpty(packageName)){

      135.subPackageName = packageName + “.” + subPackageName;136.}

      137.return subPackageName;138.} 139.140.private static void addClassByAnnotation(List> classList, String packagePath, String packageName, Class annotationClass){

      141.try {

      142.File[] files = getClassFiles(packagePath);143.if(files!= null){

      144.for(File file : files){

      145.String fileName = file.getName();146.if(file.isFile()){

      147.String className = getClassName(packageName, fileName);

      148.Class cls = Class.forName(className);149.if(cls.isAnnotationPresent(annotationClass)){

      150.classList.add(cls);151.} 152.} else { 153.154.155.String

      subPackagePath

      = getSubPackagePath(packagePath, fileName);

      String

      subPackageName

      = getSubPackageName(packageName, fileName);

      addClassByAnnotation(classList, subPackagePath, subPackageName, annotationClass);

      156.} 157.} 158.}

      159.} catch(Exception e){ 160.e.printStackTrace();161.} 162.} 163.}

      第二篇:黑馬程序員_PHP_課程同步筆記day30:PHP類中關鍵字

      【黑馬程序員濟南】PHP課程同步筆記day30:PHP類中

      關鍵字

      今天我來為大家講解一下PHP類中的一些關鍵字: parent和self關鍵字 parent:

      用在一個類的一個方法中;

      代表這個類的“父類”——注意,是代表一個類,不是類的對象;

      但:實際應用中,常常會看起來“代表”這個類的父類對象——因為用的時候,是使用了父類的對象來調(diào)用某個方法而產(chǎn)生了所謂的對象傳遞; [PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著 1;//聲明靜態(tài)屬12 性 13 } 14 15 class B extends A{ static function f1(){ echo “父類的靜態(tài)屬性s1:”.parent::$s1;echo “父類的常量PI:”.parent::PI;} } B::f1();顯示結果:

      父類的靜態(tài)屬性s1:1

      父類的常量PI:3.14

      黑馬程序員濟南中心 編著

      self:

      用在一個類的一個方法中;

      代表這個類“本身”——還是代表一個類,而不是類的對象; [PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著

      己的常量PI:”.self::PI;} } B::f1();典型使用1:

      在構造方法中,調(diào)用父類的構造方法,以完成對象的一些共同的數(shù)據(jù)初始化工作。[PHP] 純文本查看 復制代碼 ? 01

      04 class Member{ 05 public $name;//聲明一個變量 06 public $salary;//聲明一個變量 07 //創(chuàng)建一個構造方法 08 function

      09 __construct($name,$salary){ 10 $this->name = $name;//把實例11 化類時的實參傳遞給之前聲明好的變量 12 $this->salary = $salary;//把實例13 化類時的實參傳遞給之前聲明好的變量

      黑馬程序員濟南中心 編著 } 15 } 16 class Teacher extends Member{ 17 public $edu;//聲明一個變量 18 //創(chuàng)建一個構造方法 19 function __construct($name,$salary,$edu){ 21 //$this->name = $name;22 //$this->salary = $salary;23 //將上面兩行的內(nèi)容用下面一行類24 代替 //調(diào)用父類的構造方法,去完成一個26 共同屬性數(shù)據(jù)的初始化 parent::__construct($name,$salar28 y);29 //把實例化類時的實參傳遞給之前聲30 明好的變量

      $this->edu = $edu;32 } 33 } 34 class Student extends Member{ 35 public $age;//聲明一個變量

      黑馬程序員濟南中心 編著

      //創(chuàng)建一個構造方法 37 function

      __construct($name,$salary,$age){ 39

      //調(diào)用父類的構造方法,去完成一個41 共同屬性數(shù)據(jù)的初始化

      parent::__construct($name,$salary);//把實例化類時的實參傳遞給之前聲明好的變量

      $this->age = $age;} } $t1 = new Teacher(“老師”,1000,“大學”);echo “

      ”;var_dump($t1);echo “
      ”;$s1 = new Student(“學生”,100,18);var_dump($s1);

      黑馬程序員濟南中心 編著

      不知道大家對今天講解的parent和self關鍵字學習的程度如何?。咳绻信d趣,歡迎來黑馬程序員濟南中心來詳細了解PHP~

      黑馬程序員濟南中心 編著

      第三篇:黑馬程序員_PHP_課程同步筆記day33:類和對象的其他相關技術[推薦]

      類和對象的其他相關技術

      類的自動加載: 基本概念:

      當在一個代碼中,需要使用一個類(比如new),但此時,在這行代碼之前,都沒有出現(xiàn)過該類的定義,則php有一種機制,可以讓系統(tǒng)這個時候去調(diào)用一個函數(shù),在該函數(shù)中,我們就可以預先寫好加載類的代碼——這樣就實現(xiàn)了類的自動加載。

      該函數(shù)就是:__autoload()該函數(shù)使用形式如下:

      function __autoload($class_name){

      //這里就可以去寫加載類的代碼,其中:

      //$class_name就代表“正需要”的那個類名;

      } [PHP] 純文本查看 復制代碼 ? 1

      黑馬程序員濟南中心 編著

      可見,實現(xiàn)這種類的自動加載的方便性,需要做到:

      1,類文件名有一個統(tǒng)一的形式:比如:類名.clsss.php

      2,統(tǒng)一都放在一個文件夾中;

      3,盡可能做到:一個類文件中,只放一個類的定義;

      自定義類的加載函數(shù)

      使用下述函數(shù),可以人為定義“多個”自動加載函數(shù)(這些函數(shù)的作用跟__autoload)一樣。使用形式:

      spl_autoload_register(“自動加載函數(shù)名1”);

      spl_autoload_register(“自動加載函數(shù)名2”);

      。。

      然后就可以去定義這些函數(shù)了

      在運行的時候,如果需要一個類,就先調(diào)用第1個函數(shù)去“試圖”加載該類,如果在該函數(shù)中沒有加載成功,就會繼續(xù)調(diào)用下一個函數(shù)繼續(xù)“試圖”加載該類,依此類推。。舉例:

      [PHP] 純文本查看 復制代碼 ? 01

      04 spl_autoload_register(“auto1”);

      黑馬程序員濟南中心 編著

      05 spl_autoload_register(“auto2”);06 function auto1($class_name){ 07 echo “
      進入auto1,需要:$class_name”;08 $file = “./{$class_name}.class.php”;09 if(file_exists($file)){ 10 include_one $file;11 } 12 } 13 function auto2($class_name){ 14 echo “
      進入auto2,需要:$class_name”;15 $file = “./{$class_name}.class.php”;16 if(file_exists($file)){ 17 include_one $file;18 } 19 } 20 $obj1 = new A();22 echo “
      ”;23 var_dump($obj1);24 $obj2 = new B();26 echo “
      ”;

      黑馬程序員濟南中心 編著 var_dump($obj2);

      展示結果為: 進入auto1,需要:A object(A)#1(0){} 進入auto1,需要:B 進入auto2,需要:B object(B)#2(0){}

      對象的復制

      $obj1 = new A();

      $obj2 = $obj1;

      //這里,雖然是值傳遞,但因為對象數(shù)據(jù)存儲的特殊性,并沒有復制對象數(shù)據(jù)本身

      //即,并沒有生成一個新對象;

      要想復制一個對象——得到一個完完全全的相同的對象,只能這樣:

      $obj3 = clone $obj1;[PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著

      05 } 06

      07 $obj1 = new A();08 $obj2 = $obj1;09 $obj3 = clone $obj1;10 var_dump($obj1);11 var_dump($obj2);12 var_dump($obj3);13 $obj1->p1 = 11;15 var_dump($obj1);16 var_dump($obj2);17 var_dump($obj3);展示效果:

      object(A)#1(1){[“p1”]=>int(1)} object(A)#1(1){[“p1”]=>int(1)} object(A)#2(1){[“p1”]=>int(1)}

      object(A)#1(1){[“p1”]=>int(11)} object(A)#1(1){[“p1”]=>int(11)} object(A)#2(1){[“p1”]=>int(1)}

      黑馬程序員濟南中心 編著

      可見,普通賦值所得到的對象,仍然是原來的對象;

      只有clone所得到的對象,才是一個全新的對象; 注意:

      1,當對一個對象進行克隆的時候,就會自動調(diào)用系統(tǒng)中的__clone()魔術方法(如果有);

      2,因此,對于單例類的需求來說,就應該做到:禁止克隆,寫法:

      private function __clone(){ }

      對象的遍歷

      跟數(shù)組類似,對象的“所有屬性”,也是可以進行遍歷的——一個一個取出。

      形式:

      foreach($對象 as $prop => $value){

      //$prop表示屬性名;

      //$value表示對應的屬性值;

      } 注意:

      其實能取到的屬性數(shù)據(jù),只是在該位置可以訪問(有權限訪問)到的那些。[PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著

      04 05 class A{ 06 public $p1 = 1;07 protected $p2 08 = 2;09 private $p3 = 3;10 static $p4 = 4;11 function 12 showInfo(){ 13 foreach($this 14 as $prop=>$value){ 16 echo “屬性17 $prop = $value”;18 } 19 } 20 } 21

      $a1 = new A();foreach($a1 as $prop=>$value){ echo “屬性

      黑馬程序員濟南中心 編著

      $prop = $value”;}

      $a1->showInfo();展示效果: 屬性p1 = 1;

      屬性p1 = 1 屬性p2 =2 屬性p3 = 3

      不知道大家對今天講的類和對象的其他相關技術學習的怎么樣啊?有什么疑問歡迎來黑馬程序員濟南中心來咨詢喲~

      黑馬程序員濟南中心 編著

      第四篇:黑馬程序員_PHP_課程同步筆記day34:PHP類其他魔術方法

      【黑馬程序員濟南】PHP類其他魔術方法

      序列化:

      就是將一個變量的“內(nèi)存數(shù)據(jù)形式”,轉換為“硬盤數(shù)據(jù)形式”的過程。

      分2步就可以:

      1,$str = serialize($變量);//該函數(shù)將該變量數(shù)據(jù),轉換為一個字符串

      2,file_put_contents(“文本文件名”, $str);//將該字符串保存到該文件中。[PHP] 純文本查看 復制代碼 ? 01 5.5,'bbcc'=>true);13 $data3 = new A();

      黑馬程序員濟南中心 編著 //開始轉換得到一個字符串 16 $str1 = serialize($data1);17 $str2 = serialize($data2);18 $str3 = serialize($data3);19 //開始寫入硬盤中 file_put_contents('./file1.txt',$str1);22 file_put_contents('./file2.txt',$str2);23 file_put_contents('./file3.txt',$str3);24

      [align=left] 反序列化:

      將已經(jīng)存到硬盤的變量數(shù)據(jù),轉換(恢復)到內(nèi)存數(shù)據(jù)(變量)形式的過程。同樣分2步:

      1,$str = file_get_contents(文本文件名);

      //讀取出序列化之后所存儲的文件內(nèi)容(就是字符串)

      2,$變量 = unserialize($str);

      //將該字符串恢復為變量(數(shù)據(jù));

      [PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著

      02 //演示3中數(shù)據(jù)的序列化結果 03 class A{ 04 public $p1 = 1;05 protected $p2 = 2;06 private $p3 = 3;07 } 08

      09 //開始從硬盤中讀取數(shù)據(jù)(字符串)10 $str1 = file_get_contents('./file1.txt');11 $str2 = file_get_contents('./file2.txt');12 $str3 = file_get_contents('./file3.txt');13 //開始轉換得到一個字符串 15 $data1 = unserialize($str1);16 $data2 = unserialize($str2);17 $data3 = unserialize($str3);18 var_dump($data1);20 var_dump($data2);21 var_dump($data3);結果為: float(1.1)

      黑馬程序員濟南中心 編著

      array(3){[0]=>string(2)“aa” [5]=>float(5.5)[“bbcc”]=>bool(true)} object(A)#1(3){[“p1”]=>int(1)[“p2”:protected]=>int(2)[“p3”:“A”:private]=>int(3)} __sleep():

      該魔術方法是對一個對象進行“序列化”的時候,會被自動調(diào)用。

      此時,在該方法中,我們就可以(而且必須)返回一個數(shù)組,該數(shù)組中含所有我們“想要”對該對象的屬性進行序列化的屬性名。[PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著 }

      __wakeup()

      該魔術方法是對一個對象進行“反序列化”的時候,會被自動調(diào)用。

      此時,該對象的屬性值,就會恢復到“原來的數(shù)據(jù)”

      但:如果某個屬性當時并沒有做序列化,則此時就不會恢復為原來對象的數(shù)據(jù),而是恢復為該類中的初始數(shù)據(jù); [PHP] 純文本查看 復制代碼 ? 01

      黑馬程序員濟南中心 編著 $this->p1 = $p1;13 $this->p2 = $p2;14 $this->p3 = $p3;15 } 16 function __sleep(){ 17 return 18 array(“p1”,“p3”);19 } 20 function 21 __wakeup(){ 22 echo “對象蘇醒23 了。。”;24 } 25 } 26

      $s1 = new S(11,12,13);$str = serialize($s1);var_dump($)

      [align=left]

      黑馬程序員濟南中心 編著

      不知道大家對今天講的PHP類其他魔術方法相關技術學習的怎么樣?。坑惺裁匆蓡枤g迎來黑馬程序員濟南中心來咨詢喲~

      黑馬程序員濟南中心 編著

      第五篇:黑馬程序員java培訓就業(yè)班筆記:day14(多線程、String類)總結

      Day14總結:

      1、wait和sleep的區(qū)別:(面試題)

      1、sleep指定時間,wait可以指定時間,也可以不用指定時間。

      2、wait方法必須定義在同步中,sleep方法不一定。

      3、在同步中wait sleep對于執(zhí)行權和鎖的處理不同: i.Sleep釋放CPU執(zhí)行權,但是沒有釋放鎖。ii.Wait釋放執(zhí)行權、釋放鎖。實現(xiàn)代碼: Public void run(){ Synchronized(this){ Code…sleep(10);//此線程進入凍結狀態(tài),釋放了執(zhí)行權,并沒有釋放鎖。

      Wait();//等待狀態(tài)下,釋放執(zhí)行權、釋放鎖,因為它需要被對象喚醒,所以要釋放鎖

      } } Public void method(){ Synchronized(this){

      notifyAll();//喚醒上面所有的線程。但是此時t0、t1并沒有執(zhí)行,因為鎖還在此線程中,只有當它執(zhí)行完畢之后,釋放鎖。它們獲取鎖之后才有機會執(zhí)行。

      } }

      2、停止線程:

      1、Stop方法已經(jīng)過時,為什么?因為該方法具有不固定的安全性。

      如何停止線程? 只有一種方法:

      線程執(zhí)行的代碼結束,線程會自動終止。

      1、run方法中通常有循環(huán),所以只要循環(huán)結束即可。所以只要控制循環(huán)條件。最簡單的方式就是定義標記。

      2、如果run中有同步可以讓線程出現(xiàn)凍結狀態(tài)的方法,比如wait那么線程就不會去讀取標記。這時必須讓線程恢復到運行狀態(tài)才可以有機會讀取到標記,所以通過正常的恢復方法比如notify、sleep時間到,但是如果沒有辦法正?;謴?,就必須使用強制手段,interrupt方法,強制將線程的凍結狀態(tài)清除,讓線程恢復運行。其實就是讓線程重新獲取讀取標記、結束。但是別忘了強制動作會產(chǎn)生異常要處理。實現(xiàn)代碼:

      StopThreadDemo.java

      class StopThread implements Runnable

      { private boolean flag=true;//定義標記控制住循環(huán)。public synchronized void run(){ while(flag)//開始true、此時定義標記控制循環(huán)。

      {

      try

      {

      wait();//當存在同步時,wait方法不會讓線程去讀取標記。此時主線程結束了,但是這兩個線程卻在這里等待了。并沒有結束。

      }

      catch(InterruptedException e)

      {

      System.out.println(Thread.currentThread().getName()+“....Exception”);

      setFlag();//如果發(fā)生了強制中斷,只要把狀態(tài)切斷到假。

      }

      System.out.println(Thread.currentThread().getName()+“...”);} } public void setFlag(){ flag=false;} }

      class StopThreadDemo { public static void main(String[] args){ StopThread st=new StopThread();Thread t1=new Thread(st);Thread t2=new Thread(st);t1.start();t2.setDaemon(true);//標記成了守護線程。

      t2.start();

      for(int x=0;;x++){

      if(x==50)

      {

      st.setFlag();

      t1.interrupt();//t1將它的凍結狀態(tài)強制結束。

      t2.interrupt();//中斷方法。其實不是中斷線程。而且還拋出了異常。

      //其實會將凍結中的線程強行恢復到運行狀態(tài),就會讀到標記。這就是中斷線程。并不是結束線程。一定要注意要區(qū)分。

      //

      break;

      }

      System.out.println(Thread.currentThread().getName()+“....”);}

      System.out.println(“Hello World!”);} }

      3、守護線程:setDaemon();線程標記,守護線程,當正在運行的線程是守護線程時,JVM自動退出,該方法在開啟之前調(diào)用,也就是說在start方法之前調(diào)用。

      線程分兩種:

      前臺線程:自己創(chuàng)建的線程都是前臺線程。

      后臺線程:一旦調(diào)用了此方法為守護線程之后的線程都是守護線程。

      區(qū)別:都是線程,啟動后都再搶奪CPU的執(zhí)行權,這里是沒有區(qū)別的,最大的區(qū)別就是如果線程結束了,正在運行的后臺線程也隨著結束,簡單的說后臺線程是以來前臺線程而執(zhí)行的。

      4、線程細節(jié):

      1、join:當A線程執(zhí)行到B線程時,那么A線程就會等待,等B執(zhí)行完畢,A才會執(zhí)行。

      代碼實現(xiàn):

      D1.join();d1加入,說明了主線程必須先釋放執(zhí)行權給它,等到d1結束之后主線程才恢復執(zhí)行狀態(tài),所以輸出結果是等d1全部都執(zhí)行完畢之后,才有其他線程的交替執(zhí)行。

      記住:誰把執(zhí)行權給了誰,就只和給的對象的執(zhí)行權有關,等它結束之后,就會重新獲取執(zhí)行

      記?。褐骶€程是因為誰放棄了執(zhí)行權,就只和那個線程有關系權,與其他線程無關。

      2、優(yōu)先級:代表搶奪資源的頻率。有兩種方法:getPriority setPriority來獲取優(yōu)先級和設置優(yōu)先級,只有十個數(shù)字可以使用1-10這十個數(shù)字,同時線程中提供了幾個特殊的方法: 線程類中提供了MAX_PRIORITY MIN_PRIORTY NORM_PRIORTY。

      3、yield:結束該線程,釋放執(zhí)行權。

      4、toString();獲取線程詳細信息,包括線程組、線程名、所屬線程。實現(xiàn)代碼:ThreadMethodDemo.java

      5、string類:

      1、字符串的特點:

      1、java中用String類來描述字符串。

      2、字符串是一個特殊的對象,一旦初始化就不可以被改變,因為是常量。面試題1: String s=“abc”;String s1=new Strng(“abc”);是否相同?

      前者“abc”是一個對象。后者是兩個對象,new string()代表一個對象,“abc”也代表一個對象。

      Sop(s1==s2);==比較的是數(shù)據(jù)。false Sop(s1.equals(s2));比較的是內(nèi)存的地址值,equals覆寫了Object類中的equals方法。True

      面試題2: String a=“abcd”;//在緩沖池創(chuàng)建了一個abcd的字符串。String a1=“ab”;//a1和a2都是變量,無法確定。

      String a2=“cd”;String b=a1+a2;//b是要重新進行分配的。

      String c=“ab”+“cd”;//兩個都是常量值,用連接符連接在一起還是字符創(chuàng)。abcd System.out.println(“a==b:”+(a==b));//false System.out.println(“a==c:”+(a==c));//true

      2、常見操作方法:

      1、獲?。?/p>

      a)獲取長度:

      Int length();數(shù)組長度是個屬性,字符串是個方法 b)獲取字符串中的字符:

      charAt(int index);返回值是一個字符。

      c)一個字符或者一個字符串在一個字符串中的位置

      Int indexof(int ch)Int indexof(int ch,int fromIndex)Int indexof(ch,fromIndex)Int indexof(srting,fromindex)Int lastIndexof(ch);注意:這些獲取索引位的方法,如果沒有查找的內(nèi)容,返回-1,所以這個方法。

      d)獲取部分字符串:

      String substring(begin,end)

      2、判斷:

      a)是否包含指定的字符串

      Boolean contains(String)

      b)是否是以指定的字符串開頭

      Boolean startsWith(String)c)是否是以指定的字符串結尾

      Boolean endwith(String)d)忽略大小寫判斷字符串

      Boolean equalsIgnoreCase(string)

      3、轉換:

      a)將字符串轉成大小寫

      String toLowerCase();String toUpperCase();b)將字符串轉成數(shù)組

      Byte[] getBytes();Char[] getChar();c)將字符串轉成字符串數(shù)組

      String[] d)將字符串中的內(nèi)容進行替換

      String replace(oldch1,new ch2)String replace(string1,string2)e)去除字符串兩端的空白

      Trim();如何查閱API文檔的小技巧,先查找返回值類型,縮小查找范圍。實現(xiàn)代碼:

      ublic static void main(String[] args){

      // stringMethod4();

      String str = “

      ab c

      ”;

      System.out.println(“-”+str.trim()+“-”);

      String s = String.valueOf(4);

      System.out.println(4+“");

      System.out.println(”ab“+”cd“);

      System.out.println(”ab“.concat(”cd“));

      }

      private static void stringMethod4(){

      String str = ”lisi.wangwu.zhaoliu“;

      } String[] strs = str.split(”.“);for(int i = 0;i < strs.length;i++){ System.out.println(strs[i]);}

      str = ”hello“;

      String s = str.replace('a', 'k');

      System.out.println(”s=“+s);System.out.println(str);private static void stringMethod3(){

      String str = ”aBCd“;

      String s = str.toLowerCase();System.out.println(s);String s1 = str.toUpperCase();System.out.println(s1);

      System.out.println(str);

      char[] arr = str.toCharArray();

      for(int x = 0;x

      System.out.println(arr[x]);} } private static void stringMethod2(){

      String str = ”ThreadDemo.java“;

      System.out.println(”contains(Demo):“+str.contains(”Demo“));System.out.println(”starsWith(Thread):“+str.startsWith(”Thread“));System.out.println(”endsWith(.java):“+str.endsWith(”.java“));System.out.println(”isEmpty:“+str.isEmpty());str = ”abc“;說

      System.out.println(str.equalsIgnoreCase(”abC“));}

      private static void stringMethod(){

      String str = ”abcdaef“;System.out.println(”length;“+str.length());

      System.out.println(”charAt(2):“+str.charAt(2));

      System.out.println(”indexOf(a):“+str.indexOf('a',2));

      System.out.println(”lastIndexOf(a):“+str.lastIndexOf('k'));

      System.out.println(”substring(1,3):"+str.substring(0,str.length()));}

      下載黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦]word格式文檔
      下載黑馬程序員:工具類----獲取指定包名下的所有類[本站推薦].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦