Java数据类型扩展及面试题讲解

这是关于数据类型的面试题,还是比较重要的。

1、整数拓展:

  我们肯定都或多或少知道一个问题,叫进制问题。咱们常见的电脑里的二进制,然后咱们平时生活中用的是十进制,然后咱们工作的时候还有一个十六进制跟八进制,那这些东西在Java里面怎么表示呢?

  二进制会以,0b开头,这个咱们等会来说,然后十进制就是正常生活中用的数字,八进制的数是以0开头的,十六进制0x开头。

  八进制的10就是8,十六进制的10就是16。逢8进1就是8进制,逢16进1就是16进制。我们在Java当中以前缀来表示,十六进制再给大家说后面还有一个0~9,A~F这里的F就相当于我们刚才写的16,如果在这里写一个“int i3 = 0x11”它就会输出一个“17”,然后18、19这样上去,好这就是关于整数类型的东西。

 1 public class Demo03_Important {
 2     public static void main(String[] args) {
 3         // 整数拓展:    进制    二进制:0b开头    十进:日常用的数字    八进制:0开头    十六进制:0x开头
 4 
 5         int i = 10;
 6         int i2 = 010;     // 八进制:0开头
 7         int i3 = 0x10;    // 十六进制:0x开头
 8                           // 十六进制0~9 A表示十六进制的10 递推下去F就是15
 9         System.out.println(i);
10         System.out.println(i2);
11         System.out.println(i3);
12     }
13 }

2、浮点数的拓展

  浮点数就是小数的意思,问大家一个面试题,银行业务怎么表示?用float和double他们两个是有问题的,真正在金融公司里面是不能用这两个浮点数来计算的。浮点书表示的字长是有限的,但是有些东西除出来是无限的,既然是有限的,也是离散的,浮点数一般都存在一个舍入误差的东西,他会四舍五入,由于很多数字没办法精确的表示,它结果只能是一个大约数只是接近但不等于的意思,最后给大家得出一个结论,最好完全避免使用浮点数进行比较。

  回到最开始的问题,银行问题怎么表示呢?我们不哟用浮点数表示,咱们之后除了基本类型之外,还会用类,我们会学一个类,先把这个类记住,它的名字叫做“BigDecimal”就是大数类型,它是一个数学工具类,这个类请关注后续博客。

  通过这道面试题呢,就给大家总结这一个结论,少去用浮点数进行比较,如果你需要进行计算,而且不能有误差,就用“BigDecimal”类,就可以了。

 1 public class Demo03_Important {
 2     public static void main(String[] args) {
 3         // 浮点数拓展    银行业务怎么表示?钱!
 4         // BigDecimal   数学工具类
 5         // float    输入是有限的  离散 舍入误差  大约  接近但不等于
 6         // double
 7         // 最好完全避免使用浮点数进行比较
 8         // 最好完全避免使用浮点数进行比较
 9         // 最好完全避免使用浮点数进行比较
10         float f = 0.1f;     //等于0.1
11         double d = 1.0 / 10;     //等于0.1
12         System.out.println(f==d);       //float
13 
14         float d1 = 2313131313131313131313313f;
15         float d2 = d1 + 1;
16         System.out.println(d1==d2);     //true
17     }
18 }

3、字符拓展

  3.1、强制转换,可以把字符变成数字。

  所有的字符本质还是数字。“char”类型会涉及到一个编码问题,编码里面会有一个编码叫“Unicode编码”。它可以从0写到65536,Unicode编码里面有一个表,这个表里面有一个数字比如说是阿拉伯数字 97 = a,A = 65,它会去查这样的一张表,这个表里面会有非常多的东西,包括咱们的中文,这就是“20013”它会打出来一个中国的“中”,它里面肯定有这样一个表存着,它的本质还是数字。它可以处理各种语言的文字,它占了2个字节,最多可以表示“65536”六个字符,当然他现在不仅仅是“65536”了,它可以输出更多的字符。大家都用过Excel,Excel表格最长只有2的16次方,2的16次方就等于65536,最早的Excel就只有这么长。

  一些Unicode编码通过转译来表示,它是这样表示的,它会从U0000会表示到UFFFF,这是它的一个区间范围。所以说咱们经常看到一些东西,这个就是正常Unicode编码的表示方式“char c3 = '\u0061';”。

 1 public class Demo03_Important {
 2     public static void main(String[] args) {
 3     // 字符拓展
 4         char c1 = 'a';
 5         char c2 = '中';
 6         System.out.println(c1);
 7         System.out.println((int) c1);   //强制类型转换
 8         System.out.println(c2);
 9         System.out.println((int) c2);   //强制类型转换
10 
11         // 所有的字符本质还是数字
12         // 编码   Unicode  表:97 = a   65 = A
13         // 占2个字节    占0~6553六个字符     Excel:2 16 = 6553,Excel也是这么长
14         // U0000 UFFFF
15         char c3 = '\u0061';
16         System.out.println(c3);

  3.2、转义字符:

  转义字符有一些特殊的意思,大家还可以上网查一下,这些转义字符非常的多,我只是列出了一小部分。

    \r表示回车符,将光标定位到当前行的开头,不会跳到下一行。

  \n表示换行符,换到下一行的开头。

  \t表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。

  \b表示退格符号,就像键盘上的Backspace键。

 1 // 转义字符
 2         // \t     制表符(类似于Tab建的功能)
 3         // \n     换行
 4         // 还有很多......自己查找
 5         System.out.println("Hello\tWorld");
 6         System.out.println("Hello\nWorld");
 7         System.out.println("==================================================================");
 8 
 9         // 对象 从内存分析
10         String sa = new String("hello world");
11         String sb = new String("hello world");
12         System.out.println(sa==sb);
13 
14         String sc = "hello world";
15         String sd = "hello world";
16         System.out.println(sc==sd);
17     }
18 }

4、布尔值扩展

  比如flage=true或者flage=false,我们日常生活中如果这条路对就就走,如果是错的就不走。 

 1 public class Demo03_Important {
 2     public static void main(String[] args) {
 3     // 布尔值扩展
 4         boolean flag = true;
 5 
 6         if (flag==true){}     // 6、7代码意思是一样的
 7         if (flag){}           // 老手风格
 8         // Less is More!    代码要精简易读
 9     }
10 }

 

参考内容:请点击百度

posted @ 2022-04-26 20:45  H_one  阅读(85)  评论(0编辑  收藏  举报