数据类型拓展及面试题讲解

整数拓展:

我们二级制和八进制和十六进制在我们的java中如何表示呢,二进制是0b开头,八进制是0开头,十六进制是0x开头,我们可以用代码来实现看一下是不是这样。

public class expand {
    public static void main(String[] args) {
        //整数拓展   进制   二级制0b    八进制0    十进制   十六进制0x

        int i=10;
        int i2= 010; //八进制0
        int i3=0x10;  //十六进制0x  0-9 A~F  16
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);

我们可以看到输出结果是没有问题的,十进制是逢十进一,八进制是逢八进一,十六进制是逢十六进一。

十六进制是0-9 A-F 我们的F代表的就是16,假设我们我们给i3赋的值为0x11那么输出的值是17。

浮点数拓展:

我们的银行业务怎么表示钱呢 我们第一个想到的是不是单精度浮点数float和双精度浮点数double呢,但实际我们是不能用这两个的这两个是有问题的,我们可以用代码看一下

//=================================================
//浮点型拓展?  银行业务怎么表示? 钱
//float
//double 
float f=0.1f; //0.1
double f1=1.0/10;//0.1
System.out.println(f==f1);
System.out.println(f);
System.out.println(f1);

 这里可以看到给f和f1赋的值都是0.1,我们输出f==f1代表f等于f1,相等话就会输出true如果不是相等的则会输出false,我们再输出一个f和f1的值是多少。

我们可以看到两个变量的值都是0.1但是判断输出的是false不相等的意思

我们再来看一个代码

float d1=5145454521212f;
float d2=d1+1;
System.out.println(d1==d2);

这个很明显两个是不相等的d1是随便输的数,d2等于d1+1,很明显两个数是不一样的但是真是这样吗我们运行看一下。

我们可以看到程序运行的结果是true为真代表两数是相等的,一个数加了1后居然还等于它本身,通过这两个代码我们就可以发现这个浮点数是有点问题的 ,我们的浮点数能表现的字长是有限的也是离散的,浮点数一般都存在一个四舍五入所以我们最好避免使用浮点数进行比较这句话要记住。我们可以用一个数学工具类来进行银行业务的操作名字叫BigDecimal。

字符拓展:

首先我们先定义一个字符型的变量给这个变量赋值为a用单引号表示,也可以使用中文,我们再定义一个变量代表中我们输出看下

代码如下

char c1='a';
char c2='中';
System.out.println(c1);
System.out.println(c2);

没有任何问题

我们也可以把字符转化为数字,我们来试一下

char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);

前面加一个int就代表我们把这个字符类型转换成了int类型,这个就叫做强制转换我们来输出看一下。

我们可以看到字符a被强制转换成了数字97,中被强制转换成了数字20013,所有的字符本质还是数字,我们的char类型会涉及到一个Unicode编码 它可以处理各种语言的文字占2字节,最多可以表示65536个字符但是现在不止这么多,97就代表小写的a,65代码大写的A。

Unicode编码我们可以通过转义这样来表示

// 从U0000到UFFFF来表示
char c3='\u0061';
System.out.println(c3);

\u代表给它转义 \u0061就是我们的Unicode编码正常的表示方式,这个编码输出的结果是a就代表这个\u0061代表的是a

转义字符:

\t  代表制表符我们用代码来看一下

我们可以看到Hello和World中间隔了一个Tab

\n:这个就代表我们的换行,我们用代码看下

我们可以看到Hello和World分开换行了


布尔值拓展:

我们先定义一个布尔值类型flag让它等于true,我们通过它来做一些判断,我们可以用if来判断条件为如果flag==true那么我们就执行if里面的代码否则就不执行

boolean flag=true;
if(flag==true){

} 

但是我们有时候会看到这种代码if(flag)

if(flag){

}

这个的意思和上面的是一样的 因为它判断默认是等于true的这就是新手程序员和老手的区别,我们写的代码要代码要要精简易读,新手我们用第一个就可以了等到完成掌握熟练后再使用第二个

接下来是我学习的视频地址:

https://www.bilibili.com/video/BV12J41137hu?t=0.0&p=25

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值