学习内容


进制

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. 终于搞懂了python2和python3的encode(编码)与decode(解码)

    终于搞懂了python2的编码 在python2下碰到非常多次的中文乱码,这次来梳理一下编码问题. 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode. un ...

  2. Web安全漏洞解决方案

    1.已解密的登录请求 推理: AppScan 识别了不是通过 SSL 发送的登录请求. 测试请求和响应: 1.1.1 产生的原因 登录接口,前端传入的密码参数没有经过md5的加密就直接传给了后端 1. ...

  3. linux tcpdump 使用小结(二)

    转载请注明出处: TCPDump是一个功能强大的网络抓包工具,它能够在命令行界面捕获.分析和解析网络数据包.下面是TCPDump命令的使用总结,包括使用语法.常用参数说明等: 使用语法:tcpdump ...

  4. 精选版:用Java扩展Nginx(nginx-clojure 入门)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 今天咱们以Java程序员的视角,来聊聊如何用 ...

  5. 从软件工程师角度聊聊 Kubernetes

    作为软件工程师,我们应该熟悉 K8s,尽管它有点像 DevOps,但它能让我们更好地了解幕后发生的事情,让我们与部署工作更密切相关,更有责任感.本文将从软件工程师的角度探讨 Kubernetes (K ...

  6. 搭建 QT6+OpenCv4.7+CMake的环境

    本文主要介绍如何搭建QT6+OpenCv的开发环境,基本流程如下 先安装CMake3.27.3,用来编译适用用QT的OpenCv的源码,安装完成后要配置系统的环境变量 安装Qt6的开发环境,并配置环境 ...

  7. webgl centroid质心插值的一点理解

    质心插值说的是什么 2023.10.04再次review这个细节点: https://www.opengl.org/pipeline/article/vol003_6/ https://github. ...

  8. Java流程控制10道题_上机

    Java流程控制10道题 计算出1-100之间所有不能被3整除的整数的和大于(或等于)2000的数字. package day01; public class Lab01 { public stati ...

  9. Aoba's GitLab Doki Theme - 一个简单的 GitLab 主题工具

    前言 平常工作在用 GitLab 但总觉得缺点什么颜色好单调,于是随手摸了一个主题工具 界面预览 GitLab 主页效果 个人偏好配置页面 安装方法 安装 Tampermonkey 之类的用户脚本工具 ...

  10. 【v2v迁移】Xen2kvm 迁移-linux篇

    迁移环境: 源平台:华为FusionComputeV100R006C10SPC101 目标平台:基于KVM虚拟化的云平台,本文以原生的libvirt为例 虚拟机:centos 7.6 具体操作步骤: ...