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

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

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

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

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

      總結(jié):(C和Java混合)UNIX Domain Socket IPC[優(yōu)秀范文5篇]

      時(shí)間:2019-05-12 08:08:59下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《總結(jié):(C和Java混合)UNIX Domain Socket IPC》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《總結(jié):(C和Java混合)UNIX Domain Socket IPC》。

      第一篇:總結(jié):(C和Java混合)UNIX Domain Socket IPC

      總結(jié):(C和Java混合)UNIX Domain Socket IPC

      C語(yǔ)言和Java語(yǔ)言的混合其實(shí)是一樣的,都是分客戶端和服務(wù)端;

      1、C語(yǔ)言的客戶端和Java的服務(wù)器端

      Java服務(wù)端代碼:

      import android.net.LocalServerSocket;

      import android.net.LocalSocket;

      import android.net.LocalSocketAddress;

      import java.io.IOException;

      import java.io.InputStream;

      import java.io.OutputStream;

      LocalServerSocket mlss = new LocalServerSocket(“/dev/socket/mysocket”);

      while(true)

      {

      LocalSocket mServerSocket = mlss.accept();

      if(mServerSocket!= null)

      {

      InputStream is = mServerSocket.getInputStream();

      outputStream out = mServerSokcet.getOutputStream();

      is.read(buff);

      out.write(buff);

      out.flush();

      }

      }

      mlss.close();

      C語(yǔ)言客戶端代碼結(jié)構(gòu)如下:

      int mSocketFd = socket(PF_UNIX, SOCK_STREAM, 0);

      CHCEK(mSocketFd);

      struct sockaddr_un mRemoteSocket;

      mRemoteSocket.sun_family = AF_UNIX;//指定協(xié)議

      strcpy(mRemoteSocket.sun_path, SOCK_PATH);//指定文件

      int len = offsetof((struct sockaddr_un*), sun_path)+

      strlen(mRemoteSocket.sun_path);

      int io_fd= connect(mSocketFd,(struct sockaddr *)mRemoteSocket, len);CHECK(io_fd);

      send(io_fd, buff, sizeof(buff), 0);

      recev(io_fd, buff, len, 0);

      close(io_fd);

      2、C語(yǔ)言版服務(wù)器和Java語(yǔ)言客戶端

      int mSocketFd = socket(PF_UNIX, SOCK_STREAM, 0);

      CHCEK(mSocketFd);

      struct sockaddr_un mServerAddr;

      mServerAddr.sun_family = AF_UNIX;//指定協(xié)議

      strcpy(mServerAddr.sun_path, SOCK_PATH);//指定文件

      int len = offsetof((struct sockaddr_un*), sun_path)+

      strlen(mServerAddr.sun_path);

      int res = bind(mSocketFd ,(struct sockaddr *)&mServerAddr, len);

      listen(mSocketFd,16);

      int mIOfd;

      struct sockaddr_un mClientAddr;

      intmClientAddrSockLen = sizeof(mClientAddr);

      if((mIOfd = accept(fd,(struct sockaddr *)&mClientAddr , &mClientAddrSockLen))< 0){//在這個(gè)地方等待客戶端的sendlog(“Failed to accept socket.return:%derr:%sn”, s, strerror(errno));free(qlog_nodes);

      exit(ERR_UNSPEC);

      }/////mIOfd是一個(gè)fd,可以直接用來(lái)讀寫的//從socket中得到消息ret = TEMP_FAILURE_RETRY(recv(mIOfd, &message,sizeof(message), 0));//讀取消息,關(guān)于TEMP_FAILURE_RETRY,有專門的介紹

      if(ret < 0){

      close(s);

      SLOGE(“Failed to recv message from socket.return: %d err: %sn”, ret, strerror(errno));

      return;

      }

      //向socket中寫入數(shù)據(jù)ret = TEMP_FAILURE_RETRY(send(mIOfd, buffer, sizeof(buffer), 0));//寫入消息

      if(ret < 0){

      log(“Failed to send message from socket.return: %d err: %sn”, ret, strerror(errno));

      return;

      }

      log(“Send %d bytes out”, ret);

      //最后要關(guān)閉socket

      close(mIOfd);

      unlink(“bind的文件”);

      Java客戶端代碼結(jié)構(gòu)

      //打開一個(gè)Socket

      mSocket = new LocalSocket();//與服務(wù)器建立連接

      mSocket.connect(new LocalSocketAddress(DEBUG_CONTROL_SOCKET_PATH, LocalSocketAddress.Namespace.FILESYSTEM));

      //讀

      try {

      OutputStream m_Send = mSocket.getOutputStream();//得到當(dāng)前byte[] buf = new byte[2];buf[0] = FATAL_ERR_FEATURE;

      buf[1] = 1;// useless

      mSocket.setSendBufferSize(buf.length);

      m_Send.write(buf);//寫入

      m_Send.flush();} catch(Exception e){

      Log.e(LOG_TAG, “write socket error”);

      ret = false;

      }

      //寫

      try {

      InputStream in = mSocket.getInputStream();

      in.read(mReadBuffer);

      } catch(Exception e){

      Log.e(LOG_TAG, “read socket exception!”);return false;

      }

      第二篇:JAVA總結(jié)專題

      在這忙忙碌碌的這段時(shí)間里,經(jīng)過(guò)老師的輔導(dǎo),迅速的將一點(diǎn)沒有學(xué)的JAVA基礎(chǔ)搞定了!有了基礎(chǔ)學(xué)習(xí)還是好,萬(wàn)事開頭難這句話說(shuō)的太對(duì)了,學(xué)計(jì)算機(jī)語(yǔ)言我覺得記憶好的方法就是多打代碼,課前預(yù)習(xí),課堂上認(rèn)真聽講,把現(xiàn)學(xué)的方法把以前所做的作業(yè)用最簡(jiǎn)便的方法再一次鞏固,創(chuàng)新最重要,在后續(xù)的學(xué)習(xí)中,得要加倍努力學(xué)習(xí)。

      其實(shí)學(xué)java有不懂,要先自己思考。想清楚這句代碼是什么意思。為什么要寫在這,等等之類的。等你真的搞不明白的時(shí)候,就一定要向老師咨詢,不要感到有什么丟人的。因?yàn)椴粫?huì)是很正常的事。并不是每個(gè)人都是天才,一學(xué)就會(huì),一學(xué)就能運(yùn)用自如的。學(xué)java有一點(diǎn)是非常重要的,就是練習(xí)。一段代碼要不停的敲,多敲幾遍,尤其是自己不熟悉或者不熟練的代碼,更要敲。不要感覺到厭煩,其實(shí)我感覺敲代碼挺好玩的,并不是一件很枯燥的事。

      老師平常布置的課后上機(jī)練習(xí)題一定要做,課后的練習(xí)題能夠讓你把新學(xué)到的知識(shí)鞏固一遍,能夠加深記憶,不會(huì)讓你在以后做題的時(shí)候感到?jīng)]一點(diǎn)思路。

      當(dāng)感覺到不會(huì)的時(shí)候,千萬(wàn)不要?dú)怵H,因?yàn)檫@很正常,現(xiàn)在的學(xué)習(xí)就是為了培養(yǎng)你有一個(gè)邏輯思維,為了以后開發(fā)軟件的時(shí)候有個(gè)完整,清晰的思路。

      其實(shí),總體來(lái)說(shuō)。學(xué)習(xí)java很快樂。尤其是當(dāng)你遇到一道自己不會(huì)的題,然后,又通過(guò)自己的努力解決了,那時(shí)候,那種心情不是用言語(yǔ)來(lái)表達(dá)的。就好像你遇到一個(gè)數(shù)學(xué)難題,自己解決了之后那種成就感一樣。

      學(xué)java的時(shí)候一定要,放松心情,輕輕松松的來(lái)學(xué),隨時(shí)讓自己快樂著,這樣能夠讓你能夠更快的接受java,千萬(wàn)不要有什么心理負(fù)擔(dān),因?yàn)閖ava的特點(diǎn)之一就是--簡(jiǎn)單易懂。只要自己努力到了,就一定能夠?qū)W好java。

      學(xué)完了JAVA今天我們用項(xiàng)目案例:迷你DVD管理器來(lái)鞏固了我們所學(xué)的所有內(nèi)容,通過(guò)這項(xiàng)目的操練,首先,1、項(xiàng)目用到了會(huì)使用順序、分支、循環(huán)、跳轉(zhuǎn)語(yǔ)句編寫程序,2、要會(huì)使用數(shù)組、操作字符串,3、會(huì)使用帶參的方法;

      4、會(huì)定義類、創(chuàng)建和使用對(duì)象,看到這些腦袋里一片迷茫?。〔恢涝鯓訉?,然后想到早寫晚寫都一樣,就照著書上寫起來(lái)了,到現(xiàn)在還是弄不懂的就是那個(gè)對(duì)象數(shù)組,不知道怎樣去理解,抽象的把我抽暈了,有望老師來(lái)給我們補(bǔ)補(bǔ)這一章,在實(shí)現(xiàn)DVD的業(yè)務(wù)處理時(shí),計(jì)算時(shí)差還是不懂,照著書上打了一遍,可還是得不到想要的結(jié)果,經(jīng)過(guò)網(wǎng)上的搜尋與老師講解,現(xiàn)在已略懂一二了,在做完這項(xiàng)目后,真不知道當(dāng)時(shí)是怎樣敲出來(lái)的,難道這就是所說(shuō)的靈感!感覺很高興,現(xiàn)在已習(xí)慣了代碼報(bào)錯(cuò),其實(shí)代碼報(bào)錯(cuò)是一件值得鼓勵(lì)的事,因?yàn)闆]有錯(cuò)就覺得自己什么都懂了,在學(xué)習(xí)中相信每一個(gè)人都遇到過(guò)挫折吧!但一定要想方法戰(zhàn)勝挫折!我的戰(zhàn)勝挫折方法就是不懂思考后還不懂就問,懂了以后就筆記本記下當(dāng)時(shí)的解決方案!學(xué)習(xí)剛開始!后面的路很長(zhǎng),慢慢的去磨煉了!總結(jié)完畢!

      第三篇:Java總結(jié)

      Java實(shí)驗(yàn)

      1.調(diào)試HelloWorld程序

      2.this,super,get ,set,把課本90頁(yè)程序4.7中的name改成私有變量

      3.繼承,重寫,父類引用指向子類對(duì)象

      4.驗(yàn)證數(shù)組Arrays類和Collection類

      5.編寫一個(gè)自己的異常類并捕獲之。

      6.編寫一個(gè)類,將該類的幾個(gè)對(duì)象裝入TreeSet容器中,并將該容器的內(nèi)容通過(guò)輸出流寫入文件中。

      前三章重點(diǎn)

      0.java的數(shù)據(jù)類型:四類八種-(1)布爾類型Boolean;(2)字符類型char;(3)整數(shù)byte,short,int,long;(4)浮點(diǎn)類型:float,double;1.面向?qū)ο蟮?個(gè)基本特征:封裝,繼承,多態(tài)。

      2.構(gòu)造方法和普通方法的區(qū)別:對(duì)構(gòu)造方法而言,它有以下特性---(1)方法名必須與要?jiǎng)?chuàng)建對(duì)象的類名相同。(2)不允許聲明返回類型,即使聲明為void也不被允許。

      3.this關(guān)鍵字:是一個(gè)引用,this引用指向的是其本身所在方法的當(dāng)前對(duì)象。this的使用方法:(1)調(diào)用成員變量;(2)可以用this()調(diào)用其他構(gòu)造函數(shù)。

      4.java中只對(duì)類成員變量進(jìn)行自動(dòng)初始化,而方法內(nèi)部的局部變量在使用前必須手動(dòng)初始化。

      5.static 關(guān)鍵字:可用來(lái)修飾類的成員變量和成員方法,需要注意兩點(diǎn)--(1)靜態(tài)方法不能調(diào)用類的非靜態(tài)方法,不能訪問類的非靜態(tài)變量。(2)靜態(tài)方法和靜態(tài)變量(非私有的)可以有兩種調(diào)用方式,一是實(shí)例對(duì)象調(diào)用,二是類名直接調(diào)用。

      6.類成員訪問控制修飾符public、private、default(可不寫,即缺省狀態(tài))、protected的使用:public-公用的;private-私有的,只在定義它的類內(nèi)部使用;default-可以被同一包中的類訪問;protected-既可以被同一包中的類訪問,也可以被不在同一包中的子類訪問。

      7.方法的重載:指方法名相同,而方法的參數(shù)列表不相同。參數(shù)列表不同有三層意思:(1)參數(shù)類型不同。(2)參數(shù)順序不同。(3)參數(shù)個(gè)數(shù)不同。另外需注意,在同一個(gè)類中,當(dāng)方法名和參數(shù)列表都相同時(shí),訪問控制修飾符或方法返回類型不相同并不是方法的重載,而且這種情況在java中是不被允許的。

      第四五章重點(diǎn)

      1.繼承:需使用關(guān)鍵字extends.在使用繼承時(shí)需注意--(1)每個(gè)子類只能定義一個(gè)超類(父類),即extends后面應(yīng)且僅應(yīng)跟一個(gè)類名作為該類的父類。(2)父類中的私有屬性和私有方法不能被繼承。

      2.方法的重寫:即子類對(duì)超類中的方法保持方法名、返回類型和參數(shù)列表不變,重寫了方法體,使子類和超類完成不同的工作。重寫需注意下面幾個(gè)關(guān)鍵點(diǎn):(1)超類中的私有方法不能被重寫。(2)訪問限制符強(qiáng)度由低到高依次是:public、protected、default、private,在重寫過(guò)程中,如果子類和父類中方法的返回值、方法名及方法的參數(shù)列表都相同,這時(shí),要求子類中該方法的訪問限制符強(qiáng)度不能超過(guò)父類的。即如果父類中為public時(shí),子類也只能為public,而不能是余下的三種。

      3.重載(overload)和覆蓋(override)的區(qū)別:(1)重載—發(fā)生在一個(gè)類的內(nèi)部或子類與父類之間,要求方法名相同而參數(shù)列表不一樣。(2)覆蓋—只能發(fā)生在繼承過(guò)程中,要求子類方法的返回類型,方法名和參數(shù)列表同父類的都相同,而方法體不一樣。

      4.構(gòu)造器的調(diào)用順序:先祖先,再客人,最后自己。

      5.多態(tài):指在類繼承中子類和父類中可以有同名但意義或?qū)崿F(xiàn)方式不同的屬性和方法。分為:覆蓋和重載。多態(tài)的優(yōu)點(diǎn):因?yàn)槎鄳B(tài),可以在程序中對(duì)類進(jìn)行擴(kuò)展,而不需改變那些操作基類接口的方法。

      6.動(dòng)態(tài)綁定:指在代碼執(zhí)行期間,判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際類型調(diào)用相應(yīng)方法。動(dòng)態(tài)綁定存在的三個(gè)必要條件--(1)要有繼承;(2)要有重寫(覆蓋);(3)父類引用指向子類對(duì)象(向上轉(zhuǎn)型)。

      7.Object中常用的方法總結(jié):toString();wait();equals();notify();notifyAll();hashCode();getClass();clone();finalize();(呵呵,盡可能記幾個(gè),以防老師讓咱們列舉)注:java中Object類是所有類的父類,即java中所有的類都有上述9種方法。

      8.對(duì)象的比較:注意關(guān)鍵字instanceof的使用。

      9.抽象類:

      抽象方法—用關(guān)鍵字abstract修飾的方法,該方法只需方法的聲明,而不需方法的實(shí)現(xiàn)(即無(wú)方法體)。

      抽象類——至少包含一個(gè)抽象方法的類,也用abstract關(guān)鍵字聲明。(注:(1)抽象類中可以有一些具體方法。(2)抽象類不能實(shí)例化。(3)子類繼承抽象類必須實(shí)現(xiàn)其抽象方法。)

      10.接口:

      (1)可以看成是高度抽象的抽象類,但是接口不是類。

      (2)用關(guān)鍵字interface來(lái)聲明接口,用關(guān)鍵字imlpements來(lái)實(shí)現(xiàn)接口。

      (3)接口不能有具體方法,不能有實(shí)例數(shù)據(jù),但可以定義常量。

      (4)實(shí)現(xiàn)接口的非抽象類必須實(shí)現(xiàn)接口的所有方法。

      (5)每個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這些接口用逗號(hào)隔開,同時(shí),一個(gè)接口可以被多個(gè)類實(shí)現(xiàn)。

      第六章:重點(diǎn)看一下實(shí)驗(yàn)四

      1.容器——Collection(接口)和Map(接口).Collection——Set(接口)和List(接口)。其中,List必須保持元素的特定順序,常見的實(shí)現(xiàn)類有ArrayList和LinkedList;Set不能有重復(fù)元素,常見的實(shí)現(xiàn)類有HashSet和TreeSet。

      Map——一組成對(duì)的“鍵值對(duì)”對(duì)象,即其元素是成對(duì)的對(duì)象,常見的實(shí)現(xiàn)類有HashMap和TreeMap。

      第七章 1.異常類的根類是Throwable類,它的兩個(gè)直接子類是Error類和Exception類。

      2.異常中常用的5個(gè)關(guān)鍵字為:try,catch,finally,throw,throws.其中,try和catch:用于捕獲異常;finally:無(wú)論try塊中的異常是否拋出,finally中的代碼塊總能被執(zhí)行;throw:拋出異常;throws:聲明異常。

      3.“未被檢查的異常(Unchecked Exceptions)”和“受檢查的異常(Checked Exceptions)”——

      Unchecked Exceptions :編譯器不檢查方法是否處理或拋出的異常,即不做處理,編譯時(shí)不報(bào)錯(cuò)。

      Checked Exceptions:受編譯器檢查的異常,即不做處理編譯時(shí)通不過(guò)。

      4.常見的幾種Checked Exceptions:ClassNotFoundExceptionIOExceptionInterruptedExceptionFileNotFoundException.(盡可能的記幾個(gè)吧,以防不測(cè))第八章

      1.流--字節(jié)流和字符流;

      流--節(jié)點(diǎn)流和處理流。

      2.所有的輸入流都是從抽象類InputStream和Reader繼承而來(lái)。所有輸出流都是從抽象類OutputStream和Writer繼承而來(lái)。3.字節(jié)流:InputStream和OutputStream;字符流:Reader和Writer;

      4.節(jié)點(diǎn)流:直接與文件等底層打交道,如FileInputStreamFileOutputStreamFileReaderFileWriter.處理流:相當(dāng)于包裝流,套在節(jié)點(diǎn)流上,方便數(shù)據(jù)處理。相關(guān)一些用法,具體參考最后一次實(shí)驗(yàn)。

      第四篇:java總結(jié)

      調(diào)用父類構(gòu)造方法

      ? 在子類的構(gòu)造方法中可使用super(argument_list)語(yǔ)句調(diào)用父類的構(gòu)造方法

      ? 如果子類的構(gòu)造方法中沒有顯示地調(diào)用父類構(gòu)造方法,也沒有使用this關(guān)鍵字調(diào)用重載的其它構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無(wú)參數(shù)的構(gòu)造方法

      ? 如果子類構(gòu)造方法中既未顯式調(diào)用父類構(gòu)造方法,而父類中又沒有無(wú)參的構(gòu)造方法,則編譯出錯(cuò)

      1public class Person {

      3private String name;

      4private int age;private Date birthDate;

      7public Person(String name, int age, Date d){ 8this.name = name;

      9this.age = age;

      10this.birthDate = d;

      11}

      12public Person(String name, int age){ 13this(name, age, null);

      14}

      15public Person(String name, Date d){ 16this(name, 30, d);

      17}

      18public Person(String name){

      19this(name, 30);}

      21// ……

      22}

      1public class Student extends Person {

      2private String school;

      4public Student(String name, int age, String s){ 5super(name, age);

      6school = s;

      7}

      8public Student(String name, String s){

      9super(name);

      10school = s;

      11}

      12public Student(String s){ // 編譯出錯(cuò): no super()13school = s;

      14}

      15}

      對(duì)象構(gòu)造和初始化細(xì)節(jié)

      ? 分配存儲(chǔ)空間并進(jìn)行默認(rèn)的初始化

      ? 按下述步驟初始化實(shí)例變量

      1.綁定構(gòu)造方法參數(shù)

      2.如有this()調(diào)用,則調(diào)用相應(yīng)的重載構(gòu)造方法,然后跳轉(zhuǎn)到步驟5

      3.顯式或隱式追溯調(diào)用父類的構(gòu)造方法(Object類除外)

      4.進(jìn)行實(shí)例變量的顯式初始化操作

      5.執(zhí)行當(dāng)前構(gòu)造方法的方法體

      ==操作符與equals方法

      ==操作符與equals方法的區(qū)別:

      ? 引用類型比較引用;基本類型比較值;

      ? equals()方法只能比較引用類型,“==”可以比較引用類型及基本類型;

      ? 特例:當(dāng)用equals()方法進(jìn)行比較時(shí),對(duì)類File、String、Date及封裝類(Wrapper Class)來(lái)說(shuō),是比較類型及內(nèi)容而不考慮引用的是否是同一個(gè)實(shí)例;

      ? 用“==”進(jìn)行比較時(shí),符號(hào)兩邊的數(shù)據(jù)類型必須一致(可自動(dòng)轉(zhuǎn)換的基本數(shù)據(jù)類型除外),否則編譯出錯(cuò);

      由裝箱引發(fā)的——Integer比較的來(lái)龍去脈

      前置知識(shí): 眾所周之,java是保留了int,char等基本數(shù)據(jù)類型的,也就是說(shuō)int類型的并不是對(duì)象,然而有些方法卻需要object 類型的變量,所以java使用了裝箱機(jī)制,我們可一自豪的這樣聲明一個(gè)整型變量:Integer a = new Integer(10);那么整型的a也就是對(duì)象了,那這句是什么意思呢:Integer a= 10;java中可以這樣聲明一個(gè)對(duì)象嗎?當(dāng)然不是,從jdk1.5后,java實(shí)現(xiàn)了自動(dòng)裝箱,也就是自動(dòng)將Integer a =10 中的int類型的10轉(zhuǎn)化為了 Integer類型。好,有了前面的只是我們且先看一個(gè)題目:

      Integer a = 127;

      Integer b = 127;

      Integer c = 128;

      Integer d = 128;

      System.out.println(a==b);

      System.out.println(c==d);

      答案是什么呢? 如果您回答true,false,那么很遺憾的告訴你,哈哈,其實(shí)你答對(duì)了!!

      那我們暈了就相差1的兩個(gè)數(shù)為啥走向了“反目成仇”的地步呢?憑啥127等于127,我128就不等于128呢?且聽我慢慢道來(lái),Integer a =127,Integer a=128。

      127,128應(yīng)該不會(huì)造成什么差異吧,難道是自動(dòng)裝箱的過(guò)程有貓膩?找下源碼看看:

      private static class IntegerCache {

      private IntegerCache(){}

      static final Integer cache[] = new Integer[-(-128)+ 127 + 1];static {

      for(int i = 0;i < cache.length;i++)

      cache[i] = new Integer(i128);

      }

      這是用一個(gè)for循環(huán)對(duì)數(shù)組cache賦值,cache[255] = new Integer(255-128),也就是newl一個(gè)Integer(127),并把引用賦值給cache[255],好了,然后是Integer b= 127,流程基本一樣,最后又到了cache[255] = new Integer(255-128),這一句,那我們迷糊了,這不是又new了一個(gè)對(duì)象127嗎,然后把引用賦值給cache[255],我們比較這兩個(gè)引用(前面聲明a的時(shí)候也有一個(gè)),由于是不同的地址,所以肯定不會(huì)相等,應(yīng)該返回false??!呵呵,這么想你就錯(cuò)了,請(qǐng)注意看for語(yǔ)句給cache[i]初始化的時(shí)候外面還一個(gè){}呢,{}前面一個(gè)大大的static關(guān)鍵字大咧咧的杵在哪呢,對(duì)靜態(tài)的,那么我們就可以回想下static有什么特性了,只能初始化一次,在對(duì)象間共享,也就是不同的對(duì)象共享同一個(gè)static數(shù)據(jù),那么當(dāng)我們Integer b = 127的時(shí)候,并沒有new出一個(gè)新對(duì)象

      來(lái),而是共享了a這個(gè)對(duì)象的引用,記住,他們共享了同一個(gè)引用??!,那么我們進(jìn)行比較a==b時(shí),由于是同一個(gè)對(duì)象的引用(她們?cè)诙阎械牡刂废嗤钱?dāng)然返回true了??!

      然后我們?cè)诳碔nteger c = 128;Integer d = 128;這兩句。現(xiàn)在不用我說(shuō)就應(yīng)該能明白了吧,當(dāng)數(shù)據(jù)不再-128到127之間時(shí),是不執(zhí)行return

      IntegerCache.cache[i + offset];這句的,也就是不會(huì)返回一個(gè)static的引用,而是執(zhí)行了return new Integer(i);于是當(dāng) Integer d = 128 時(shí),又會(huì)重新返回一個(gè)引用,兩個(gè)不同的引用

      在做c==d 的比較時(shí)當(dāng)然返回false了!

      下面附上本程序的字節(jié)碼以供喜歡底層的讀者參考:

      Compiled from “CompareInteger.java”

      public class CompareInteger extends java.lang.Object{

      public CompareInteger();

      Code:

      0:aload_0

      1:invokespecial#1;//Method java/lang/Object.“”:()V4:return

      public static void main(java.lang.String[]);

      Code:

      0:bipush 127

      2:invokestatic#2;//Method

      java/lang/Integer.valueOf:(I)Ljava/lang/Int

      eger;

      5:astore_1

      6:bipush 127

      8:invokestatic#2;//Method

      java/lang/Integer.valueOf:(I)Ljava/lang/Int

      eger;

      11: astore_2

      12: sipush 128

      15: invokestatic#2;//Method

      java/lang/Integer.valueOf:(I)Ljava/lang/Int

      eger;

      18: astore_3

      19: sipush 128

      22: invokestatic#2;//Method

      java/lang/Integer.valueOf:(I)Ljava/lang/Int

      eger;

      25: astore 4

      27: getstatic#3;//Field

      java/lang/System.out:Ljava/io/PrintStream;

      30: aload_1

      31: aload_2

      32: if_acmpne39

      35: iconst_1

      36: goto40

      39: iconst_0

      40: invokevirtual#4;//Method java/io/PrintStream.println:(Z)V43: getstatic#3;//Field

      java/lang/System.out:Ljava/io/PrintStream;

      46: aload_3

      47: aload4

      49: if_acmpne56

      52: iconst_1

      53: goto57

      56: iconst_0

      57: invokevirtual#4;//Method java/io/PrintStream.println:(Z)V60: return

      }

      評(píng)論:呵呵,這么想你就錯(cuò)了,請(qǐng)注意看for語(yǔ)句給cache[i]初始化的時(shí)候外面還一個(gè){}呢,{}前面一個(gè)大大的static關(guān)鍵字大咧咧的杵在哪呢,對(duì)靜態(tài)的,那么我們就可以回想下static有什么特性了,只能初始化一次,在對(duì)象間共享,也就是不同的對(duì)象共享同一個(gè)static數(shù)據(jù),那么當(dāng)我們Integer b = 127的時(shí)候,并沒有new出一個(gè)新對(duì)象來(lái),而是共享了a這個(gè)對(duì)象的引用,記住,他們共享了同一個(gè)引用?。?/p>

      呵呵,博主我被你這句話小小的誤導(dǎo)了一下,其實(shí)你這里說(shuō)的原理沒錯(cuò),但是把位置說(shuō)錯(cuò)了,這段代碼只是初始化cache:

      static {

      for(int i = 0;i < cache.length;i++)

      cache[i] = new Integer(i-128);

      }

      但真正讓cache[i]為static變量的是這句代碼:

      static final Integer cache[] = new Integer[-(-128)+ 127 + 1];

      第五篇:C語(yǔ)言與Java的區(qū)別

      C語(yǔ)言與Java的區(qū)別

      一、概覽

      1、從編程思想來(lái)看

      C語(yǔ)言 為面向過(guò)程語(yǔ)言 Java

      為面向?qū)ο笳Z(yǔ)言

      2、從對(duì)地址的可操作性上來(lái)看

      C語(yǔ)言可以直接對(duì)硬件操作 Java 不能直接對(duì)硬件操作

      小結(jié):在硬件安全性上考慮,Java更安全,不容易引發(fā)硬件崩潰

      3、從效率上來(lái)看

      C語(yǔ)言效率非常高,在所有編程語(yǔ)言中名列前茅

      Java 執(zhí)行效率一般,計(jì)算效率還不錯(cuò),總體上來(lái)講效率馬馬虎虎

      4、從可移植性上來(lái)看

      C語(yǔ)言硬件依賴極高,一旦硬件環(huán)境改變,程序運(yùn)行不能的可能性很高

      java 硬件依賴幾乎為零,只要機(jī)器裝有相匹配的虛擬機(jī),任何機(jī)器上編寫的代碼都可以通用

      二、語(yǔ)言區(qū)別

      1、語(yǔ)言背景:

      C語(yǔ)言是在單機(jī)時(shí)代應(yīng)用非常廣泛,它融合了高級(jí)語(yǔ)言的簡(jiǎn)單易用和匯編語(yǔ)言的執(zhí)行效率。

      Java是在研究電子消費(fèi)產(chǎn)品開發(fā)平臺(tái)和互聯(lián)網(wǎng)應(yīng)用的基礎(chǔ)上實(shí)現(xiàn)的,它的許多語(yǔ)言特性也是從c語(yǔ)言那里沿用和發(fā)展,并且使面向?qū)ο蟾幼匀缓屯晟疲ㄈ绨踩院痛a的移動(dòng)性)。

      2、語(yǔ)言跨平臺(tái):

      C語(yǔ)言不可以跨平臺(tái)。

      因?yàn)镴ava可以跨平臺(tái),在windows 和 unix 等系統(tǒng)上都可以很好的運(yùn)行。

      3、指針管理:

      指針是c語(yǔ)言最大的優(yōu)點(diǎn),它可以使用戶幾乎可以訪問計(jì)算機(jī)的所有內(nèi)存資源和其他部分資源(就是指那里打那里)。同時(shí)也是c語(yǔ)言程序最難掌握和調(diào)試的問題,并且給系統(tǒng)的安全性和穩(wěn)定性帶來(lái)很大的困難。

      java中沒有指針的概念,盡管也有數(shù)組和對(duì)象的引用的概念,但它的管理全部交給系統(tǒng)管理,這樣限制了用戶的資源的訪問,但是也給java系統(tǒng)帶來(lái)安全性和穩(wěn)定性。JAVA語(yǔ)言讓編程者無(wú)法找到指針來(lái)直接訪問內(nèi)存無(wú)指針,并且增添了自動(dòng)的內(nèi)存管理功能,從而有效地防止了c語(yǔ)言中指針操作失誤,如野指針?biāo)斐傻南到y(tǒng)崩潰。但也不是說(shuō)JAVA沒有指針,虛擬機(jī)內(nèi)部還是使用了指針,只是外人不得使用而已。這有利于Java程序的安全

      4、封裝

      c語(yǔ)言中沒有package概念,需要其他方式來(lái)實(shí)現(xiàn)。

      在java中引入了package的概念,使面向?qū)ο蠛兔嫦蚪M件開發(fā)更加方便,Java都能夠?qū)崿F(xiàn)面向?qū)ο笏枷耄ǚ庋b,繼乘,多態(tài))。JAVA則是完全的面向?qū)ο笳Z(yǔ)言,它句法更清晰,規(guī)模更小,更易學(xué)。它是在對(duì)多種程序設(shè)計(jì)語(yǔ)言進(jìn)行了深入細(xì)致研究的基礎(chǔ)上,據(jù)棄了其他語(yǔ)言的不足之處,從根本上解決了c語(yǔ)言的固有缺陷。

      5、數(shù)據(jù)類型及類

      c語(yǔ)言允許將函數(shù)和變量定義為全局的。

      Java是完全面向?qū)ο蟮恼Z(yǔ)言,所有函數(shù)和變量部必須是類的一部分。除了基本數(shù)據(jù)類型之外,其余的都作為類對(duì)象,包括數(shù)組。對(duì)象將數(shù)據(jù)和方法結(jié)合起來(lái),把它們封裝在類中,這樣每個(gè)對(duì)象都可實(shí)現(xiàn)自己的特點(diǎn)和行為。

      6、自動(dòng)內(nèi)存管理

      C語(yǔ)言沒有內(nèi)存管理,必須手動(dòng)(添加語(yǔ)句)釋放內(nèi)存,增加了程序設(shè)計(jì)者的負(fù)擔(dān)。Java程序中所有的對(duì)象都是用new操作符建立在內(nèi)存堆棧上,Java自動(dòng)進(jìn)行無(wú)需內(nèi)存回收操作,不需要程序員進(jìn)行刪除。Java中當(dāng)一個(gè)對(duì)象不被再用到時(shí),無(wú)用內(nèi)存回收器將給它加上標(biāo)簽以示刪除。JAVA里無(wú)用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。

      7、字符串:

      C語(yǔ)言不支持字符串變量,在c語(yǔ)言程序中使用Null終止符代表字符串的結(jié)束。

      Java中字符串是用類對(duì)象(strinR和stringBuffer)來(lái)實(shí)現(xiàn)的,這些類對(duì)象是Java語(yǔ)言的核心!

      另:

      Java沒有函數(shù),作為一個(gè)比c語(yǔ)言更純的面向?qū)ο蟮恼Z(yǔ)言,Java強(qiáng)迫開發(fā)人員把所有例行程序包括在類中,事實(shí)上,用方法實(shí)現(xiàn)例行程序可激勵(lì)開發(fā)人員更好地組織編碼。

      下載總結(jié):(C和Java混合)UNIX Domain Socket IPC[優(yōu)秀范文5篇]word格式文檔
      下載總結(jié):(C和Java混合)UNIX Domain Socket IPC[優(yōu)秀范文5篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


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

      相關(guān)范文推薦

        實(shí)驗(yàn)二語(yǔ)言與C語(yǔ)言混合編程

        實(shí)驗(yàn)二匯編語(yǔ)言與C語(yǔ)言混合編程一、教學(xué)目的和要求 ? ? 熟悉ADS1.2開發(fā)環(huán)境編譯、下載、調(diào)試程序的基本過(guò)程; 掌握C和匯編語(yǔ)言混合編程方法。 掌握ATPCS中的寄存器及參數(shù)傳遞規(guī)......

        C語(yǔ)言與語(yǔ)言混合編程DSP設(shè)計(jì)(推薦)

        實(shí)驗(yàn)2:C與匯編語(yǔ)言混合編程 一.實(shí)驗(yàn)?zāi)康?掌握一種典型的C語(yǔ)言與匯編語(yǔ)言的混合編程方法。 二.實(shí)驗(yàn)設(shè)備 PC兼容機(jī)一臺(tái),操作系統(tǒng)為Windows2000,安裝Code Composer Studio 4.2軟件。......

        Java個(gè)人總結(jié)參考

        1、Java中取消指針運(yùn)算防止了內(nèi)存泄露的可能性。Java中的引用其實(shí)就是指針。JAVA語(yǔ)言不支持C++友元方法或友類。 2、編寫完java源代碼后,首先將其編譯為一種中間狀態(tài)字的字節(jié)......

        Java筆記總結(jié)

        1、Java是一種可以編譯 跨平臺(tái)、面向?qū)ο蟮母呒?jí)計(jì)算機(jī)語(yǔ)言。 2、Java語(yǔ)言的特點(diǎn):簡(jiǎn)單、安全、跨平臺(tái)、面向?qū)ο?、支持多線程。 3、Java的三個(gè)技術(shù)平臺(tái)分別是 JavaSE、JavaEE......

        java實(shí)習(xí)總結(jié)

        java實(shí)習(xí)總結(jié) java實(shí)習(xí)總結(jié)1 實(shí)習(xí)第五個(gè)禮拜,使用collection框架做派叫號(hào)系統(tǒng)首先分析項(xiàng)目需求,概述如下:1.產(chǎn)品參與者顧客:到營(yíng)業(yè)大廳排隊(duì)取號(hào)柜員:提供業(yè)務(wù)服務(wù)的柜臺(tái)業(yè)務(wù)員管......

        java培訓(xùn)總結(jié)(范文大全)

        在現(xiàn)在這個(gè)科技飛速發(fā)展的時(shí)代,計(jì)算機(jī)已經(jīng)悄然走進(jìn)我們的生活,并且占據(jù)了不可動(dòng)搖與替代的地位,無(wú)論是在工作還是生活,學(xué)習(xí)還是娛樂中,當(dāng)我們意識(shí)到的時(shí)候,卻突然發(fā)現(xiàn)我們已經(jīng)離不......

        二級(jí)JAVA總結(jié)

        對(duì)長(zhǎng)度為n的線性表進(jìn)行冒泡排序,最壞情況先需要比較的次數(shù)為log2n。 對(duì)長(zhǎng)度為n的線性表進(jìn)行順序排序,最壞情況先需要比較的次數(shù)為n。 高內(nèi)聚低耦合有利于模塊的獨(dú)立性。 二叉......

        java學(xué)習(xí)總結(jié)

        第三周學(xué)習(xí)總結(jié)這周從HTML學(xué)到了mysql: 1. HTML:Hypertext Markup Language超文本標(biāo)記語(yǔ)言 后綴名為.html或.htm 由兩部分組成:head和body 2.body屬性:bgcolor、background、bgp......