相关疑难解决方法(0)

何时使用包装类和基元类型

什么时候我应该去原始类型的包装类?或者我应该在什么情况下选择包装器/原始类型?

java wrapper primitive-types

87
推荐指数
4
解决办法
7万
查看次数

最佳实践:使用什么,.Net类或短名称?

在C#中,我们有.Net类和短名称,如Double和double.有人回忆说我总是会使用短名称,想知道原因.我知道它们都是一样的,但为什么有时候比其他人更受欢迎呢?只是可读性还是还有更多内容?

例如,如果我创建一个具有字符串和布尔属性的类,则应始终使用以下哪个以及应该使用另一个:

Class MyClass {
    ...
    private String x;
    private Boolean y;
    ...
}
Run Code Online (Sandbox Code Playgroud)

要么

Class MyClass {
    ...
    private string x;
    private bool y;
    ...
} 
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
1
解决办法
990
查看次数

为什么Primitives的包装类没有setter?

为什么Wrapper类(如Integer,Double等)没有内部原始值的setter是什么原因?

我问这个是因为这种功能会简化微积分,并使Java语言更灵活一些.

让我举几个例子.

1)我们来看下面的例子:

Integer x = new Integer(5);
x++;
Run Code Online (Sandbox Code Playgroud)

幕后的前一个代码是执行自动装箱.就像是:

int x_tmp = x.intValue();
x_tmp++;
x = new Integer(x_tmp); // Yes that's a new memory allocation
Run Code Online (Sandbox Code Playgroud)

由于这个问题,在Wrapper上执行微积分比在普通原始类型上执行要慢.使用setter,可以更容易地增加内部值,而无需在堆上分配另一个对象.

2)另一个困扰我的问题是,在Java中编写交换函数是不可能的,就像我在C(使用指针)或C++(指针或引用)中所做的那样.

如果我写,void swap(Integer x, Integer y)我无法访问内部值因为,并且我将无法交换值.

PS:我的一个朋友建议我应该考虑更大的图景,并考虑并发性和类型不变性.

所以你有解释吗?谢谢!

java setter immutability wrapper primitive-types

4
推荐指数
1
解决办法
2180
查看次数

标签 统计

java ×2

primitive-types ×2

wrapper ×2

c# ×1

immutability ×1

setter ×1