学习内容


进制

1、(十进制):752=2*10(0)+5*10(1)0+7*10(2)=752

  (二进制):1011(二进制的数)=1*2(0)+1*2(1)+0*2(2)+1*2(3)

                  = 1    +2            +0     +8

                  =11

(二进制转换十进制简便)

0     1    0   1  0  1  1

64  32  16  8  4  2  1

(只有1的位置对应的相加即可)

(八进制)

111(二进制)=7,所以三位为一个八进制数

同理(十六进制)0x

1111(二进制)=15,所以四位为一个十六进制数---------超过9,用ABC....表示

结论:

八进制数,其实就是二进制位 3个二进制位一个八进制位

十六进制:其实就是二进制中的四个二进制位一个十六进制位

负数的二进制的最高位是1

负数二进制:取反,加一

变量

内存中的一个存储区域

该区域有自己的名称(变量名)和类型(数据类型)

该区域的数据可以在同一类型范围内不断变化

用来不断的存放同一类型的常量,并可以重复使用

格式:数据类型   变量名=初始化值

class VarDemo

{

  public static void main(String[] args)

  {

    //数据类型  变量名  =  初始化值;

    byte      b   =  3;

  System.out.println(b);

  }

}

---

class VarDemo

{

  public static void main(String[] args)

  {

    //数据类型  变量名  =  初始化值;

    {

      int z = 9;

    System.out.printn(z);//这段代码可以运行/*括号内的代码只在括号内运行*/

    }

  System.out.println(b);//这段代码不可以运行

  }

}

 自动类型提升(以占用类型较大的类型为主)

class VarDemo(可以运行)

{

  public static void main(String[] args)

  {

   int x=3;

   byte b=5;

   x=x+b;

  System.out.println(x);

}

}

class VarDemo(不可以运行)

{

  public static void main(String[] args)

  {

   byte b=5;

     b=b+4;

  System.out.println(b);

}

}

强制类型转换

class VarDemo(可以运行)

{

  public static void main(String[] args)

  {

   byte b=5;

     b=(byte)(b+4);

  System.out.println(b);

}

--------(华丽的分割线)--------

}

class VarDemo(可以运行,但是结果错误)【与二进制负数首位是1有关】

{

  public static void main(String[] args)

  {

   byte b=5;

     b=(byte)(b+400);

  System.out.println(b);

}

}

字符类型运算

class VarDemo

{

  public static void main(String[] args)

  {

  System.out.println('a'+1);

}

}

class VarDemo【ASCII表一一对应】

{

  public static void main(String[] args)

  {

  System.out.println((char)('a'+1));

}

}

 类型运算细节

class VarDemo

{

public static void main(String[] args)

{

byte b=4;
byte b1=7;
byte b2=3;
b=b1+b2;
System.out.println(b);

}

}

报错原因【byte类型取值有限(-128~127),进行默认强转】

b1和b2是变量,数值会变化,数值不确定,无法检查。

右边不确定是变量,是无法确定值的,可能不在范围之内

4:(强转前)|0000-0000 0000-0000 0000-0000 0000-0100|

(强转后)|0000-0100|

class VarDemo

{

public static void main(String[] args)

{

int x;
int x1=Integer.MAX_VALUE;
int x2=2;
x=x1+x2;
System.out.println(x1);

}

}

class VarDemo

{

public static void main(String[] args)

{

int x;
int x1=Integer.MAX_VALUE;
int x2=2;
x=x1+x2;
System.out.println(x);

}

}

原因:x1已经是最大值了,加法运算往前进位,只保留32位,33位舍弃,最高位变成了1,变为负数。

随机推荐

  1. [Python]树基础

    关于树 树是一种数据结构,由n个有限节点组成的一个具有层次关系的集合.二叉树则是每个节点最多有两个子树的树结构.二叉树一般有以下性质: 二叉树第k层上的节点数目最多为 \(2^{k-1}\) 深度为 ...

  2. 遥遥领先 spring,中国人的 solon 来啦!10% 的体积,10倍的速度

    Solon 是什么? Java 生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢,费内存.2023 ...

  3. Android 项目移植后运行黑屏

    在做Android项目的移植过程中,即把名为a的代码和样式全部复制到b项目后,只是对a项目内多余代码删除和修改包名,最后替换完后,点击=>运行,运行成功,但是演示机显示黑屏,看log也没有报错. ...

  4. 用 GPT-4 给开源项目 GoPool 重构测试代码 - 每天5分钟玩转 GPT 编程系列(8)

    目录 1. 好险,差点被喷 2. 重构测试代码 2.1 引入 Ginkgo 测试框架 2.2 尝试改造旧的测试用例 2.3 重构功能测试代码 3. 总结 1. 好险,差点被喷 早几天发了一篇文章:&l ...

  5. ubuntu/linux 好用的截图工具 搜狗输入法自带的截图快捷键,自己觉得不方便的话,修改为自己习惯的快捷键即可

    公司要求使用ubuntu开发,在安装完必要得开发工具之后,按照我在windows平台的习惯,就准备安装一个好用的截图工具了,我比较推荐的是snipaste([https://zh.snipaste.c ...

  6. 用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力

    本教程收集于:AIGC从入门到精通教程汇总 操作指引 ChatGPT产生文案=>腾讯智影数字人播报=>粘贴文案=>导出视频. 说明:部分资源只有会员才能用~,非会员可生成5分钟视频. ...

  7. 数据可视化【原创】vue+arcgis+threejs 实现流光边界线效果

    本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 效果图: 素材: 主要思路: 先用arcgis externalRenderers封装了一个ExternalRender ...

  8. Java 设计模式实战系列—单例模式

    本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式. 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单 ...

  9. No manual entry for ls终极解决办法

    No manual entry for ls解决办法,最后一种方法一定能解决你的问题 步骤一:确认man是否已经安装 #which man /usr/bin/man---返回此行,证明已经安装 步骤二 ...

  10. Jmeter获取Websocket多帧消息的实现方法

         由于需要对WebSocket进行压力测试,因此又回归到了JMeter的使用.网络上缺少具体的获取多帧消息的操作,且自己也踩了两个坑,总结一下可行的操作供大家参考.   一.情况说明     ...