导航:首页 > 编程语言 > 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

友情链接