Java基础(第二期)
数据类型扩展以及面试题讲解
整数拓展:进制
int i=10;
int i2=010; //八进制0
int i3=0x10; //十六进制0x 0~9 A~F 16
相关进制转换自行学习,用的不多
浮点数拓展
银行业务怎么表示? 钱的问题意味着精准不能出错
通常实用BigDecimal来表示,这是一个数学工具类
float与double 有有限,离散,接近但不等于,舍入误差这样的特点
因此最好不要使用浮点数进行比较
float f=0.1f;//0.1 double d=1.0/10;//0.1 System.out.println(f==d);//false float d1=22223333333333333f; float d2=d1+1; System.out.println(d1==d2);//true
字符拓展
所有的字符本质都是数字,强制转换,字符型转整数型时都会被换成数字,这里就涉及到编码
编码Unicode表中97=a,占两个字节,能表示0~65536的数
很多人都以为Excel是无限的,其实不然,最大也时65536(2的16次方)
在Java中也可以用16进制的写法
char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1);//强制转换 System.out.println(c2); System.out.println((int)c2);//强制转换 //所有的字符本质还是数字 //编码 Unicode表中97=a 2字节 0~65536 Excel 2的16次方=65536 //U0000~UFFFF char c3='\u0061';//里面的61是16进制 System.out.println(c3);
转义字符总结
\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 | 十六进制所代表的任意字符 | 十六进制 |
分析一些东西
前面写浮点数时,了解了看上去相等的东西其实是不等的,这里利用对象来展示一下
String sa=new String("hello world" ); String sb=new String("hello world"); System.out.println(sa==sb); String sc="hello world"; String sd="hello world"; System.out.println(sc==sd);
输出结果
flasetrue
为啥呢,这里涉及到java的一些设定上的东西,java有堆和栈的概念
第一个输出结果是因为两次创建对象分了不同的内存,在这个概念
上sa和sb不是一个东西
第二就是简单创建两个变量的结果,调用的是同一个内存下的东西
布尔值拓展
boolean flag=true; if (flag==true){ }//新手 if (flag){ }//老手 //Less is More! 代码要精简易读
代码要精简易读
以后等你成为大佬了,就不会再看到新手代码了,但现在,作为一个小白,必须认认真真的写,不能偷懒哦
赞 (0)