zoukankan      html  css  js  c++  java
  • java笔记之byte的面试题案例分析

    1. byte n=10+127;

    分析:a. 10和127属于字面量,经过javac优化后 byte n=127;

    b.n 的类型是byte,127的类型默认为int,造成数据类型不匹配,那么javac会判断127是否位于byte类型的取值范围之内;若为范围之内将127的类型转换byte,否则报错。

    原理:127在内存中以32位进行存储,那么赋值号右边的数据类型为整形,与赋值号左边的类型不匹配,需要类型转换。

    a.校验127是否位于byte的取值范围之内,如果位于,就将第32位的符号记录在第8位,其他位的截掉;若超过范围,就提示错误。

    2.byte i=10;

    byte j=117;

    byte m=i+j;//报错

    注:等值号右边不是常量,而是变量,无法确定其值是否位于bye的取值范围,所以报错。


    3.关于char类型的笔记

    java支持Unicode编码,两个字节存储文字,前255仍然存储ASCII所表示的文字信息。

    4.关于float与Double的笔记

    folate 4字节,1位符号位,8位指数位,23位用来记录数字。

    int与folate相比,int的精度高,float的范围大。(int 使用32位存储数字而float为23位,所以int精度高;folate使用8位指数,所以folate的范围大)

    因为folate精度尚且不如int类型,所以一般计算不采用float。

    注:Double内存的存储结构:1位的符号位,11位的指数位,52位的数字位。

    5.类型转换

    例: Integer.toBinaryString(int i);

    toHexString(int)

    toOctalString(int)


    注:在计算机中都是以补码的形式存储数字

    正数:原码与补码都一样。

    负数:补码在反码的基础上+1.



    6.byte的强转换的案例


    byte b=(byte)140;

    System.out.println(b);//b=-116


    注:

    补码:11111111  11111111  10001100

    反码:11111111  11111111  10001011

    原码:10000000 00000000  01110100

    原理与案例一类似。


    博客:https://kunnan.blog.csdn.net
  • 相关阅读:
    Raft论文的一些问题
    乱序日志同步成员变更方案
    OceanBase RPC机制简要说明
    OceanBase server处理网络包的回调逻辑
    比较下OceanBase的选举协议和Raft的选举协议的区别
    TokuDB调研文档
    给MySQL官方提交的bug report备忘
    记录一个__lll_lock_wait_private错误
    关于MySQL redo log,挖些坑,慢慢填
    A little problem for pt-pmp
  • 原文地址:https://www.cnblogs.com/zhang_kun_nan/p/3636504.html
Copyright © 2011-2022 走看看