導航:首頁 > 編程語言 > java中struct

java中struct

發布時間:2023-04-09 20:03:50

A. 在java語言中,什麼是復合數據類型(引用)

同簡單數據類型的定義一樣,Java虛擬機(JVM)還定義了索引(reference)這種數據類型。索引類型可以「引用」變數,由於Java沒有明確地定義指針類型,所以索引類型可以被認為就是指向實際值或者指向變數所代表的實際值的指針。一個對象可以被多於一個以上的索引所「指」。JVM從不直接對對象定址而是操作對象的索引。

索引類型分成三種,它們是:類(class)、介面(interface)和數組(array)。索引類型可以引用動態創建的類實例、普通實例和數組。索引還可以包含特殊的值,這就是null 索引。null 索引在運行時上並沒有對應的類型,但它可以被轉換為任何類型。索引類型的默認值就是null。



類(Class)指的是定義方法和數據的數據類型。從內部來看,JVM通常把class類型對象實現為指向方法和數據的一套指針。定義class類型的變數只能引用類的實例或者null ,如以下代碼所示:

MyObject anObject = new MyObject(); // 合法

MyObject anotherObject = null; // 合法

MyObject stillAnotherObject = 0; // 非法

介面

介面(interface)好比一種模版,這種模版定義了對象必須實現的方法,其目的就是讓這些方法可以作為介面實例被引用。介面不能被實例化。類可以實現多個介面並且通過這些實現的介面被索引。介面變數只能索引實現該介面的類的實例。比方說,假設我們定義了一個介面,名字是Comparable ,同時還定義了一個類SortItem,這個類實現了介面Comparable,那麼我們可以編寫以下的定義代碼:
Comparable c = new SortItem();

假如Comparable 介面定義了一個方法: public void compare(Comparable item), 那麼SortItem 類就必須提供compare 方法的實現,如以下代碼所示:

public class SortItem implements Comparable

{

public void compare(Comparable item)

{

...method implementation here

}

}

數組

Java數組(array)是動態創建的索引對象,這一點和類非常相似,此外,同類一樣,數組只能索引數組的實例或者null ,如以下代碼所示:

int[] myIntArray = new int[5];

int[] anotherIntArray = null;

數組是Object類的繼承,這樣,Object類的所有方法都可以被數組調用。數組對象由元素組成。元素的數目也可以為0,在這種情況下稱做數組為空。所有的數組都是從0開始對元素編號的,這意味著數組內的第1個元素的索引編號是數字0。所有對數組元素的訪問都會在運行時上接受檢查,如果試圖使用編號小於0或者大於數組長度來索引元素就會產生異常並被扔出。

數組的元素按整型值索引,如以下代碼所示:

int[] myIntArray = { 9, 5, 6 };

int int1 = myIntArray[0];

int int2 = myIntArray[1];

int int3 = myIntArray[2];

數組對象的長度是不變的。為了改變數組變數的長度,你必須創建另一個數組並賦給變數,如以下代碼所示:

int[] myIntArray = { 9, 5, 6 };

System.out.println("myIntArray length = " +myIntArray.length); // 輸出結果是3

myIntArray = new int[] { 3, 6, 4, 2, 8 };

System.out.println("myIntArray length = " +myIntArray.length); // 輸出結果是5

復合數據類型

Java語言不支持結構(struct)或聯合(union)數據類型。它的復合數據類型是通過類或者介面來構造的,類提供了捆綁數據和方法的方式,同時可以限制對類的私有數據的訪問。比如說,如果用C語言,那麼汽車(car)就可以如下代碼所示用結構來定義:

struct Car

{

char* model;

char* make;

int year;

Engine* engine;

Body* body;

Tire** tires;

}

以上的示範代碼還隱含採用了先前定義的引擎(Engine)、車身(Body)和輪胎(Tire)結構。而採用Java語言,汽車的定義如清單A所示。

Listing A

class Car

implements CarModels, CarMakes
{
private int model = DODGE;
private int make = DURANGO;
private int year = 1999;
private Engine engine = new DurangoEngine();
private Body body = new DurangoBody();
private Tire[] tires = { new GoodyearTire(),
new GoodyearTire(),
new GoodyearTire(),
new GoodyearTire() };
}

以上的示例還假設我們以前都已經定義過CarModels和CarMakes介面以及Engine、Body、Tire、DurangoEngine、DurangoBody和GoodyearTire類。

復合數據類型的初始化

