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

一、前言

自己之前也写了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

如有错误,欢迎指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值