`

char和int类型相互转换

阅读更多
今天看到别人使用一个方法 ->String.indexOf(int ch),
然后被Sonar提示说String.indexOf(char) is faster than String.indexOf(String).

我想去测试一下是不是这样, 结果写的时候发现String.indexOf只有两种参数格式,如下:




这里没有显示char类型参数。

但是测试了一下确实是可以的。

于是研究了一下,有了以下代码:


char c1='a';
int i1=97;
System.out.println(c1==i1);  //true

char c=97;
System.out.println("c= "+c );  //a
System.out.println((int)c);    //97


int a='a';
System.out.println((int)a);   //97


这些其实都是JVM自己进行转换的,和JDK无关。 通过debug模式是无法看到这一转换过程的。



至于为什么char比String速度快,原因很简单。
一方面是char类型的东西都被直接存储到了虚拟机的栈内存中,提取很快。
另一方面,String这个东西本质上是一个引用对象,数据应该是在堆内存吧(这块不太清楚)。
它包含了几个元素:
A character array    ->一个char数组
An integral offset    ->一个整数值表示起始(offset)
An integral character count    ->一个整数表示char数量
An integral hash value          ->一个整数哈希值
(这个在[url]http://stackoverflow.com/questions/8190517/why-char-performs-better-than-string-java看到的。 debug模式也可以看到。)
[/url]
这东西操作起来会比char慢是必然的。



  • 大小: 15.1 KB
分享到:
评论

相关推荐

    float_char_int_string.rar_char float_char int 转换_char to string_

    本程序"float_char_int_string.rar"着重探讨了`char`, `float`, `int`以及`string`这四种基本数据类型的相互转换。这些转换在不同的场景下都有其特定的应用,例如数据存储、用户界面显示或计算等。下面我们将详细...

    char类型与int类型的相互转换.cpp

    适合初学STL

    int、char、double与byte类型之间相互转换

    本文将详细介绍如何实现int、char、double与byte类型之间的相互转换,并通过具体的示例代码来阐述每一种转换方法。 ### 一、int类型转换为byte数组 #### 方法:intToByte() 该方法接收一个int类型的参数`number`,...

    java中int_char_string三种类型的相互转换

    Java 中 int、char、String 三种类型的相互转换详解 Java 作为一种静态类型语言,对变量的类型定义非常严格。然而,在实际开发中,我们经常需要在不同的类型之间进行转换以满足不同的需求。其中,int、char、String...

    big、CString_int_string_char数据类型之间的转换

    big、CString_int_string_char等数据类型之间的转换.pdf

    CString,int,string,char之间的转换

    本文将详细探讨`CString`、`int`、`string`、`char`及其数组之间的转换方法,这对于理解和处理不同类型字符串数据尤为重要。 #### 1. `char`到`CString`的转换 `char`类型的单个字符或`char*`(字符指针)可以直接...

    datatype-transform.rar_C++ CString CHAR_CString_char int 转换_char

    标题提到的"datatype-transform.rar_C++ CString CHAR_CString_char int 转换_char"着重于C++中`int`、`char`、`std::string`以及`CString`类型的相互转换。`CString`是Microsoft MFC(Microsoft Foundation Classes...

    CString,char,int,COleDateTime,CTime,time_t之间的相互转换

    本文将详细探讨CString、char、int、COleDateTime、CTime、time_t等类型之间的相互转换方法,这对于构建高效且兼容性强的应用程序至关重要。 ### CString与char之间的转换 CString是Visual C++中用于处理字符串的...

    深入了解Java中String、Char和Int之间的相互转换

    深入了解Java中String、Char和Int之间的相互转换 Java是一种面向对象的编程语言,作为一名Java开发者,了解String、Char和Int之间的相互转换是非常重要的。本文将详细介绍Java中String、Char和Int之间的相互转换,...

    long 和 int 的相互转换.docx

    原始数据类型包括byte、short、int、long、float、double、char和boolean,而引用数据类型则包括类(class)、接口(interface)和数组。在处理数值计算时,我们可能需要在不同数据类型之间进行转换,特别是当涉及到long...

    VC (CString,char,int,long,string,byte...)名种类形间的转换

    本文将详细介绍VC中不同数据类型之间转换的方法,特别是`CString`与`char`、`int`、`long`、`string`和`byte`等类型的相互转换。 #### `int`到`CString`的转换 当需要将整型变量转换为`CString`时,可以使用`...

    char与wchar_t互转

    本文将详细介绍如何在C++中实现`char`类型与`wchar_t`类型的互相转换,并通过具体的代码示例来解释这一过程。 #### 核心知识点 1. **宽字符与多字节字符**:`char`类型通常用于存储单字节字符,而`wchar_t`类型则...

    VC、C++ CString,int,string,char之间的转换

    本文将详细介绍 `CString`, `int`, `string` 和 `char` 之间的相互转换方法。 #### 1. `string` 到 `CString` - **转换方式**:通过 `CString` 的 `format` 方法或构造函数进行转换。 - 使用 `CString` 的 `...

    int和CString相互转化

    ### int和CString相互转化 在C++编程语言中,尤其是对于使用MFC(Microsoft Foundation Classes)框架进行Windows应用程序开发的开发者来说,`int`与`CString`之间的转换是非常常见的需求。这种转换通常用于数据...

    CString,int,string,char之间的转换.txt

    本文将详细介绍 CString、int、string 和 char 之间的相互转换方法,并提供具体的示例代码。 #### 一、概述 在 C++ 中,字符串通常有多种表示形式,包括 `CString`(MFC 中的字符串类)、`std::string`(C++ 标准...

    VC中各种不同数据类型的相互转换2(补充)

    本文将详细探讨VC++中涉及的数据类型转换,包括`int`、`long`、`float`、`double`、`char`数组、`char*`、`CString`、`_variant_t`和`_bstr_t`之间的转换方法。 1. **其他数据类型转换为字符串**: - `itoa`函数...

    C++中string与int的相互转换实现代码

    sprintf函数可以将int类型的ss转换为char数组temp,然后将char数组temp转换为string类型的str。 C++中string与int的相互转换可以通过多种方法实现。开发者可以根据实际情况选择合适的方法来实现string与int的相互...

    BYTE类型之间相互转换

    因此,在转换前检查数据范围和类型兼容性是至关重要的。 8. **内存对齐和字节顺序** 当涉及跨平台或多线程编程时,要考虑内存对齐和字节顺序(Big-Endian vs Little-Endian)的问题。不正确的转换可能导致数据解析...

    整形数组与字符数组相互转换

    本示例涉及的是整形数组(int array)与字符数组(uchar array)之间的转换,这对于数据存储和传输具有重要意义。在Qt或VC++环境中,这种转换对于数据库交互,特别是当数据库要求特定数据格式时,尤为关键。 首先,...

    数据类型转换

    - **TurboC 特性**:在 TurboC 编译器中,整型数据类型 `int` 和 `unsigned int` 的转换特性与某些其他编译器有所不同。例如,在打印函数 `printf` 中,需要正确地使用格式字符串 `%d` 或 `%u` 来处理有符号和无符号...

Global site tag (gtag.js) - Google Analytics