復合數據類型由構造器內定義的代碼實現初始化,構造器在類的創建函數(比如「new」之類)應用到類變數的時候被調用。構造器被調用之前,類的各個成員被初始化為各自的默認值或者顯式賦予的初值。清單B 中的程序代碼對以上過程進行了解釋。

Listing B

class MyClass
{
int myInt;
AnotherClass anotherClass;

public static void main(String[] args)
{
MyClass myClass = new MyClass();
}

public MyClass()
{
myInt = 2;
}
}

在清單B的代碼中,當myClass 的實例用new 運算符創建時,構造器public MyClass()即被調用促使類對自身初始化。初始化的過程如下所示:

聲明「int myInt;」給myInt賦默認值0。
聲明「AnotherClass anotherClass;」給anotherClass分配默認值null。
構造器內的聲明「myint = 2;」給myInt賦值為2。
預定義復合數據類型

Java語言包含了大量的預定義復合數據類型。其中之一的String 類屬於java.lang 包。String 類提供的方法執行常用的字元串操作,比如length()、 substring(int beginIndex)、toUpperCase()、toLowerCase()、equals() 等等。另一種常用的Java復合數據類型是Vector 類,它屬於java.util 包。Vector 類定義的方法執行可擴展對象數組的常用操作。比如add(int index, Object element)、elementAt(int index)、isEmpty()和remove(int index)等。這些就是一小部分預定義復合數據類型的代表示例。在以後的文章里我們還會進一步對預定義復合數據類型進行討論。

B. 在Java中有沒有類似C中struct形式的存在

別說類和struct是一制個東西了。
struct是分配在連續地址空間里的一組值,而類是分配在連續地址空間的一組引用,要尋值的話還要二次跳轉,所以類的內存劃分是不連續的,局部性遠差於struct,對緩存也沒有struct友好,操作系統在調度的時候因為缺頁造成的性能差異是很大的
Java裡面暫時還是不支持struct的,JVM本身就不讓你碰他的棧空間,你怎麼支持struct呢

C. java的struct和spring用法,他們的區別

Struts沒有涉及到持久層,而Spring的JdbcTemplate卻它簡化了JDBC的使用

D. java裡面有沒有結構體


{
盯橋//1
//2
畢敬//3
if(b)berak;//如果b為true那麼,代碼4就不會被執凱數猛行,進而繼續執行代碼5
//4
}
//5

E. java中Struct是個什麼東西好像是跟web有關的嗎它java中哪部份的內容

struts是一個開源的框架,是由apache軟體基金組織推出的,應該說是當今用的最多的一個框架吧,不知道你有沒專有學過servlet和jsp.在以往的屬servlet中是用java代碼生成客戶端所需要的HTML文件,在jsp中是由jsp標簽和java代碼,還有HTML代碼生成客戶端所需要的文件.這兩種技術呢對以後的維護和二次開發都很不得,如果你要想做二次開發的話可能就得重寫了.並且邏輯和表示都放在一起,很混亂.struts將這些分成了幾個部分,有專門做表示的,專門做邏輯處理的,有做控制器的.並且它制定了很多標簽,功能也挺強大的.

不用安裝什麼,只需要到apache網站下載struts.jar,還有幾個配置文件.還有標簽庫文件,我學的時候沒有看什麼書,不過聽他們說有一本叫精通struts的書好像不錯,我也沒有看過.

F. java語言的所有數據類型分為哪幾種

java中有8種基本數據類型:

byte(最小的數據類型)、short(短整型)、int(整型)、long(長整型)、float(浮點型)、double(雙精度浮點型)、char(字元型)、boolean(布爾型)。

(6)java中struct擴展閱讀:

數據類型在計算機語言裡面,是對內存位置的一個抽象表達方式,可以理解為針對內存的一種抽象的表達方式。接觸每種語言的時候,都會存在數據類型的認識,有復雜的、簡單的,各種數據類型都需要在學習初期去了解,Java是強類型語言,所以Java對於數據類型的規范會相對嚴格。數據類型是語言的抽象原子概念,可以說是語言中最基本的單元定義,在Java裡面,本質上講將數據類型分為兩種:基本類型和引用數據類型。

基本類型:簡單數據類型是不能簡化的、內置的數據類型、由編程語言本身定義,它表示了真實的數字、字元和整數。

引用數據類型:Java語言本身不支持C++中的結構(struct)或聯合(union)數據類型,它的復合數據類型一般都是通過類或介面進行構造,類提供了捆綁數據和方法的方式,同時可以針對程序外部進行信息隱藏。

