Java的数据类型以及数据类型的拓展和一些面试问题的解决思路
数据类型
Java是强类型语言
要求变量的使用严格规定,所有变量必须先定义才能使用
好处:严禁,安全性高
缺点:速度慢
Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
变量
变量是可以变化的量
type varName [=value] [{,varName[=value]}]
//数据类型 变量名 = 值;可以使用都好隔来声明多个同类型变量。
八大数据类型
整数
- int
- byte
- short
- long 在用long时末尾要加F
小数
- float 在用float时末尾也要加F
- double
字符
- char
字符串
- String 注意String是一个类,不是关键词
布尔值
- boolean (flag)只代表是和否 true/false
数据类型扩展以及面试题
整数拓展
首先要了解数位进制,一般分为二进制 十进制(0b) 八进制(0) 十六进制(0x)
范例
int i = 10;
int i1 = 010; //八进制0
int i2 = 0x10; //十六进制0x 0-9 A-F 16
浮点拓展及银行业务怎么表示
首先我们用float进行比较
float f = 0.1f;
double f1 = 1.0/10;
System.out.println(f==f1); //false 结论是不等于
那么他输出的结果是false,结论是二者并不等于,于是我们换一个比较方式。
float d = 2222354515f;
float d1 =d+1;
System.out.println(d==d1);//ture
而这次输出则为ture,二者相等。
由此我们可以得到
浮点数是有限的,有离散性,存在摄入误差,只是大约但接近不等于
所以最好完全避免使用浮点数进行比较
所以最好完全避免使用浮点数进行比较
所以最好完全避免使用浮点数进行比较
而阴阳业务我们则用专门的BigDecimal 这是专门的数学工具
字符拓展
字符拓展首先我们用char来进行一段命令的执行
char c1 ='a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
在这段命令里,我们可以看到,原本是字符类型的char被强制转为了int类型,而输出后'a'被强制转换输出为数字97,而''中''被强制转换输出为数字20013。
所有的字符本质是数字
而强制转换涉及到编码,是由unicode进行编码,而unicode有一张表例如(97 ==a 65 == A)。unicode可以处理任何文字语言,占用两个字节,最多可以表示65536个字符(其实不止)
unicode编码表示:U0000 UFFFF
unicode编码示例:
char c3 = '\u0061';//unicode的正常表示
System.out.println(c3);//输出为a
转义字符拓展
System.out.println("hello\tworld");
System.out.println("hello\nworld");
与正常输出的helloworld不同的是,分别在两个的中间加入了\t和\t
\t是制表符
\n则是换行符
转义字符还有很多
额外拓展
String sa = new String("helle world");
String sb = new String("helle world");
System.out.println(sa==sb);//flase
String sc = "helle world";
String sd = "helle world";
System.out.println(sc==sd);//ture
这是一点额外拓展,关于为什么new一个新的对象他俩不相等,而下面则相等,自我目前猜想的是因为是new的对象,所以即使内容相同他们也不可能相等
而这里所额外拓展的具体如何分析,得在后面学习以后,从对象以及内存里进行分析
布尔值扩展
boolean flag = true;
if (flag==true){}//新手书写
if (flag){}//老手书写
这两行代码所表达的是一个意思,如果flag等于ture,那么则输出什么什么,而区别在于下面简化了,新手期间还是用新手书写比较好,后面很多框架源码都是那种老手的简易书写,意思都是一个意思,也没有错误。
代码必须要精简易读

浙公网安备 33010602011771号