core java-primitive data types

本文详细介绍了Java中的8种基本数据类型,包括布尔型、整数型和浮点型,并解释了每种类型的字节大小及取值范围。此外,还讲解了不同数据类型之间的转换方法,以及如何处理特殊数值形式。

8种原始数据类型,全部为小写字母;
boolean 布尔型 true 或 false

bype 一个字节 -128-127;bype b=125;(符号占一位,)

char 两个字节 0-65535

int 4个字节的整数

long 8个字节的整数

float 4个字节的浮点数(单精度)//浮点数是指小数位数不确定的小数。6-7位精度

double 8个字节的浮点数(双精度)14-15位精度。

char类型补注:

char类型,以单引号包含值,值除了为转义开头的字符,必须单个字符('\u0060','a');

转义字符后面代表4个16进制的数字。0060=6*16=96。96为该字符的unicode编码。

和String 比较:String 变量由 双引号包含字符,String是一个类,不是一个原始类型。和char保存方式有本质区别。

 

强制转换:

例如以64位存储数值和32位存储数值比较,64位是大盒子,32位是小盒子。当大盒子放入小盒子中时采用强制转换 (小盒子)大值;

例:

float fa = 123.02 是错误的,小数类型默认是double型的,要把64位的double 转换成32 位的float.需要进行强制转换,或者在数字末尾加 f或F.

同理,Double fb =123d;(整数默认是int型的。)

 

如果遇到中文不能编译的情况,linux下用locale命令查看本地编码模式。编码,解码需要一个恰当的字符集。

 

 

整数型的数据可以保存 十进制,8进制,16进制。整数值缺省为4个字节。一个大整数超出4个字节。后面加L 或l.

int a = 032;//0开头表示八进制

int b = 0x771;//ox开头表示16进制。

 

 

3种分类(按类型):

a.布尔型 boolean

b.整数型 byte,char,short,int,long

c.小数型 float,double

 

4种分类(按字节)

boolean

1个字节 byte

2个字节 short char

4个字节 int float

8个字节 long double

 

2种分类

布尔型:boolean

数字型:其他7种。

 

 

 

 

2进制,8进制,16进制 位数间的转换。

 

 97位10进制转化成2进制。

1.可以采用 除2取余的方式。

2.分拆为 64+32+1 =》 1000000+100000+0000001

 

byte ba = 0x771;

编译报错,16进制771为(),超出bype一个字节的范围,通过强制转换byte ba=(byte)0x771;

截取后8位。转化10进制:71=》7*16+1=113,或者 0111+0001=113

 

 

 

 

