【Java SE】变量、数据类型以及计算机二进制

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【Java SE】变量、数据类型以及计算机二进制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、前言

自己之前也写了Java SE的笔记,没有搬过来,虽然比较基础,但是也顺带写一下吧

二、基本要点

1、编译型语言和解释型语言

  • 编译型:代码在执行之前需要被编译成系统可识别的文件,编译过程只需要进行一次,一次编译可重复执行,执行效率高,一般不可跨平台,代表语言:C和C++
  • 解释型:编写的程序不进行预先编译,以文本方式存储程序代码。执行时才翻译执行。程序每执行一次就要翻译一遍,可跨平台,代表语言:Python和JavaScript

2、Hello World

所有学编程语言都会认识的两个单词
我们写一个名为Main的Java类,然后我们用命令行去编译执行一下
在这里插入图片描述
javac 里面的c就是compile(编译)
它会将.java文件编译成一个.class文件,这个是我们JVM(Java虚拟机)可以理解的文件
然后我们使用java xxx(class文件的名称)就可以执行class文件了
在这里插入图片描述

3、变量

  • 定义:变量就是一个可以变化的量
  • 格式:变量类型 变量名 = 初始值(可选)
  • 根据作用域分为类变量(static关键字)、实例变量、局部变量
  • 常量是特殊的变量,无法修改值(final关键字修饰)

4、数据类型

1)Java的数据类型分为引用类型和基本数据类型
2)基本数据类型:包括整数类型、小数类型、字符类型和布尔类型,范围从低到高为byte int short long float double char boolean(float类型变量后面加F或f,long类型变量后加L或l)

  • 他们之间的比较,应用双等号(==),比较的是他们的值
  • 整数类型:byte(8个bit,也就是1字节) short(16个bit,也就是2字节) int(32个bit,也就是4字节) long(64个bit,也就是8字节),如果还不满足,可以使用BigInteger类
  • 小数类型:float和double,最好避免使用浮点数进行比较,使用数学工具类BigDecimal
  • 字符类型:char(String字符串不是基本数据类型,它是一个类)
  • 布尔类型:boolean

3)引用类型:类、接口、数组

  • 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false
  • JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了
  • 对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号进行比较的,所以比较后的结果跟双等号==的结果相同

5、计算机二进制

计算机中所有的内容都是用二进制形式表示的,一个bit称为一个位,8个bit是一个字节

  • 机器数:在计算机中表示的带符号的二进制数,整数机器数的三种形式为原码、反码和补码
  • 真值:原码对应的十进制的值
  • 原码:计算机中用最高位表示正负值,1为负,0为正,原码就是符号位加上真值的绝对值
  • 反码:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余位取反
  • 补码:正数的补码是其本身,负数的补码是在其原码的基础上,符号位不变,其余为取反,最后加1(即在反码的基础上加1)

Q:为什么要有反码和补码呢?
A:因为计算机中只有加法器没有减法器,减法都是通过加法实现的

假设我们现在用4个bit表示1和-1

  • 原码形式
    +1:0001
    -1:1001
    那么1 + (-1)就等于
    1010 转化成十进制就是-2

  • 反码形式
    +1:0001
    -1:1110
    那么1+(-1)就等于
    1111,因为是这里的结果是反码,转化成原码就是1000,转化成十进制就是-0
    但是为了去掉符号,我们引入补码

  • 补码形式
    +1:0001
    -1:1111
    那么1+(-1)就等于
    1 0000,这里超过了4位,所以1舍弃了,补码就是0000(符号位0表示正数,正数的补码和原码相等),故转成原码也是0000,转成十进制就是0

如有错误,欢迎指正!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136756.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!