int类型和char类型的区别

下面三个定义式的区别:

int i = 1;
char i = 1;
char i = ‘1‘;

int用来定义整型变量,char用来定义字符型变量,要清楚的知道三个定义式的区别,可以比较它们在内存中的存储形式。

数据在内存中是以二进制形式存放的,而且是以补码表示的。一个正整数的补码和该数的原码(即该数的二进制形式)相同;如果数值是负的,求补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。这里不对补码的知识做过多的讨论了。
int i = 1,则内存中的存储形式为:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
在讨论字符型数据以前,首先要明确一个“编码”的概念,即约定一套规则,将a、b、#等符号用二进制的形式表示出来,然后大家都遵守这个规则。美国信息交换标准码(ASCII)就是基于这样的目的产生的。那么我们现在来看下面两个定义式:
char i = 1;
char i = ‘1‘;
将一个整型常量放到一个字符变量中,实际就是把以该整型常量表示的ASCII码放到内存单元中。(ASCII码是以十进制整数表示的)
将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是把该字符的相应ASCII代码放到存储单元中。
char i = 1;则i的ASCII就是1,在内存中就是0 0 0 0 0 0 0 1
char i = ‘1’;则i的ASCII就是字符‘1’的ASCII码49,就是0 0 1 1  0 0 0 1
上面是int和char的区别,它们的联系就是存储形式类似,就是一个是1个字节,一个是2个字节。int 可以用字符常量赋值,char也可以用整型常量赋值,它们之间的桥梁就是ASCII码,因为字符是与ASCII一一对应的。

char能不能存中文字符

在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储。

在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。

char a = 65535;
char b = 65536;//报错  Type mismatch: cannot convert from int to char

原文地址:https://www.cnblogs.com/a-s-m/p/10721369.html

时间: 2024-10-16 04:21:27

int类型和char类型的区别的相关文章

int类型和byte类型的强制类型转换

今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据.这点从API也能考证.如图: 那么问题来了,int占4个字节,byte占1个字节,我们循环读取的时候将int型数组强制类型转换成byte时,会发生什么情况呢?代码如下: 1个字节占8位,既然实际返回的是byte

oracle中int类型和number类型区别

INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为NUMBER(6,2)则整数最大位数为4位(6-2=4),而小数最大位数为2位.(2)INT类型当定义整数类型时,可以直接使用NUMBER的子类型INT,顾名思义:INT用于整型数据. oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集.int类型只能

java date类型和calendar类型区别

Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1.使用Date类代表当前系统时间 Date d = new Date(); System.out.println(d); 使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下: Sun Ma

基本类型和包装类型的区别

Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double.基本类型和包装类型的区别主要有以下 4 点. 01.包装类型可以为 null,而基本类型不可以 别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行. POJO 是什么呢?这里稍微说明一下. POJO 的英文全称是 Plain Ordinary Java Object,翻译一下就是,简单无规则的 Java 对象,只有属性字段以及 setter

Spring MVC的各种参数绑定方式(请求参数用基础类型和包装类型的区别)(转)

1.基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post"> <input name="count" value="10" type="text"

Timestame类型和String 类型的转化

Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = df.format(new Date());Timestamp ts = Timestamp.valueOf(time); Timestamp转化为String: SimpleDateFormat df = new SimpleDateFo

着重基础之—MySql Blob类型和Text类型

着重基础之—MySql Blob类型和Text类型—二进制存储 在经历了几个Java项目后,遇到了一些问题,在解决问题中体会到基础需要不断的回顾与巩固. 最近做的项目中,提供给接口调用方数据同步接口,传输的数据格式是Json串.由于json串的结构层级较多,数据量也不少.在设计数据库的时候,选择了Blob类型做为字段类型.一切的一切就打这开始,同步服务正常运作,但是问题慢慢的暴露了出来,客户端在暂时我所提供的数据的时候,中文总是显示乱码,乱码,乱码,一直乱码. 问题的分析路径 1.查看了数据库连

python3.5 的str类型和bytes类型的转换

在python3.x里增加了bytes类型,并且对str方法进行了修改,让str类型和bytes类型可以相互转换. #!/usr/bin/env python # -*- coding:utf-8 -*- a = "哈哈" #字符串转换成字节 b = bytes(a,encoding='utf-8') print(b) b1 = bytes(a,encoding='gbk') print(b1) #将字节转换成字符 c=str(b,encoding='utf-8') print(c)

Date类型和Long类型的相互转换

Date类型和Long类型的相互转换: import java.text.SimpleDateFormat; import java.util.Date; public class T { public static void main(String[] args) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 1.Date类型转Long类型 // pa