JAVA笔记-字符类型(char)--特殊
2016-07-14 22:39
288 查看
JAVA中基本类型有八种,其中char类型比较特殊。
首先看下基本类型的转换:
类型转换: char–>
自动转换:byte–>short–>int–>long–>float–>double
强制转换:①会损失精度,产生误差。(比如double转long时,小数点以后的数字全部舍弃。)
②容易超过取值范围。
一种字符类型(char):
char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535)。
注意事项:
不能为 0 个字符。
转义字符:\n 换行 \r 回车 \t Tab 字符 \” 双引号 \ 表示一个\
两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运 算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
特殊点1:char 本质就是个数!
(char b = ‘a’+18; //因为char本身在码表中可以用数字表示的,‘a’和18都可以看成是字符的字面量,两个字面量相加还是字符的字面量,即运算完之后还是char,所以输出s 。
//但是,下面定义就是错的了!
char a = ‘a’;
char b = a + 18; //会报编译错误,因为JAVA编译器将a当成一个字符变量来看待的(而不是字符的字面量),字符变量参与运算时会先转换成int类型,即最后的运算结果是int类型,而接收的是char类型,所以会提示Type mismatch: cannot convert from int to char。
)
特殊点2:char: 编码为0的字符
注意:不要打印输出编号为0的字符!!!!
Linux操作系统中输出编号为0的字符,以后将不再进行输出,后续字符不再输出。
测试:
//测试其他类型的数组元素初始化情况
double[] ary6 = new double[4];
System.out.println(ary6[0]);//0.0
byte[] ary7 = new byte[10];
System.out.println(ary7[0]); //0
boolean[] ary8 = new boolean[10];
System.out.println(ary8[0]); //false
//char数组元素自动初始为 编号为 0 的
// 字符。编号为0 的是一个特殊的控制
// 字符, 打印不可见!是字符串的结束
// 标记,如果输出 这个字符,Linux操作
// 系统认为输出结束,后续字符不再输出
char[] ary9 = new char[5];
System.out.print((int)ary9[0]);
System.out.println(“Hello”);
//如上案例说明, 不要打印输出编号为
// 0的字符!!!!
首先看下基本类型的转换:
类型转换: char–>
自动转换:byte–>short–>int–>long–>float–>double
强制转换:①会损失精度,产生误差。(比如double转long时,小数点以后的数字全部舍弃。)
②容易超过取值范围。
一种字符类型(char):
char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535)。
注意事项:
不能为 0 个字符。
转义字符:\n 换行 \r 回车 \t Tab 字符 \” 双引号 \ 表示一个\
两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运 算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
特殊点1:char 本质就是个数!
(char b = ‘a’+18; //因为char本身在码表中可以用数字表示的,‘a’和18都可以看成是字符的字面量,两个字面量相加还是字符的字面量,即运算完之后还是char,所以输出s 。
//但是,下面定义就是错的了!
char a = ‘a’;
char b = a + 18; //会报编译错误,因为JAVA编译器将a当成一个字符变量来看待的(而不是字符的字面量),字符变量参与运算时会先转换成int类型,即最后的运算结果是int类型,而接收的是char类型,所以会提示Type mismatch: cannot convert from int to char。
)
特殊点2:char: 编码为0的字符
注意:不要打印输出编号为0的字符!!!!
Linux操作系统中输出编号为0的字符,以后将不再进行输出,后续字符不再输出。
测试:
//测试其他类型的数组元素初始化情况
double[] ary6 = new double[4];
System.out.println(ary6[0]);//0.0
byte[] ary7 = new byte[10];
System.out.println(ary7[0]); //0
boolean[] ary8 = new boolean[10];
System.out.println(ary8[0]); //false
//char数组元素自动初始为 编号为 0 的
// 字符。编号为0 的是一个特殊的控制
// 字符, 打印不可见!是字符串的结束
// 标记,如果输出 这个字符,Linux操作
// 系统认为输出结束,后续字符不再输出
char[] ary9 = new char[5];
System.out.print((int)ary9[0]);
System.out.println(“Hello”);
//如上案例说明, 不要打印输出编号为
// 0的字符!!!!
相关文章推荐
- 只为java 接口和抽象区别
- Single Number III
- 只为java 抽象和接口的区别
- Invert Binary Tree
- java 获取本机ip地址工具类
- Java实现排序算法——插入排序法
- Intersection of Two Arrays
- spring整合hibernate
- java静态方法中不能引用非静态变量
- struts2 国际化
- Java垃圾回收机制
- JAVA虚拟机:垃圾收集算法(标记清除算法、复制算法、标记整理算法、分代收集算法)
- Java中非静态代码块,静态代码块和构造方法的初始化顺序
- Spring杂记
- spring整合hibernate
- Java反射:数组
- Java对SQLite的"增删改查"
- java抓取动态生成的网页
- springmvc+spring+mybatis+mysql框架整合(maven模块化分层)03
- struts2 自定义校验规则