数据类型扩展及面试题讲解
程序员文章站
2022-07-14 11:14:04
...
Java中的进制表示
public class DataType {
public static void main(String[] args) {
//二进制表示以0b开头
int a = 0b11;
//八进制表示用0开头
int b = 011;
//十进制
int c = 10;
//十六进制表示用0x开头
int d = 0x10;
System.out.println(a);//3
System.out.println(b);//9
System.out.println(c);//10
System.out.println(d);//16
}
}
浮点数精度丢失
有关于钱的变量声明,不能用float,不然老板会打屎你哈哈
public class DataType {
public static void main(String[] args) {
//浮点数精度丢失
float f1 = 221342423242434f;
float f2 = f1 + 1;
System.out.println(f1 == f2);//true
从上面代码看出来,输出的结果是true,出现精度丢失的问题了,正确的应该使用Decimal
类型去修饰有关于钱的变量
字符扩展
关于Java中的char
基本数据类型,它占了两个字节,只能存储一个汉字或者一个数字,不管存的是什么其实底层本质就是数字
public class DataType {
public static void main(String[] args) {
char a = '1';
char b = '国';
char c = 'A';
char d = 'a';
System.out.println(a);//1
System.out.println(b);// 国
System.out.println((int)b);// 22269
System.out.println((int)c);// 65
System.out.println((int)d);//97
底层通过Unicode编码的,可以根据ASCALL对照表查出对应的值,比如a=97,A=65
转义字符表
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符’’’ | 092 |
\’ | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
? | 代表一个问号 | 063 |
\0 | 空字符(NUL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 十六进制所代表的任意字符 | 十六进制 |
为何Java中编译和解释并存?(重要)
- 高级编程语言按照程序的执行方式分为编译型和解释型两种。
- 编译型语言是指编译器将源程序一次性翻译成可被该平台执行的机器码;(翻译与执行分开)
- 解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。(翻译与执行一次执行)
- 比如,你想阅读一本英文名著,你可以找一个英文翻译人员帮助你阅读, 有两种选择方式,你可以先等翻译人员将全本的英文名著(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。
Java 语言既具有编译型语言的特征,也具有解释型语言的特征,因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(*.class 文件),这种字节码必须由 Java 解释器来解释执行。因此,我们可以认为 Java 语言编译与解释并存。
下一篇: Java常用小知识点(二)之lambda