char类型和int型可以通用

来源:互联网 发布:java sessionscoped 编辑:程序博客网 时间:2024/06/04 19:43

今天写一个问题的时候惊奇的发现char类型和int类型数值在 0-255之内的可以通用

如下的代码

package test;import java.util.Scanner;/** * Created by Administrator on 2016/10/8. */public class Main {    /*找出字符串中第一个只出现一次的字符     *详细描述:    *接口说明    *原型:    *bool FindChar(char* pInputString, char* pChar);    *输入参数:    *char* pInputString:字符串    *输出参数(指针指向的内存区域保证有效):    *char* pChar:第一个只出现一次的字符    *如果无此字符 请输出'.'    */    public static void main(String[] args) {        Scanner sc=new Scanner(System.in);        String st=sc.nextLine();        if(st.trim().length()>0 ){            findChar(st);        }            }    public static void findChar(String st){       char[] ch=new char[256]; //共有256个字符,给所有字符预留空间,默认初始值是ASCII的0(int);char类型会自动转换成(int型)ASCII进行算术运算       /*char类型数组默认的是int 型的ASCII 0;        *int 类型数组默认的也是0。所以有时候int 型和char类型数组可以通用。        *并且默认的char 类型会自动转换成int 型的ASCII进行算术运算。        *         * */        for(int i=0;i<st.length();i++)        {        int x=st.charAt(i);//char类型可以自动转换成对应ASCII的int型           ch[st.charAt(i)]++;//统计每个字符出现次数 ,st.charAt(i)即字符数组下标,ch[st.charAt(i)]即为出现次数,因为默认值是ASCII的0                }              for(int i=0;i<st.length();i++){            if(ch[st.charAt(i)]==1){  //如果对应的字符只出现一次,则输出并结束循环                System.out.println(st.charAt(i));                break;            }            if(ch[st.charAt(i)]!=1 && i==st.length()-1 ){ //如果没有出现只有一次的字符,输出 .                System.out.println("."); //如果不输出 . 会报错,严格按要求            }        }    }}
此时的char类型数组可以改成int型数组

char类型默认存放的是ASCII 为0的空字符(注意和空格不一样)。并且可以自动转换成ASCII的int型进行算术运算。



1 0
原创粉丝点击