现在的位置: 首页 > 综合 > 正文

C#与java的比较之装箱和拆箱,数据类型

2014年02月16日 ⁄ 综合 ⁄ 共 1326字 ⁄ 字号 评论关闭

C#与java的比较

(1)C#的数据类型(int、float、byte、char、double、short、bool、string);其中除了bool的写法与java不同之外,还多出一个String类型;

(2)基本数据类型

值类型:表示实际数据,只是将值存放在内存中,值类型存储在堆栈中,包括int、char、结构。(与java中的原始数据类型有相似之处)

引用类型:表示指向数据的指针或引用,包含内存堆中的对象的地址,为Null,表示未引用任何对象,包括类、接口、数组、字符串。(与Java中的引用数据类型有相似之处)

注:Java中的string属于引用数据类型(其中:java的引用数据类型为类、接口、数组)

(3)装箱和拆箱

C#中的装箱是指:将值类型转换成引用类型

 拆箱:将引用类型转换成值类型

//装箱转换就是指讲一个值类型的数据隐式转换成一个对象类型(object)的数据
            //或者将这个数据类型隐式转换成一个被该值类型数据对应的接口类型数据
            int i = 108;
            object obj = i;//装箱转换
            Console.WriteLine("obj={0}",obj);


            //拆箱就是将一个对象类型的数据显示的转换成一个值类型数据
            object obj2 = 2567;
            int i2= (int)obj2;//拆箱转换
            Console.WriteLine("i2={0}", i2);

而Java中的装箱是指:将基本数据类型包装为对应的包装类对象

    拆箱:将包装类对象转换成对应的基本数据类型。

说到装箱和拆箱,不得不说java的对象包装器

java里提供了一种叫做包装类(wrapper)的东西,是基本类型,有着相应的对象类型Integer , Long , Character等。表1列出了java API中的包装器类:

 

基本类型

包装器类

构造函数变元

boolean

Boolean

boolean或String

byte

Byte

byte或String

char

Character

char

double

Double

double或String

float

Float

float、double或String

int

Integer

int或String

long

Long

long或String

short

Short

short或String

 

Java中的包装器类有两个主要的目的:

1.提供一种机制,将基本值“包装”到对象中,从而使基本值能够包含在为对象而保留的操作中,比如添加到Collections 中,或者从带对象返回值的方法中返回。注意,java5增加了自动装箱和拆箱,程序员过去需手工执行的许多包装操作,现在可以由java自动处理了。

2.为基本值提供分类功能。这些功能大多数于各种转换有关:在基本值和String 对象间相互转换,在基本值和String对象之间按不同基数转换,如二进制、八进制和十六进制。

 

public class Text {
public static void main(String[] args) {
	Integer integer= 123;//装箱
	int i =integer;//拆箱
	System.out.println(i);
	System.out.println(integer.getClass());
}
}



抱歉!评论已关闭.