亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > java中什么是字段

      java中什么是字段

      時(shí)間: 歐東艷656 分享

      java中什么是字段

        java是一種編程語言,有很多人也好奇java中的字段到底是什么意思。下面小編為大家分享的是java中的字段意思的內(nèi)容介紹,歡迎閱讀!

        Java 中的字段含義

        我們把表中的每一行叫做一個(gè)“記錄”,每一個(gè)記錄包含這行中的所有信息,就像在通訊錄數(shù)據(jù)庫中某個(gè)人全部的信息,但記錄在數(shù)據(jù)庫中并沒有專門的記錄名,常常用它所在的行數(shù)表示這是第幾個(gè)記錄。在數(shù)據(jù)庫中存放在表行列交叉處的數(shù)據(jù)叫做“值”,它是數(shù)據(jù)庫中最基本的存儲(chǔ)單元,它的位置要由這個(gè)表中的記錄和字段來定義。

        JAVA支持兩種field(字段),每一個(gè)對(duì)象的實(shí)例都有一個(gè)對(duì)象字段的復(fù)制;所有的對(duì)象共享一個(gè)類的靜態(tài)字段。本地方法使用JNI提供的函數(shù)可以獲取和修改這兩種字段。先看一個(gè)從本地代碼中訪問對(duì)象字段的例子:

        class InstanceFieldAccess {

        private String s;

        private native void accessField();

        public static void main(String args[]) {

        InstanceFieldAccess c = new InstanceFieldAccess();

        c.s = "abc";

        c.accessField();

        System.out.println("In Java:");

        System.out.println(" c.s = \"" + c.s + "\"");

        }

        static {

        System.loadLibrary("InstanceFieldAccess");

        }

        }

        InstanceFieldAccess這個(gè)類定義了一個(gè)對(duì)象字段s。main方法創(chuàng)建了一個(gè)對(duì)象并設(shè)置s的值,然后調(diào)用本地方法InstanceFieldAccess.accessField在本地代碼中打印s的值,并把它修改為一個(gè)新值。本地方法返回后,JAVA中把這個(gè)值再打印一次,可以看出來,字段s的值已經(jīng)被改變了。下面是本地方法的實(shí)現(xiàn):

        JNIEXPORT void JNICALL

        Java_InstanceFieldAccess_accessField(JNIEnv *env, jobject obj)

        {

        jfieldID fid; /* store the field ID */

        jstring jstr;

        const char *str;

        /* Get a reference to obj's class */

        jclass cls = (*env)->GetObjectClass(env, obj);

        printf("In C:\n");

        /* Look for the instance field s in cls */

        fid = (*env)->GetFieldID(env, cls, "s",

        "Ljava/lang/String;");

        if (fid == NULL) {

        return; /* failed to find the field */

        }

        /* Read the instance field s */

        jstr = (*env)->GetObjectField(env, obj, fid);

        str = (*env)->GetStringUTFChars(env, jstr, NULL);

        if (str == NULL) {

        return; /* out of memory */

        }

        printf(" c.s = \"%s\"\n", str);

        (*env)->ReleaseStringUTFChars(env, jstr, str);

        /* Create a new string and overwrite the instance field */

        jstr = (*env)->NewStringUTF(env, "123");

        if (jstr == NULL) {

        return; /* out of memory */

        }

        (*env)->SetObjectField(env, obj, fid, jstr);

        }

        運(yùn)行程序,得到輸出為:

        In C:

        c.s = "abc"

        In Java:

        c.s = "123"

        4.1.1 訪問一個(gè)對(duì)象字段的流程

        為了訪問一個(gè)對(duì)象的實(shí)例字段,本地方法需要做兩步:

        首先,通過在類引用上調(diào)用GetFieldID獲取field ID(字段ID)、字段名字和字段描述符:

        Fid=(*env)->GetFieldID(env,cls,”s”,”Ljava/lang/String;”);

        上例中的代碼通過在對(duì)象引用obj上調(diào)用GetObjectClass獲取到類引用。一旦獲取到字段ID,你就可以把對(duì)象和字段ID作為參數(shù)來訪問字段:

        Jstr=(*env)->GetObjectField(env,obj,fid);

        因?yàn)樽址蛿?shù)組是特殊的對(duì)象,所以我們使用GetObjectField來訪問字符串類型的實(shí)例字段。除了Get/SetObjectField,JNI還支持其它如GetIntField、SetFloatField等用來訪問基本類型字段的函數(shù)。

        4.1.2 字段描述符

        在上一節(jié)我們使用過一個(gè)特殊的C字符串“Ljava/lang/String”來代表一個(gè)JVM中的字段類型。這個(gè)字符串被稱為JNI field descriptor(字段描述符)。

        字符串的內(nèi)容由字段被聲明的類型決定。例如,使用“I”來表示一個(gè)int類型的字段,“F”來表示一個(gè)float類型的字段,“D”來表示一個(gè)double類型的字段,“Z”來表示一個(gè)boolean類型的字段等等。

        像java.lang.String這樣的引用類型的描述符都是以L開頭,后面跟著一個(gè)JNI類描述符,以分號(hào)結(jié)尾。一個(gè)JAVA類的全名中的包名分隔符“.”被轉(zhuǎn)化成“/”。因此,對(duì)于一個(gè)字段類型的字段來說,它的描述符是“Ljava/lang/String”。

        數(shù)組的描述符中包含“]”字符,后面會(huì)跟著數(shù)組類型的描述符,如“[I”是int[]類型的字段的描述符。12.3.3詳細(xì)介紹了各種類型的字段描述以及他們代表的JAVA類型。

        你可以使用javap工具來生成字段描述符。

        4.1.3 訪問靜態(tài)字段

        訪問靜態(tài)字段和訪問實(shí)例字段相似,看下面這個(gè)InstanceFieldAccess例子的變形:

        class StaticFielcdAccess {

        private static int si;

        private native void accessField();

        public static void main(String args[]) {

        StaticFieldAccess c = new StaticFieldAccess();

        StaticFieldAccess.si = 100;

        c.accessField();

        System.out.println("In Java:");

        System.out.println(" StaticFieldAccess.si = " + si);

        }

        static {

        System.loadLibrary("StaticFieldAccess");

        }

        }

        StaticFieldAccess這個(gè)類包含一個(gè)靜態(tài)字段si,main方法創(chuàng)建了一個(gè)對(duì)象,初始化靜態(tài)字段,然后調(diào)用本地方法StaticFieldAccess.accessField在本地代碼中打印靜態(tài)字段中的值,然后設(shè)置新的值,為了演示這個(gè)值確實(shí)被改變了,在本地方法返回后,JAVA中再次這個(gè)靜態(tài)字段的值。

        下面是本地方法StaticFieldAccess.accessField的實(shí)現(xiàn):

        JNIEXPORT void JNICALL

        Java_StaticFieldAccess_accessField(JNIEnv *env, jobject obj)

        {

        jfieldID fid; /* store the field ID */

        jint si;

        /* Get a reference to obj's class */

        jclass cls = (*env)->GetObjectClass(env, obj);

        printf("In C:\n");

        /* Look for the static field si in cls */

        fid = (*env)->GetStaticFieldID(env, cls, "si", "I");

        if (fid == NULL) {

        return; /* field not found */

        }

        /* Access the static field si */

        si = (*env)->GetStaticIntField(env, cls, fid);

        printf(" StaticFieldAccess.si = %d\n", si);

        (*env)->SetStaticIntField(env, cls, fid, 200);

        }

        運(yùn)行程序可得到輸出結(jié)果:

        In C:

        StaticFieldAccess.si = 100

        In Java:

        StaticFieldAccess.si = 200

        Java簡(jiǎn)介

        它最初被命名為Oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家電的市場(chǎng)需求沒有預(yù)期的高,Sun放棄了該項(xiàng)計(jì)劃。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布。

        java標(biāo)志

        Java的主要工作是通過編程語言來制作互聯(lián)網(wǎng)頁面、制作動(dòng)態(tài)效果以及網(wǎng)站等技術(shù),現(xiàn)在網(wǎng)上關(guān)于這方面的教程有很多,但很多都是過時(shí)的,因?yàn)榛ヂ?lián)網(wǎng)是在不斷的變化的,互聯(lián)網(wǎng)上的牛人,要想成為Java大神,走進(jìn)這條Java大神之群,首先Java教程的開頭是二三一,Java的最中間是三一四,Java的最后面再加上零二八,把前面的綜合起來,Java大神期待你的加入。這里有很多互聯(lián)網(wǎng)大牛教你學(xué)習(xí),還有免費(fèi)的課程。不是想學(xué)習(xí)的就不要加了。

        Java 編程語言的風(fēng)格十分接近C、C++語言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它繼承了 C++ 語言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C ++語言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語言特性。

        Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。

        與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù)。全球數(shù)以萬計(jì)的 Java 開發(fā)公司被要求所設(shè)計(jì)的 Java 軟件必須相互兼容。“Java 語言靠群體的力量而非公司的力量”是 Sun 公司的口號(hào)之一,并獲得了廣大軟件開發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。

        Sun 公司對(duì) Java 編程語言的解釋是:Java 編程語言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語言。

        Java 平臺(tái)是基于 Java 語言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競(jìng)爭(zhēng)的.NET平臺(tái)以及模仿 Java 的 C#語言。

        Java名稱的由來

        說起Java這個(gè)名稱是怎么來的,在世界上還流傳著不同版本的傳說。

        1.咖啡說

        java之父

        1995年,SUN公司和好萊塢準(zhǔn)備開展一個(gè)技術(shù)交流會(huì),皆以宣傳公司的產(chǎn)品。James Gosling帶著他的系統(tǒng)來到了技術(shù)交流會(huì)。但他不能用OAK這個(gè)名字了。OAK已經(jīng)被一家半導(dǎo)體公司注冊(cè)了,并且注冊(cè)了好多領(lǐng)域,只能換名。James Gosling四處觀望尋找靈感,他看到了一個(gè)泡咖啡的杯子,杯子上印著Java,James Gosling就把這種語言改名為Java。

        2.度假說

        1994年6、7月間,在經(jīng)歷了一場(chǎng)歷時(shí)三天的頭腦風(fēng)暴的討論后,Green團(tuán)隊(duì)決定再一次改變了努力的目標(biāo),這次他們決定將該技術(shù)應(yīng)用于萬維網(wǎng)。他們認(rèn)為隨著Mosaic瀏覽器的到來,因特網(wǎng)正在向同樣的高度互動(dòng)的遠(yuǎn)景演變,而這一遠(yuǎn)景正是他們?cè)谟芯€電視網(wǎng)中看到的。此時(shí)Green小組組員正在在印度尼西亞爪哇島(Java)度假時(shí),于是他們把Oak改名為Java。

        3.簡(jiǎn)寫說

        Java命名來源于開發(fā)人員名字的組合:James Gosling、Arthur Van Hoff和Andy Bechtolsheim首字母的縮寫。

        4.頭腦風(fēng)暴說

        關(guān)于Java命名的由來,James Gosling是曾經(jīng)這樣回答過Jonathan Schwartz,原文如下:

        From: James Gosling

        Date: August 24, 2007 8:16:58 PM PDT

        To: Jonathan Schwartz

        Subject: How was Java named?

        The story goes like this:

        We needed a name. We had been using "oak" (which was selected essentially randomly by me), and while the team had grown attached to it, the trademark lawyers ruled it out. We had lots of email debates about names, but nothing got resolved. We ended up in the awkward position where the #1 thing stopping us from shipping was the name.

        Our marketing lead knew someone who was a "naming consultant" (I don't remember his name, but he was great). We could neither afford the price nor the time of a conventional product naming process. He agreed to do something rather odd, but effective and quick: he acted as a facilitator at a meeting where about a dozen of us locked ourselves in a room for an afternoon. He started asking us questions like "How does this thing make you feel?" (Excited!) "What else makes you feel that way?" (Java!) We ended up with a board covered with essentially random words. Then he put us through a sorting process where we ended up with a ranking of the names. We ended up with a dozen name candidates and sent them off to the lawyers: they worked down the list until they hit one that cleared their search.

        "Java" was the fourth name on the list. The first name on the list was "Silk", which I hated but everyone else liked. My favorite was "Lyric", the third one on the list, but it didn't pass the lawyers test. I don't remember what the other candidate names where.

        So, who named Java? Marketing organized the meeting, the consultant ran it, and a whole pile of us did a lot of yelling out of random words. I'm honestly not real sure who said "Java" first, but I'm pretty sure it was Mark Opperman.

        There certainly wasn't any brilliant marketing mind who went through a coherent thought process.

        中文翻譯如下:

        我們需要一個(gè)名字。我們已經(jīng)使用了oak(那是我隨機(jī)挑選的),然而當(dāng)開發(fā)團(tuán)隊(duì)接觸它的時(shí)候,這個(gè)商標(biāo)已經(jīng)被律師排除了。我們收到許多關(guān)于命名爭(zhēng)論的電子郵件,但是問題沒有解決。我們需要結(jié)束這種棘手的處境,阻撓我們前進(jìn)的首要問題就是這命名。

        我們市場(chǎng)部領(lǐng)導(dǎo)了解到某人是“命名顧問”(我不記得他的名字了,但是他是很棒)。我們既不可能提供金錢也不可能提供時(shí)間用于常規(guī)產(chǎn)品的命名過程。他同意做個(gè)臨時(shí)的事,但是要高效和快捷:一天下午,我們大概十二個(gè)人將自己鎖在一個(gè)房間內(nèi),他在會(huì)上充當(dāng)一個(gè)主持人。他讓我們寫一些名稱來做一個(gè)挑選。我們最終寫了十二個(gè)候選名稱,并且將其送達(dá)給律師團(tuán)審閱。律師團(tuán)看了列表,選定了能排出其它名稱的候選項(xiàng)。“Java”是列表里的第四個(gè)名稱。列表里的第一個(gè)名稱是“Silk”,那是我討厭但是其他人喜歡的名稱。我最喜歡的是列表里的第三個(gè)名稱“Lyric”,但是它沒有通過律師團(tuán)的審核。我不記得其它候選名稱了。

        為什么命名Java呢?市場(chǎng)部組織了一個(gè)會(huì)議,顧問提名,我們?nèi)w人員喊出隨機(jī)的詞語。說實(shí)話,我真的不確定誰最先說“Java”,但是我有很有把握說這人是Mark Opperman。

        確實(shí)不存在任何杰出的市場(chǎng)理念能夠通過一致的認(rèn)可。


      看了java中什么是字段還看:

      1.成為JAVA軟件工程師需要學(xué)哪些

      2.java簡(jiǎn)歷中的項(xiàng)目經(jīng)驗(yàn)怎么寫

      3.Java中對(duì)象和引用的具體區(qū)別

      4.java個(gè)人簡(jiǎn)歷中的項(xiàng)目經(jīng)驗(yàn)范文

      5.java簡(jiǎn)歷中項(xiàng)目經(jīng)驗(yàn)怎么寫

      245705