‘壹’ 初学java,为什么说Integer是引用数据类型
int是JAVA八大基本数据类型(byte,shor,int,long,char,boolean,float,double)之一。JAVA语言为八大基本数据提供了包装类,Integer对应是int类型的包装类,就是把int类型包装成Object对象。Java有2种不同的类型:引用类型和原始类型。Int是java的原始数据类型,Integer是java的为int提供的封装类。Java为每个原始类型提供了封装类。int是基本数据类型Integer是int的一个包装类(wrapper),他是类不是基本数据类型,他的内部其实包含一个int型的数据那为什么要用Integer呢,主要是因为面向对象的思想,因为Java语言是面向对象的,这也是它只所以流行的原因之一,对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来专门处理int型相关的数据,另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。所以Integer的存在是很必要的。始数据类型引用数据类型oatdoubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以那种类型的数据结构存储,当引用类型和原始类型用作某个类的实例时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。Integer类的使用方法1、属性。staticintMAX_VALUE:返回最大的整型数;staticintMIN_VALUE:返回最小的整型数;staticClassTYPE:返回当前类型。例子代码:System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE);结果为:Integer.MAX_VALUE:21474836472、构造函数。Integer(intvalue):通过一个int的类型构造对象;Integer(Strings):通过一个String的类型构造对象;例子代码:Integeri=newInteger("1234");生成了一个值为1234的Integer对象。3、方法。说明:1.所有方法均为public;2.书写格式:[修饰符]如:staticintparseInt(Strings)表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。1.byteValue():取得用byte类型表示的整数;2.intcompareTo(IntegeranotherInteger):比较两个整数。相等时返回0;小于时返回负数;大于时返回正数。例子代码:Integeri=newInteger(1234);System.out.println("i.compareTo:"+i.compareTo(newInteger(123)));结果为:i.compareTo:13.intcompareTo(Objecto):将该整数与其他类进行比较。如果o也为Integer类,进行方法2的操作;否则,抛出ClassCastException异常。4.staticIntegerdecode(Stringnm):将字符串转换为整数。5.doubledoubleValue():取得该整数的双精度表示。6.booleanequals(Objectobj):比较两个对象。7.floatfloatValue():取得该整数的浮点数表示。8.staticIntegergetInteger(Stringnm):根据指定名确定系统特征值。9.staticIntegergetInteger(Stringnm,intval):上面的重载。10.staticIntegergetInteger(Stringnm,Integerval):上面的重载。11.inthashCode():返回该整数类型的哈希表码。12.intintValue():返回该整型数所表示的整数。13.longlongValue():返回该整型数所表示的长整数。14.staticintparseInt(Strings):将字符串转换成整数。s必须是时进制数组成,否则抛出NumberFormatException异常。15.staticintparseInt(Strings,intradix):以radix为基数radix返回s的十进制数。所谓的基数就是“几进制”。例子代码:Strings1=newString("1010");System.out.println("Integer.parseInt(Strings,intradix):"+Integer.parseInt(s1,2));结果为:Integer.parseInt(Strings,intradix):10即s1在此例中被看成是二进制,返回十进制就是10。16.shortshortValue():返回该整型数所表示的短整数。17.staticStringtoBinaryString(inti):将整数转为二进制数的字符串。18.staticStringtoHexString(inti):将整数转为十六进制数的字符串。19.staticStringtoOctalString(inti):将整数转为八进制数的字符串。20.StringtoString():将该整数类型转换为字符串。21.staticStringtoString(inti):将该整数类型转换为字符串。不同的是,此为类方法。22.staticStringtoString(inti,intradix):将整数i以基数radix的形式转换成字符串。例子代码:inti1=54321;System.out.println("Integer.toString(inti,intradix):"+Integer.toString(i1,16));结果为:Integer.toString(inti,intradix):d43123.staticIntegervalueOf(Strings):将字符串转换成整数类型。24.staticIntegervalueOf(Strings,intradix):将字符串以基数radix的要求转换成整数类型。
‘贰’ JAVA中怎么将int数据转换为byte数据
JAVA中根据以下代码将int数据转换为byte数据:
public static byte[] int32ToBytes(int val) {
int size = Integer.SIZE / Byte.SIZE;
byte[] ret = new byte[size];
for (int i = 0; i < size; ++i) {
ret[i] = (byte) (val << (8 * i) >> 56);
}
return ret;
}
(2)javaintegerbyte扩展阅读
Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。
byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。
运算规则:
####正数的最高位都是 0 ,正数的值就是二进制表示的值。 ####
####负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。 ####
‘叁’ java Integer类的byteValue()方法怎样使用
该方法的作用是以byte类型返回该Integer的值。只取低八位的值,高位不要。
函数原型:
publicbytebyteValue()
所属包:
java.lang.Integer
示例:
publicclassIntegerDemo{
publicstaticvoidmain(String[]args){
Integerobj=newInteger(10);
//
byteb=obj.byteValue();
System.out.println("Valueofb="+b);//输出Valueofb=10
}
}
‘肆’ java为什么要有integer类型
int是JAVA八大基本数据类型(byte,shor,int,long,char,boolean,float,double)之一。JAVA语言为八大基本数据提供了包装类,Integer对应是int类型的包装类,就是把int类型包装成Object对象。Java有2种不同的类型:引用类型和原始类型。Int是java的原始数据类型,Integer是java的为int提供的封装类。Java为每个原始类型提供了封装类。int是基本数据类型Integer是int的一个包装类(wrapper),他是类不是基本数据类型,他的内部其实包含一个int型的数据那为什么要用Integer呢,主要是因为面向对象的思想,因为Java语言是面向对象的,这也是它只所以流行的原因之一,对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来专门处理int型相关的数据,另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。所以Integer的存在是很必要的。始数据类型引用数据类型oatdoubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以那种类型的数据结构存储,当引用类型和原始类型用作某个类的实例时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。Integer类的使用方法1、属性。staticintMAX_VALUE:返回最大的整型数;staticintMIN_VALUE:返回最小的整型数;staticClassTYPE:返回当前类型。例子代码:System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE);结果为:Integer.MAX_VALUE:21474836472、构造函数。Integer(intvalue):通过一个int的类型构造对象;Integer(Strings):通过一个String的类型构造对象;例子代码:Integeri=newInteger("1234");生成了一个值为1234的Integer对象。3、方法。说明:1.所有方法均为public;2.书写格式:[修饰符]如:staticintparseInt(Strings)表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。1.byteValue():取得用byte类型表示的整数;2.intcompareTo(IntegeranotherInteger):比较两个整数。相等时返回0;小于时返回负数;大于时返回正数。例子代码:Integeri=newInteger(1234);System.out.println("i.compareTo:"+i.compareTo(newInteger(123)));结果为:i.compareTo:13.intcompareTo(Objecto):将该整数与其他类进行比较。如果o也为Integer类,进行方法2的操作;否则,抛出ClassCastException异常。4.staticIntegerdecode(Stringnm):将字符串转换为整数。5.doubledoubleValue():取得该整数的双精度表示。6.booleanequals(Objectobj):比较两个对象。7.floatfloatValue():取得该整数的浮点数表示。8.staticIntegergetInteger(Stringnm):根据指定名确定系统特征值。9.staticIntegergetInteger(Stringnm,intval):上面的重载。10.staticIntegergetInteger(Stringnm,Integerval):上面的重载。11.inthashCode():返回该整数类型的哈希表码。12.intintValue():返回该整型数所表示的整数。13.longlongValue():返回该整型数所表示的长整数。14.staticintparseInt(Strings):将字符串转换成整数。s必须是时进制数组成,否则抛出NumberFormatException异常。15.staticintparseInt(Strings,intradix):以radix为基数radix返回s的十进制数。所谓的基数就是“几进制”。例子代码:Strings1=newString("1010");System.out.println("Integer.parseInt(Strings,intradix):"+Integer.parseInt(s1,2));结果为:Integer.parseInt(Strings,intradix):10即s1在此例中被看成是二进制,返回十进制就是10。16.shortshortValue():返回该整型数所表示的短整数。17.staticStringtoBinaryString(inti):将整数转为二进制数的字符串。18.staticStringtoHexString(inti):将整数转为十六进制数的字符串。19.staticStringtoOctalString(inti):将整数转为八进制数的字符串。20.StringtoString():将该整数类型转换为字符串。21.staticStringtoString(inti):将该整数类型转换为字符串。不同的是,此为类方法。22.staticStringtoString(inti,intradix):将整数i以基数radix的形式转换成字符串。例子代码:inti1=54321;System.out.println("Integer.toString(inti,intradix):"+Integer.toString(i1,16));结果为:Integer.toString(inti,intradix):d43123.staticIntegervalueOf(Strings):将字符串转换成整数类型。24.staticIntegervalueOf(Strings,intradix):将字符串以基数radix的要求转换成整数类型。
‘伍’ java中的byte有什么作用
在今天,byte字节就是一个八位元组,使用其它位数的机器都进了博物馆。 java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。不幸的是,byte的用作计数的时间远少于用表达基本内存单元的时间。比如从stream里读入一个双字节字符,我们先收到2个byte。为了把byte转换成适当的形式,需要对byte值做一些比较,比如判断字符集要比较其是否在某个编码范围内,比如GBK 0x8140~0xFEFE,然后new适当的string。 signed byte 把 0x00 ~ 0xff 映射成 0~127 -128~-1 两段,注意当与literal比较时,java自动将literal识别成int 可以用 下面的小程序来验证: 1 public class JavaByte 2 { 3 public static void main(String[] args) 4 { 5 byte b = 0; 6 for ( int i = 0; i <= 0xff; ++i ) 7 { 8 b = (byte)i; 9 System.out.print(" "+i+":"+b+", "); 10 } 11 } 12 } 当收到(0xC7B0)这个GBK字符时,要判断 0x81 <= 0xC7 <= 0xFE 是否成立,实际变成判断 -127 < -57 < -2,唔,万幸,可以直接比较 low < ch < high。如果要判断 0x00 <= 0xC7 <= 0x80 (ASC Char),这回麻烦了,变成判断 (0 <= -57 <= 127) || ( 0x57 == -128 )。比较简单的办法用 (b+256)%256的办法令其值回到0~255,或者用&0xff并赋给一个int。考虑到jvm里的byte其实也是32位的,所以在计划用byte的地方,直接用integer并不会有什么实际的损失,而 DataInputStream也提供了一个readUnsignedByte()方法返回的是int。所以真正的解决方案是忘掉byte,直接上 int。至于为什么java没有unsigned数据类型,照下面这个interview里Jams Golsing的意思,应该是java应该简单而unsigned算术过于复杂了会让大多数程序员产生误解误用:
‘陆’ java 中各种数据类型转换byte[]的方法
ObjectOutputStream oos = null;//对象输出流
ByteArrayOutputStream baos = null;//byte数组输出流
ByteArrayInputStream s = null;//对象输入流
try {
//序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);//将数组流传入对象流
oos.writeObject(new Integer(1));//用对象流读取对象。
byte[] bytes = baos.toByteArray();//用数组流将传入的对象转化为byte数组
//反序列化
s = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(s);
Integer i = (Integer)ois.readObject();
System.out.println(i);
} catch (Exception e) {
}以上是把integer类型转化成byte[]数组类型。注:基本类型要转化为byte[]数组的话,需要用该基本类型的引用类。比如int的引用类是integer,就行了所有的类型,包括class都可以用这种序列化方式来转成byte[],
‘柒’ Java中int和Integer
java.lang.Integer是一个类.对它的操作要通过类的方法
int是JAVA缺省的8中基本数据类型之一.不是类的对象.
int是基本数据类型,Integer是对int进行了封装的一个类。
声明为int的变量不需要实例化,声明为Interger的变量需要实例化
int是基本类型,Integer是包装类,也就是类。
Integer 是比int 更高级的 数据类型 为什么java中使用int 而不像vb中那样使用Integer
int是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int 一般只用在数值计算中,而Integer是用在Java的其它要使用对象的地方,比如Map的Key与Value,List与Set的Element若要保存数值信息都要把int包装成Integer对象使用。
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型 封装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
int 一般做为数值参数就够了
integer 一般做类型转换的时候用的较
‘捌’ java的基本数据类型有哪些
四种八类:
基本数据类型
整数类型:
byte:字节占用 1字节 8位,用来表达最小的数据单位,储存数据长度为 正负 127;
short:字节占用 2字节 16位,储存数值长度为 -32768-32767
int:字节占用 4字节 32位,最为常用的整数类型,储存长度为,-2^31-1~2^31 (21 亿)
long:字节占用 8字节 64位,当到达int数值极限时使用,储存长度为 看图片:
浮点数类型:
float:单精度浮点型 32位 取值范围 3.4e-38~3.4e-38
double:双精度浮点型 64位 ,java中默认的浮点类型 取值范围 1.7e-308~1.7e-308
字符类型:
char:16位 ,java字符使用Unicode编码;
布尔类型
boolean : true 真 和 false 假
引用数据类型:
类 class
接口 interface
数组
‘玖’ 求java编程 字节byte怎么转换成整形int
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
在这里先温习下计算机基础理论
byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说00000001代表的是数字1
10000000代表的就是-1
所以正数最大位01111111,也就是数字127
负数最大为11111111,也就是数字-128
上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码
1、反码:
一个数如果是正,则它的反码与原码相同;
一个数如果是负,则符号位为1,其余各位是对原码取反;
2、补码:利用溢出,我们可以将减法变成加法
对于十进制数,从9得到5可用减法:
9-4=5因为4+6=10,我们可以将6作为4的补数
改写为加法:
9+6=15(去掉高位1,也就是减10)得到5.
对于十六进制数,从c到5可用减法:
c-7=5因为7+9=16将9作为7的补数
改写为加法:
c+9=15(去掉高位1,也就是减16)得到5.
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
-1的原码为10000001
-1的反码为11111110
+1
-1的补码为11111111
0的原码为00000000
0的反码为11111111(正零和负零的反码相同)
+1
0的补码为100000000(舍掉打头的1,正零和负零的补码相同)
Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。
----
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。
而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。
来自博客友zhouyong0的分享
‘拾’ JAVA的Integer.byteValue 用C#怎么写
我没学Java,不过根据你的结果来看,你的C#应该这样写
List<sbyte> thumbList = new List<sbyte>();
int int_date = 175;
sbyte a = (sbyte)int_date;
thumbList.Add(a);
Console.WriteLine(a);
int int_date2 = 203;
sbyte b = (sbyte)int_date2;
thumbList.Add(b);
Console.WriteLine(b);
int int_date3 = 42;
sbyte c = (sbyte)int_date3;
thumbList.Add(c);
Console.WriteLine(c);