參考資料:java數據類型_網路

G. C語言中struct中的struct到Java中怎麼用

classPubtime{
intyear,month,day;

}

classBook{
Pubtimetime;
intprice;
intbalance;

}
Bookbook=newBook();
book.time=newPubtime();

intyear=book.time.year;

//隨手寫抄寫,不是很標准.大體就這樣

H. 如何在java中定義一個結構體

像C/C++里的,第三方的Javolution庫提供了類似的解決方案:

enumGender{MALE,FEMALE};
structDate{
unsignedshortyear;
unsignedbytemonth;
unsignedbyteday;
};
structStudent{
enumGendergender;
charname[64];
structDatebirth;
floatgrades[10];
Student*next;
};
publicenumGender{MALE,FEMALE};
{
publicfinalUnsigned16year=newUnsigned16();
publicfinalUnsigned8month=newUnsigned8();
publicfinalUnsigned8day=newUnsigned8();
}
{
publicfinalEnum32<Gender>gender=newEnum32<Gender>(Gender.values());
publicfinalUTF8Stringname=newUTF8String(64);
publicfinalDatebirth=inner(newDate());
publicfinalFloat32[]grades=array(newFloat32[10]);
publicfinalReference32<Student>next=newReference32<Student>();
}

I. Java基本數據類型

一、基本數據類型:



byte:Java中最小的數據類型,在內存中佔8位(bit),即1個位元組,取值范圍-128~127,默認值0


short:短整型,在內存中佔16位,即2個位元組,取值范圍-32768~32717,默認值0


int:整型,用於存儲整數,在內在中佔32位,即4個位元組,取值范圍-2147483648~2147483647,默認值0


long:長整型,在內存中佔64位,即8個位元組-2^63~2^63-1,默認值0L


float:浮點型,在內存中佔32位,即4個位元組,用於存儲帶小數點的數字(與double的區別在於float類型有效小數點只有6~7位),默認值0


double:雙精度浮點型,用於存儲帶有小數點的數字,在內存中佔64位,即8個位元組,默認值0


char:字元型,用於存儲單個字元,佔16位,即2個位元組,取值范圍0~65535,默認值為空


boolean:布爾類型,佔1個位元組,用於判斷真或假(僅有兩個值,即true、false),默認值false


二、Java數據類型基本概念:


數據類型在計算磨野機語言裡面,是對內存位置的一個抽象表達方式,可以理解為針對內存的一種抽象的表達方式。接觸每種語言的時候,都會存在數據類型的認識,有復雜的、簡單的,各種數據類型都需要在學習初期去了解,Java是強類型語言,所以Java對於數據類型的規范會相對嚴格。數據類型是語言的抽象原子概念,可以說是語言中最基本的單元定義,在Java裡面,本質上講將數據類型分為兩種:基本類型和引用數據類型。


基本類型:簡單數據類型是不能簡化的、內置的數據類型、由編程語言本身定義,它表示了真實的數字、字元和整數。


引用數據類型:Java語言本身不支持C++中的結構(struct)或聯合(union)數據類型,它的復合數據類型一般都是通過類或介面進行構造,類提供了捆綁數據和方法的方式,同時可以針對程序外部進行信息隱藏。


三、Java中的數據類型與內存的關系


在Java中,每個存放數據的變數都是有類型的,如:


charch;floatx;inta,b,c;


ch是字元型的,就會分配到2個位元組內存。不同類型的變數在內存中分配的位元組數不同,同時存儲方式也是不同的。


所以給變數賦值前需要先確定變數的類型,確定了變數的類型,即確定了數據需分配內存空間的大小,數據在內存的存儲方式。


四、Java數據類型在內存中的存儲:


1)基本數據類型的存儲原理:所有的簡毀讓單數據類型不存在「引用」的概念,基瞎余喊本數據類型都是直接存儲在內存中的內存棧上的,數據本身的值就是存儲在棧空間裡面,而Java語言裡面八種數據類型是這種存儲模型;


2)引用類型的存儲原理:引用類型繼承於Object類(也是引用類型)都是按照Java裡面存儲對象的內存模型來進行數據存儲的,使用Java內存堆和內存棧來進行這種類型的數據存儲,簡單地講,昆明北大青鳥http://www.kmbdqn.cn/認為「引用」是存儲在有序的內存棧上的,而對象本身的值存儲在內存堆上的。


閱讀全文

與java中struct相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接