Java基础复习

一、概述与前置知识

1.0 ASCII码表

在这里插入图片描述

1.1 编译型语言和解释型语言

计算机的高级语言分为编译型语言解释型语言
1.编译型语言:

  • 使用编译器一次性将源代码翻译成可执行代码,编译产生的可执行代码可在特定平台上随时运行而无需重新编译.
  • 比如C/C++,先编写源代码,再编译源代码,再连接编译产生的目标文件,最后形成可执行文件.
  • 源代码中,任何一处有错,就不允许编译.编译过程中,出现任何一处错误,就停止编译.
  • 它的优点是直接运行最终产物(而不是源代码),比如C语言的最终产物就是二进制机器码,所以速度很快,效率高.

2.解释型语言:

  • 使用解释器进行逐条解释并执行,每次运行都需要解释器逐条解释一遍
  • 比如JavaScript/Python,编写代码,一行一行一边解释一边执行,而不是一次性编译全部代码.
  • 它的唯一优点是源代码有错误照样可以解释执行,遇到错误再停下.
  • 它的缺点是不断对源代码进行解释和执行,所以解释型程序注定要比编译型程序慢上许多.而且每次运行程序,都要对源代码进行重新解释和执行,而不是直接运行最终产物.

3.Java是编译型(一次编译过程)+解释型(JVM跨平台执行过程)

  • Java语言结合了编译型语言和解释型语言,主要借助JVM(Java Virtual Machine,Java虚拟机)实现跨平台
  • Java源码文件(.java)经 javac编译器编译生成字节码文件(.class),字节码文件交给JVM处理,但是并没有连接这一步.(所以并不能有C语言理解的那种编译型).
  • 然后由JVM执行class字节码文件,这个执行过程又是解释型的.字节码文件首先被加载到计算机内存中,然后不断读出一条、翻译(解释)一条、执行一条.交给JVM是为了一次编译,到处运行,实现跨平台.
  • 一次编译的产物是.class字节码文件,而它并不是二进制的机器码,而且它本身是不需要去变成机器码的,而是直接由JVM拿到.class文件,把它解释成机器码.
  • 对于JVM来说,Windows有它的版本,Linux有它的版本,Mac也有它的版本,只需要把一次编译出来的字节码文件,交给不同平台的JVM,就可以在不同的操作系统上执行了.
  • 所以Java的一次编译,是指的是在编译这一步的一次编译成.class,不可能一次编译成二进制机器码来跨平台,因为每个操作系统的二进制格式都不一样. (Windows是PE,Linux是ELF).但是想在不同的平台上执行,肯定需要不同的连接器,这东西就由JVM负责.

1.2 JDK的组成

Hello.java从JDK找到javac进行编译,产生Hello.class;
再从JDK找到java把Hello.class送给JVM运行;
在JVM里运行的时候,可能还需要调用Java自己已经写好的程序,比如sout就是,这些程序都在核心类库里.
在这里插入图片描述

1.3 JDK11开始可以直接执行源代码

在这里插入图片描述

1.4 Java的跨平台原理

根本原因就是sun公司为不同的操作系统提供了对应的虚拟机
在这里插入图片描述

1.5 PTAH环境变量

PATH环境变量的原理:
在这里插入图片描述

PATH环境变量的作用:
记住程序的路径,方便在命令行窗口的任意目录执行程序.
也就是说,如果我想让下面的QQ.exe成功执行并打开QQ
要么切换到该exe文件的目录去执行,要么就在环境变量里把QQ.exe的路径加进去
这里执行java程序用到了java.exe和javac.exe两个指令,希望能在任意目录下执行,所以要配置好JDK的bin的环境变量.

在这里插入图片描述

配置JAVA_HOME的好处:
你如果想换一个JDK版本 只要在JAVA_HOME里改就行
其余所有用到JDK地方的路径都不需要改
在这里插入图片描述

1.6 怎么看.class的内容(反编译)

真正执行的也是.class文件 所以注释不会影响到程序执行
在这里插入图片描述

在这里插入图片描述

1.7 短除法求二进制

在这里插入图片描述
在这里插入图片描述

1.8 数据在计算机中存储的最小单位–字节Byte

在这里插入图片描述

1.9 字符/图片/声音如何存储在计算机中

  • a97 b98
  • A65 B66
  • 048 149
  • ‘a’—>97—>对应的二进制形式
    在这里插入图片描述

图片存的就是RGB的值
在这里插入图片描述


视频 = 图片 + 声音
在这里插入图片描述

二、Java基础语法

2.1 字面量

  • ''里有且仅有一个字符 空格也行 啥都不写就报错
  • ""里可以有任意长度的字符(也可以不写任何内容 也可以是一个字符)
  • 随便写的字面量是int或者double 除非加上L或者F
    在这里插入图片描述

在这里插入图片描述

2.2 变量

在这里插入图片描述
2.变量定义的时候可以不赋初始值 但是使用必须要 而且要先声明再使用
在这里插入图片描述

3.有访问范围
在这里插入图片描述

在这里插入图片描述

4.变量有几种?

  • 局部变量
  • 成员变量(又分为实例和静态)

2.3 数据类型

  • double其实是能存的数值最大的类型 底层比较特殊 能存的比long还大
  • 注意char是2字节 不是1字节
  • 字面量默认是int或者double 除非加了L或者F
    在这里插入图片描述

一个注意事项 字面量int 和 double 是默认值:
在这里插入图片描述
浮点型也是如此
在这里插入图片描述

2.4 关键字和标识符

在这里插入图片描述

在这里插入图片描述

2.5 类型转换

1.自动类型转换

在这里插入图片描述

在这里插入图片描述

2.表达式的自动类型转换

  • byte 和 int一起算 会先把byte自动转换成int 再和int运算 最终结果也是int
  • int 和 double 会把int自动转化成double 再运算 结果也是double
  • 注意:byte short char是直接转换成int类型参与运算的
  • 运算最终结果的类型由表达式中的最高类型决定
    在这里插入图片描述

从代码层面思考 为什么?
单独看a1 a2 都是byte 都没啥问题
但是一加起来 很容易就超过byte的范围了!!(比如120+120)
所以索性当int算 数据还能保真
在这里插入图片描述

3.强制类型转换

  • 小数强转成正数,直接小数丢弃,而不是四舍五入
    在这里插入图片描述

在这里插入图片描述

2.6 运算符

1.算数运算符

  • 3/2=1 运算结果的类型由表达式最高类型int决定 所以结果是1(1.5被强转成1了)
  • 3×1.0/2=1.5 在前面×1.0就行(尽量不要改变传参 别人给过来的就是3)
  • 3/2×1.0=1.0 3/(2×1.0)=1.5 注意运算顺序
    在这里插入图片描述

2.+作为连接符

在这里插入图片描述

在这里插入图片描述

3.++和–

  • ++ --只能才做变量,不能操作字面量
  • ++ --单独使用 在前在后没区别
  • 在表达式中 ++在前先加再用 ++在后先用再加

在这里插入图片描述

4.赋值运算符

  • 注意自带强制类型转换

  • int a = 10 先看“=”右边,把数据10赋值给左边的变量a
    在这里插入图片描述
    在这里插入图片描述

5.关系运算符

在这里插入图片描述

6.逻辑运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值