java字符转换成数字问题?不懂什么意思c='6';int a = c-'0';

问题描述

java字符转换成数字问题?不懂什么意思c='6';int a = c-'0';

字符转换成数字问题?不懂什么意思
c='6';
int a = c-'0';

那个-‘0’表示什么意思呢??百度了下好像是什么js的弱类型转换?帮忙解释下谢谢了

解决方案

c的类型很关键你却没给出来!
先说int型,可以把你那个代码转换一下

int c='6';
int x='0';
int a=c-x;
//System.out.println("c:"+c);//54
//System.out.println("x:"+x);//48
//System.out.println("a:"+a);//6

单引号特殊是char型,把他赋给int型会赋对应的ASIC码值//改为双引号会报错,类型不配
这基本是语言共性了,追根会追到C语言或汇编上去
比如'a'是97也可以这样做 int c='a';而不报错,这在底层场合很有用,可能就是你说的弱类型转换,严格的讲,类型确实不同,因为'a'有char去盛放,但这样设计用处还很大,又能体现一点点智能纠错的感觉,这是发生在弱类型诞生之前的事
有的甚至可以这样int m="123";//这就是弱类型范例,当然js一个var就通用了,php一个$
再说就是c是char型,那么输出c就是a
但是这个+-*/运算符还是会对两边进行自动转换
所以a的值还是不变,对数据的运算确认类型确实是首要任务,处理的很正确,在别的语言中,可以重载运算符,设计为需要模式
更深的你再追追吧,可能到汇编word甚至硬件上去

解决方案二:

c='6';
int a = c-'0';

这里的c是一个变量,c='6'就是讲6的ASCII码值54(去查下ASCII码表就知道了)赋给变量c,其在内存中存储的是对应的码值54而不是6,int a = c-'0',定义了一个a变量,并给它赋值,赋值的数值是c-'0'表达式的结果,c变量是6的ASCII码值54,减去0的ASCII码值48,结果是给a赋值6,此时a变量的在内存中存储的就是数值6了。所以你可以把它理解为由字符型的'6'变成了数值型的6,进行了类型转换。

解决方案三:

int char 之间是可以互相转换的 '0' 的ASCII码值对应的是48 '1' 的ASCII码值对应的是49
····

依次往下 这就是规律

如果你想将一个 字符类型的数字 转化为int 类型 用这个字符减去 '0' 在附给int就行了

如:
char c='8' ;
int i= '8'-'0';
那么i的值一定是 数字8

解决方案四:

应该是字符‘6’-字符‘0’得出的字符再转换为 int 型

解决方案五:

char类型的变量都是存AscII码的,两个AscII码相减再转int就容易理解了吧

时间: 2025-01-21 00:51:23

java字符转换成数字问题?不懂什么意思c='6';int a = c-'0';的相关文章

JS中的字符转换为数字问题

问题描述 在JS中能够正确地把字符转换为十进制数字的函数是什么呢?查了半天的google和baidu得出来的函数都不行,我是这样子做的:从页面中获取一个字符串,如str=STRING,然后使用函数str2=str.split(""),通过验证,这样子得出来的str2[i]中每个值都是字符,于是我使用了parseInt(str2[i]),parseFloat(str2[i]),Number(str2[i]),parseInt((str2[i]).toString),等函数得到的结果都是N

java 全角半角字符转换的方法实例_java

如果搞明白了Java中全角字符和半角字符之间的关系那他们之间的转换根本就不是个事. 可以通过下面的程序看看Java中所有字符以及对应编码的值 复制代码 代码如下:     public static void main(String[] args) {        for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {            System.out.println(i + "    "

java 大小写转换及数组转换字符

java 大小写转换及数组转换字符 public class mainclass {   public static void main(string[] arg) {     char[] ch = {'a','b','c','d'};     system.out.println(string.valueof(ch));     } } 大写转换小写 public class main {   public static void main(string[] args) {     stri

Java字符编码转换过程说明

Java字符编码转换过程说明 />/> 常见问题 JVM JVM启动后,JVM会设置一些系统属性以表明JVM的缺省区域. user.language,user.region,file.encoding等. 可以使用System.getProperties()详细查看所有的系统属性. 如在英文操作系统(如UNIX)下,可以使用如下属性定义强制指定JVM为中文环境 -Dclient.encoding.override=GBK -Dfile.encoding=GBK -Duser.language=

java 全角半角字符转换如何实现_java

复制代码 代码如下: package com.whatycms.common.util; import org.apache.commons.lang.StringUtils; /** * <PRE> * 提供对字符串的全角->半角,半角->全角转换 * </PRE> */ public class BCConvert { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ static final char DBC_CHAR_START

我的Java开发学习之旅------&amp;gt;Java字符编码解析

Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常就很扯蛋,每个人都不愿意承认是自己的代码有问题.其实编码问题并没有那么神秘,那么不可捉摸,搞清Java的编码本质过程就真相大白了.               其实,编码问题存在两个方面:JVM之内和JVM之外.   1.Java文件编译后形成class 这里Java文件的编码可能有多种多样,但Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生class文件,这里的class文件编码是Unicode编码(具体说是UT

java 字符替换问题。。。。

问题描述 java 字符替换问题.... http://192.168.1.254record2015Y04M03D14H19M00S.mp4?custom=1&cmd=4001怎么把里面的 替换换成 / ? 解决方案 String str = ""http://192.168.1.254\record\2015Y04M03D14H\19M00S.mp4?custom=1&cmd=4001""; String newStr = str.replace

Java字符流与字节流区别与用法分析_java

本文实例讲述了Java字符流与字节流区别与用法.分享给大家供大家参考,具体如下: 字节流与字符流主要的区别是他们的的处理方式 流分类: 1.Java的字节流 InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先. 2.Java的字符流 Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先. InputStream,OutputStream,Reader,writer都是抽象类.所以不能直接new 字节流是最基本的,所有的Inpu

java replaceAll转换有问题

问题描述 java replaceAll转换有问题 F:imgTb300008taobaotaobao2.jpg转换成 /imgTb/300008/taobao/taobao2.jpg replaceAll("\\", "/") replaceAll("F:", "")为什么不好用啊! 解决方案 只能替换掉 '\' 字符 为 '/' 解决方案二: public static void main (String[] args)