Java--基本数据类型拓展 &转义字符
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--基本数据类型拓展 &转义字符相关的知识,希望对你有一定的参考价值。
1. 基本数据类型拓展
1.1 整型拓展
在我们计算机中存在很多进制问题,十进制,八进制,十六进制等等的问题,他们怎么表示呢?
- 十进制整数,如:99, -500, 0。
- 八进制整数,要求以 0 开头,如:015。
- 十六进制数,要求 0x 或 0X 开头,如:0x15 。
演示:
public static void main(String[] args) {
//整型
int i = 10;// 10进制
int i2 = 010; // 8进制
int i3 = 0x10;//16进制
System.out.println("10进制: " + i);// 10
System.out.println("10进制: " + i2);// 8
System.out.println("10进制: " + i3);// 16
}
1.2 浮点型拓展
【金融面试问:银行金融业务用什么类型表示?】
浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
public static void main(String[] args) {
float f = 0.1f;
double d = 1.0 / 10;
System.out.println(f == d); //false
float d1 = 2131231231f;
float d2 = d1 + 1;
if (d1 == d2) {
System.out.println("d1==d2"); // 输入d1==d2
} else {
System.out.println("d1!=d2");
}
}
主要理由:
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
1.2.1 最好完全避免使用浮点数比较
大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
示例:
public static void main(String[] args) {
BigDecimal decimal1 = new BigDecimal("1.00000000000000000000000000001");
BigDecimal decimal2 = new BigDecimal("1.00000000000000000000000000002");
System.out.println(decimal1.equals(decimal2)); // flase
double d1 = 1.00000000000000000000000000001;
double d2 = 1.00000000000000000000000000002;
System.out.println(d1 == d2);// true
}
1.2.2 浮点数使用总结:
- 默认是double
- 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
- 避免比较中使用浮点数
1.3 字符型拓展
- 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。
- char 类型用来表示在Unicode编码表中的字符。.
- Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;
- 【科普:2字节=16位 2的16次方=65536,我们用的Excel原来就只有这么多行,并不是无限的】
【代码演示:字符转int看结果】
public static void main(String[] args) {
char c1 = 'a';
char c2 = '中';
System.out.println((int) c1); //97
System.out.println((int) c2); //20013
}
Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)
示例:
public static void main(String[] args) {
char c3 = '\\u0061';
System.out.println(c3); //a
}
1.3.1 转义字符
Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义,有如下常用转义字符:
转义字符 | 含义 | Unicode编码 |
---|---|---|
\\b | 退格(Backspace) | \\u0008 |
\\n | 换行 | \\u000a |
\\r | 回车 | \\u000d |
\\t | 制表符(tab) | \\u0009 |
\\" | 双引号(") | \\u0022 |
\\’ | 单引号(’) | \\u0027 |
\\\\ | 反斜杠(\\) | \\u005c |
【String类,其实是字符序列(char sequence)。】
1.4 布尔型拓展
- boolean类型(一位,不是一个字节),就是0|1
- boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
- boolean 类型用来判断逻辑条件,一般用于程序流程控制。
【编码规范】
以上是关于Java--基本数据类型拓展 &转义字符的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 基本数据类型 — 字符串:转义定义多行字符串