前面都写了9篇啦,虽然断断续续发了半个月,写着写着会发现每篇中都有些比较重要的地方没有讲到~这篇还是需要填一填目前我已发现的坑了~
一、 小结
- Java编译命令 javac、运行命令java
- java默认字符编码为Unicode
- Java程序从main方法开始
- 每一个语句都需要以英文分号结束。
- 程序会被{}划分出范围。
- 类型与方法都需要定义在{}中
- 对于空格通常不影响代码运行
- Java 中的标识符就是类名、变量名、方法名、包名。
- 关键字、保留字全部都是小写,比如null。
- 变量名可以由字母、数字、下划线、美元符组成,但标识符不能以数字开头,也不能是关键字,区分大小写。
- 变量类型分为基本数据类型和引用数据类型
- byte的取值范围是-128~127
- 常量定义之后,不会改变
- 注释有//、/**/、/** ... */
- 运算符涉及到优先级,建议加好()
- =号是赋值,==号是相等
- 选择结构的条件必须为布尔表达式,返回值必须为true或者false
- break会使程序跳出循环,continue只会跳过该次循环。
- System.out.print()是输出语句,System.out.println()是自带换行
二、Java的编译运行
写好源代码之后,我的学习记录里只有写到怎么用,却没有去详细解释流程,如此就造成了一些知其然而不知其所以然的问题,so,这里补充上:
首先,需要给几个定义:
Java虚拟机(JVM):是可以运行Java代码的虚拟计算机。只要电脑上安装有Java环境,就拥有JVM虚拟机。
字节码(Byte-code):是一种包含执行程序,由一序列 op 代码 / 数据对组成的二进制文件,是一种中间码。(百科)
机器码:指的是将硬件序列号经过一系列加密、散列形成的一串序列号。(百科)
1. 编译
写好代码后,保存的为 .java 文件,用 javac.exe(编译器)编译之后,编译器会先检查错误:
如果有错,则编译无法完成,需要修改,直至修改到没错了,才能通过。
如果没错,通过编译,产出一个字节码文件(.class)。
so,编译器:将Java源文件(.java)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件)
字节码文件与平台是无关的,这也是JVM的平台无关性的来源。
2. 解释
编译完成后,JVM操作解释器将产生的字节码文件来解释。
解释器解释字节码的过程,就是将字节码文件解释成本机能够识别的机器码。
机器码与平台是有关的,不同平台的机器码不同。
解释由分成以下步骤:
首先,通过类加载器(class loader)将所有代码装入解释器。
然后,被装入的代码由字节码校验器进行检查,若无错误,则进入下一步。
3. 执行
Java字节码开始执行,这个也有两种方式:
a. 即时编译方式:先将字节码编译成机器码,再执行该机器码。
b. 解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。
通常情况下回采用解释执行方式,这样会使字节码翻译成机器码有更高的效率。当然,对于对运行速度要求较高的应用程序,还是选择即时编译比较好,可以很好的保证Java代码的可移植性以及高性能。
三、变量的声明与初始化
在程序运行的过程中,内存有一部分的空间是变化的,这个空间就叫变量。那么声明变量就是申请了一个内存空间。内存空间在开辟之时,如果没有赋值的话,内存空间会根据变量的类型来设置默认值。
如果有赋值的话,就会将值存入内存空间,否则就是默认值。变量的用处:存放数据。
int i; // 声明变量。申请了一个内存空间,当前为int的默认值0 i = 1; // 初始化变量。将i赋值为1
四、引用类型
对于引用类型来说,其默认值是null,没有任何指向的内存空间。
那么数组也是引用类型,在声明的时候如果没有直接给元素的话,那么其默认值为null。
五、逻辑运算符
关于逻辑运算符&&、||两者,有一点要十分注意:
这两个存在一个短路问题,意思就是前面第一个条件已经能够使表达式得出结果了,后面的条件就不用判断了。
比如:1>2&&2>1,那么这个因为1>2已经为假了,&&要求两个都为真才能返回True,所以后面的条件就不用计算,直接出返回结果。2>1 || 1>2,也是一样。
---------------------------------
暂时先补充到这儿~以后发现没写到的再进行补充说明。
以上,阿里嘎多,20190420 from ahanwhite。