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 }
参考内容:请点击百度
Java数据类型扩展及面试题讲解的更多相关文章
- 6.JavaSE之数据类型扩展及面试题讲解
整数:二进制0b 十进制 八进制0 十六进制0x 浮点数:银行业务,关于钱的,Java有个BigDecimal数学工具类,用这个计算.最好完全避免使用浮点数进行比较.因为float 是有限的离散的,它 ...
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- Java 类加载机制(阿里面试题)-何时初始化类
(1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进 ...
- 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇
文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...
- Java基础学习总结(68)——有关Java线程方面的面试题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎.大多数待遇丰厚的 Java 开发职位都要求开发者 ...
- 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
- Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide
你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 上篇:Java 基础常见知识点&面试题总结(上),2022 最新 ...
- Java 集合常见知识点&面试题总结(上),2022 最新版!
你好,我是 Guide.秋招即将到来(提前批已经开始),我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 你也可以在网站(javaguide.cn)上在线阅读, ...
随机推荐
- Acwing787.归并排序
Acwing787.归并排序 归并模板 归并排序,合二为一 题目链接:Acwing787.归并排序 #include<iostream> using namespace std; cons ...
- 【图解源码】Zookeeper3.7源码分析,包含服务启动流程源码、网络通信源码、RequestProcessor处理请求源码
Zookeeper3.7源码剖析 能力目标 能基于Maven导入最新版Zookeeper源码 能说出Zookeeper单机启动流程 理解Zookeeper默认通信中4个线程的作用 掌握Zookeepe ...
- 封装一个基础的vue-router
前言主要知识点: 路由原理 Hash与History 实现路由 一.一个vue路由的工作原理前端路由与后端路由的区别: 后端路由:输入url>请求发送到服务器>服务器解析请求的路径> ...
- 从一道算法题实现一个文本diff小工具
众所周知,很多社区都是有内容审核机制的,除了第一次发布,后续的修改也需要审核,最粗暴的方式当然是从头再看一遍,但是编辑肯定想弄死你,显然这样效率比较低,比如就改了一个错别字,再看几遍可能也看不出来,所 ...
- Elasticsearch面试题
Elasticsearch面试题 1.Elasticsearch是如何实现master选举的? 1.对所有可以成为master的节点根据nodeId排序,每次选举每个节点都把自己所知道节点排一次序,然 ...
- NC24017 [USACO 2016 Jan S]Angry Cows
NC24017 [USACO 2016 Jan S]Angry Cows 题目 题目描述 Bessie the cow has designed what she thinks will be the ...
- myeclipse添加subclipse插件支持subversion1.9
为了安装subclipse插件,费了很多周折,本来我以为直接用eclipse marketplace搜索安装就行,可是由于网络原因,安装不了. 然后下载安装包吧.目前从国内网站上下载不了支持subve ...
- 使用Win自带的远程工具连接Linux
网上教程一大堆,我这边只简单记录一下,主要是黑屏问题,和剪贴板问题.Win连接Linux,一般都是使用的xrdp, 如果是使用的旧版本的Ubuntu,建议先装一下xfce桌面,gnome桌面一般连不起 ...
- Note -「狄利克雷前缀和」
学到一个诡异东西,当个 Trick 处理用吧. 现在有一个形如 \(\sum \limits _{i = 1} ^{n} \sum \limits _{d | i} f(d)\) 的柿子,不难发现可以 ...
- dfs-1756:八皇后及1700:八皇后问题
总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被 ...