编程基础

数据类型

  1. 整数类型(byte/short/int默认/long)

  2. 小数类型(float/double默认)

  3. 字符类型(char)

  4. 真假类型(boolean)

  5. 对象

  6. 枚举(了解)

数组

1
2
3
4
int[] arr0 = {123};
int[] arr1 = new arr[]{1, 2, 3}; //不能在设定初值的时候给长度,如果设定了初值再给一个不一样的长度计算机将无所适从
int[] arr2 = new arr[3];
arr2[0] = 1; arr[1] = 2; arr[2] = 3;

逻辑运算

  1. 与&

  2. 或|

  3. 非!

  4. 异或^

  5. 短路与&&

  6. 短路或||

条件和循环

条件

1
2
3
4
5
6
7
if( 条件语句 ) {
代码块
} else if( 条件语句2 ) {
代码块2
} else {
代码块3
}

枚举(了解)类型也可以使用swich语法

1
2
3
4
5
6
7
8
9
10
switch( 表达式 ) {
case1 :
代码 1;
break;
case2 :
代码 2
break;
...
default: 代码 n+1
}

循环

1
2
3
while ( 条件语句 ){
代码块;
}
1
2
3
4
do {
代码块;
} while( 条件语句 )

1
2
3
for(int i = 0; i < arr.length; i++){
代码块;
}
1
2
3
for(int i : arr) {
代码块;
}

函数

可变长度参数

1
2
3
4
public static int max(int min, int ... a) {
//a是可变参数,传入之后是数组形式
}

函数重载,重复命名的函数,传入的参数类型或者个数有不同实现不同的功能。

函数的调用原理

栈的概念

计算机使用栈来存放函数调用过程中需要用到的数据,包括参数、返回地址、函数内的局部变量等。main函数的相关数据放在栈的最下面,后调用的函数在上,栈遵循先入后出,需把栈上方的函数调用后出栈后再调用栈下方的函数。

堆的概念

数组和对象的实际的内容一般是分配在堆上,但存放地址的空间是分配在栈上的。当java堆中的对象从新生代到老年代,当某对象失去引用对象时,就会被java的垃圾回收gc清理。垃圾收集器

递归栈溢出

函数代码虽然只有一份,但是在执行过程中,每调用一次,就会有一次入栈,生成一份不同的参数、局部变量和返回地址,直到栈溢出。

字符编码

char的真正含义

char本质上是一个固定占用两个字节的无符号正整数,对应于Unicode编码,用于表示那个Unicode编码对应的字符。

程序编译和链接

从java源代码到运行程序有编译和链接两个过程。

编译是将源代码文件变成.class的一种字节码文件,这个工作一般由javac命令完成。

链接是在运行是动态执行的,.class文件不能直接运行,运行的是java虚拟机,虚拟机解析.class文件,转换为机器能识别的二进制代码,然后运行。链接就是根据引用到的类加载相应的字节码并执行。