学习内容


进制

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. Blazor前后端框架Known-V1.2.11

    V1.2.11 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Git ...

  2. Docker使用教程及常用命令

    Docker是一个开源的应用容器引擎,允许开发者将应用以及依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows上.它非常适用于持续集成与持续交付(CI/CD). 1. 安装 ...

  3. 程序后台运行方法:使用守护进程 或 screen软件

    我们常需要SSH远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务会被杀掉,一切就半途而废了. 可以使用以下两个方法: 方法一:noh ...

  4. 带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne

    本文分享自华为云社区<[论文阅读] (03) 清华张超老师 - Fuzzing漏洞挖掘详细总结 GreyOne>,作者: eastmount. 一.传统的漏洞挖掘方法 演讲题目: 数据流敏 ...

  5. 分布式测试插件 pytest-xdist 使用详解

    使用背景: 大型测试套件:当你的测试套件非常庞大,包含了大量的测试用例时,pytest-xdist可以通过并行执行来加速整体的测试过程.它利用多个进程或计算机的计算资源,可以显著减少测试执行的时间. ...

  6. API数据接口获取商品详情数据该怎么操作

    随着电商行业的快速发展,获取商品详情数据是电商应用的重要功能之一.为了提高用户的购物体验,开发者可以利用API接口获取商品详情数据,方便用户了解商品的具体信息和特点.在本文中,我们将介绍如何使用API ...

  7. 本地项目上传到Git仓库

    1. 进入项目主目录,打开Git Bash,执行以下命令,将项目变为一个git管理的项目: $ git init 执行成功后,会在项目根目录生成一个.git的文件夹. 可以执行以下命令查看项目状态: ...

  8. MD5&MD5盐值加密到BCryptPasswordEncoder

    MD5&MD5盐值加密 Message Digest algorithm5,信息摘要算法: 压缩性:任意长度的数据,算出的MD5值长度都是固定的 容易计算:从原数据计算出MD5值很容易 抗修改 ...

  9. 深入理解HTTP的基础知识:请求-响应过程解析

    首先,我们从网络协议的最顶层开始讲解,即应用层.在网络通信中,应用层是最接近用户的一层,它负责为特定的网络应用提供服务和功能.应用层协议定义了数据交换的规则和格式,以便不同的应用程序能够相互通信和交换 ...

  10. 「repost - from Quack」Matroid.md

    拟阵?type=header 拟阵的定义与常见性质 & 拟阵交算法 拟阵的定义与常见性质 独立集系统和拟阵 定义独立集系统\(S=(E,\mathcal{I})\),\(E\)是基本元素的集合 ...