使用字符作为数字,

时间:2015-07-09 13:54:49

标签: java char

我正在编写一个使用大量内存并且需要快速的模拟。我没有使用整数而是使用字符(8位而不是32位)。我需要对它们进行操作,就像这些字符是整数一样。

为了达到这个目的,我做了类似

的事情
char a = 1; 
char b = 2; 
System.out.println(a*1 + b*1); //it give me 3 in console so it has int-like behavior;

当我用一个整数乘以char时,我不知道“掩码下”发生了什么。这是最快的方法吗?

谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

性能方面,不值得使用char而不是int,因为所有现代硬件架构都针对32位或64位宽内存和寄存器访问进行了优化。

如果您想减少内存占用,即使用大量数据,那么使用char的唯一理由就是。

其他信息:Performance of built-in types : char vs short vs int vs. float vs. double

答案 1 :(得分:0)

char只是一个数字(不是32位int而是数字),通常用ascii编码表示。通过将它与整数相乘,编译器会执行从char到int的隐式转换,这就是您在控制台而不是ascii代表处打印3的原因。

答案 2 :(得分:0)

你应该使用整数。字符的大小不会影响数据的获取速度,也不会影响处理时间,除非它由多个计算机单词组成,这是不太可能的。没有理由这样做。此外,字符存储为整数,因此大小相同。另一种方法是使用小额,但这对你想要的东西没有帮助。

另外,我注意到你的代码有'System.Out.Println',这意味着你正在使用java。这有几个含义,第一个是不,你不会快速或使用很少的内存。期间,不会发生。运行JVM,JIT,垃圾收集器和Java平台的其他部分涉及大量开销。如果效率是一个相关因素,那你就错了。第二个含义是您选择的数据类型对处理时间没有影响,因为它们与物理硬件相同。只有虚拟机才能区分它们,而在原语的情况下,无论如何都没有区别。