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