<ELEMENTS> <APPLICATION-ARRAY-DATA-TYPE> <SHORT-NAME>MMT_Payload_Array</SHORT-NAME> <CATEGORY>ARRAY</CATEGORY> <ELEMENT> <SHORT-NAME>MMT_Payload_Array</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/MMT_Payload_Array_Data</TYPE-TREF> <ARRAY-SIZE-SEMANTICS>FIXED-SIZE</ARRAY-SIZE-SEMANTICS> <MAX-NUMBER-OF-ELEMENTS>1350</MAX-NUMBER-OF-ELEMENTS> </ELEMENT> </APPLICATION-ARRAY-DATA-TYPE> <APPLICATION-ARRAY-DATA-TYPE> <SHORT-NAME>UdsDataArrayType</SHORT-NAME> <CATEGORY>ARRAY</CATEGORY> <ELEMENT> <SHORT-NAME>UdsDataArrayType</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/UdsDataArray</TYPE-TREF> <ARRAY-SIZE-SEMANTICS>FIXED-SIZE</ARRAY-SIZE-SEMANTICS> <MAX-NUMBER-OF-ELEMENTS>1024</MAX-NUMBER-OF-ELEMENTS> </ELEMENT> </APPLICATION-ARRAY-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>MMT_Payload_Array_Data</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>UdsDataArray</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>cmdType</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>dataLength</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>sn</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>sourceID</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-PRIMITIVE-DATA-TYPE> <SHORT-NAME>targetID</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> </APPLICATION-PRIMITIVE-DATA-TYPE> <APPLICATION-RECORD-DATA-TYPE> <SHORT-NAME>UdsMessageStruct</SHORT-NAME> <CATEGORY>STRUCTURE</CATEGORY> <ELEMENTS> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>sourceID</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/sourceID</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>targetID</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/targetID</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>cmdType</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/cmdType</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>sn</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/sn</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>dataLength</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/DataTypes/ApplicationDataTypes/dataLength</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> <APPLICATION-RECORD-ELEMENT> <SHORT-NAME>dataArray</SHORT-NAME> <CATEGORY>ARRAY</CATEGORY> <TYPE-TREF DEST="APPLICATION-ARRAY-DATA-TYPE">/DataTypes/ApplicationDataTypes/UdsDataArrayType</TYPE-TREF> </APPLICATION-RECORD-ELEMENT> </ELEMENTS> </APPLICATION-RECORD-DATA-TYPE> </ELEMENTS> 用python生成上述xml内容
03-12
<think>好的,我需要帮用户用Python生成给定的XML内容。首先,我得仔细看一下用户提供的XML结构,了解各个元素之间的关系和属性。 首先,用户提供的XML中有两种主要的数据类型:数组类型(APPLICATION-ARRAY-DATA-TYPE)和原始类型(APPLICATION-PRIMITIVE-DATA-TYPE),还有一个记录类型(APPLICATION-RECORD-DATA-TYPE)。数组类型包含元素,每个元素指定了类型引用、数组大小和最大元素数量。记录类型则包含多个字段,每个字段引用其他数据类型。 接下来,我需要考虑如何用Python的xml.etree.ElementTree库来构建这个结构。可能需要先创建根元素<ELEMENTS>,然后依次添加各个子元素。每个数据类型的创建可能需要不同的处理,比如数组类型需要嵌套ELEMENT子元素,而记录类型需要多个APPLICATION-RECORD-ELEMENT。 我需要确保每个元素的属性正确,比如SHORT-NAME、CATEGORY,以及TYPE-TREF的DEST和内容。例如,数组类型的ELEMENT中的TYPE-TREF指向的是APPLICATION-PRIMITIVE-DATA-TYPE,而记录类型中的dataArray引用的是数组类型。 另外,注意有些元素是自闭合的,比如APPLICATION-PRIMITIVE-DATA-TYPE,而其他如数组和记录类型则有更复杂的子结构。需要正确设置这些嵌套关系。 可能遇到的难点是处理不同类型的嵌套结构,尤其是记录类型中的多个字段。需要循环创建每个APPLICATION-RECORD-ELEMENT,并正确设置它们的TYPE-TREF。同时,要确保所有引用的数据类型在XML中已经定义,避免出现无效的引用。 最后,生成XML后,需要使用indent函数美化输出,使其结构清晰易读。需要测试生成的XML是否符合原始结构,确保标签正确闭合,属性无误,并且层次结构正确。</think>我们将使用Python的xml.etree.ElementTree模块分步骤生成符合要求的XML内容。以下是结构化实现方案: ```python import xml.etree.ElementTree as ET from xml.dom import minidom def create_autosar_xml(): # 创建根元素 elements = ET.Element('ELEMENTS') # 添加数组数据类型 MMT_Payload_Array array_mmt = ET.SubElement(elements, 'APPLICATION-ARRAY-DATA-TYPE') ET.SubElement(array_mmt, 'SHORT-NAME').text = 'MMT_Payload_Array' ET.SubElement(array_mmt, 'CATEGORY').text = 'ARRAY' element_mmt = ET.SubElement(array_mmt, 'ELEMENT') ET.SubElement(element_mmt, 'SHORT-NAME').text = 'MMT_Payload_Array' ET.SubElement(element_mmt, 'CATEGORY').text = 'VALUE' type_ref = ET.SubElement(element_mmt, 'TYPE-TREF') type_ref.set('DEST', 'APPLICATION-PRIMITIVE-DATA-TYPE') type_ref.text = '/DataTypes/ApplicationDataTypes/MMT_Payload_Array_Data' ET.SubElement(element_mmt, 'ARRAY-SIZE-SEMANTICS').text = 'FIXED-SIZE' ET.SubElement(element_mmt, 'MAX-NUMBER-OF-ELEMENTS').text = '1350' # 添加数组数据类型 UdsDataArrayType(重复类似结构) array_uds = ET.SubElement(elements, 'APPLICATION-ARRAY-DATA-TYPE') ET.SubElement(array_uds, 'SHORT-NAME').text = 'UdsDataArrayType' ET.SubElement(array_uds, 'CATEGORY').text = 'ARRAY' # ... 此处省略类似结构代码,完整版见下方补充说明 ... # 添加原始数据类型(示例展示两个,其他类似) primitive_types = [ 'MMT_Payload_Array_Data', 'UdsDataArray', 'cmdType', 'dataLength', 'sn', 'sourceID', 'targetID' ] for pt in primitive_types: primitive = ET.SubElement(elements, 'APPLICATION-PRIMITIVE-DATA-TYPE') ET.SubElement(primitive, 'SHORT-NAME').text = pt ET.SubElement(primitive, 'CATEGORY').text = 'VALUE' # 添加记录类型 UdsMessageStruct record = ET.SubElement(elements, 'APPLICATION-RECORD-DATA-TYPE') ET.SubElement(record, 'SHORT-NAME').text = 'UdsMessageStruct' ET.SubElement(record, 'CATEGORY').text = 'STRUCTURE' elements_container = ET.SubElement(record, 'ELEMENTS') # 添加记录字段(示例展示两个字段) fields = [ ('sourceID', 'sourceID'), ('targetID', 'targetID'), ('cmdType', 'cmdType'), ('sn', 'sn'), ('dataLength', 'dataLength'), ('dataArray', 'UdsDataArrayType') ] for name, ref in fields: field = ET.SubElement(elements_container, 'APPLICATION-RECORD-ELEMENT') ET.SubElement(field, 'SHORT-NAME').text = name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值