Java编程原理——编程基础
1. Java基本数据类型
1.1 整数类型:包括byte, short, int和long;分别占用1, 2, 4和8个字节。取值范围如下:
类型名 | 取值范围 |
---|---|
byte | -2^7 ~ 2^(7-1) |
short | -2^15 ~ 2^(15-1) |
int | -2^31 ~ 2^(31-1) |
long | -2^63 ~ 2^(63-1) |
1.2 小数类型:有float和double,分别占用4和8个字节
类型名 | 取值范围 |
---|---|
float | 1.4E-45 ~ 3.4E+38 -3.4E+38~-1.4E-45 |
double | 4.9E-324 ~ 1.7E+308 -1.7E+308~-4.9E-324 |
2. Java特殊数据类型
2.1 数组类型
数组类型在内存中有两块:一块是用于存储数组本身,另一块是用于存储数组内容的位置。 因此给数组变量赋值和给数组中的元素赋值是完全不同的两个概念。
3. Java运算符
3.1 “+”, “-“, “*”, “/“, “%”
运算符的使用需要注意:
- 整数相除不是四舍五入,而是直接舍去小数位;
- a++表示先使用原值a后再进行自增;a—同理;
- ++a表示先对原始值a进行自增再进行使用;—a同理;
- a += b相当于 a = a + b; a -= b同理,同样对乘除取模运算一样;
4. Java逻辑运算
- 与运算符(&):两个都为true才是true,有一个为false就是false;
- 或运算符(|):只要有一个为true就是true,只有都为false才是false;
- 非运算符(!):true的非运算就是false,反之同理;
- 异或运算符(^):相同为false,不相同就是true;
- 短路与(&&):作用跟&类似,boolean flag = a || b++ > 0, 当a为true忽略后面的运算;
- 短路或(||):作用于|类似,boolean flag = a && b++ > 0,当a为true时,忽略后面的运算;
5. Java条件语法
- 选择结构:if/else相当于三元运算符—> operator ? a : b;
- 多重if/else if/else if/else相当于switch—> switch-case语法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21if (cond1) {
// op1
} else if (cond2) {
// op2
} else if (cond3) {
// op3
} else {
// op4
}
switch(cond) {
case cond1:
// op1
break;
case cond2:
// op2
break;
case cond3:
// op3
break;
}
系统层面下:if/eise使用的操作系统中的跳转指令实现的,而switch使用的是跳转表(跳转表使用二分查找实现,效率较高) 实现的。在switch分支少的情况下会使用跳转指令实现。
6. Java循环语法
1. while循环
1 |
|
只要循环条件为true,就一直执行循环体内,否则就中止执行;
2. do-while循环
1 |
|
不管循环条件是什么,循环体至少会执行一次;
3. for循环
1 |
|
- 1.执行初始化命令;
- 2.检查循环条件是否为true,如果为false执行步骤6
- 3.循环条件为true,执行循环体;
- 4.执行步进操作;
- 5.步进操作执行结束后,跳转至步骤2
- 6.for循环后续的语句;
4. foreach语法
1 |
|
每次迭代循环element时,指针会自动更新;
5. 循环控制
- break:提前结束循环,不再执行循环体内的剩余代码;
- continue:跳过循环体内剩余的代码,然后执行步进操作;
7. Java函数
函数是一种操作,一种处理模块,也是用来减少重复代码和分解复杂操作的重要手段。
- 函数参数支持可变长度参数,语法为在数据类型的后面加上(…),在函数内可变长度参数可以看做是数组。可变长度参数必须是参数列表中的最后一个,一个函数也只能有一个可变长度参数。
- return用于显示执行函数返回,即便函数返回值是void也可以使用return关键字。
- 返回值可以是数组或者是对象,根据具体需求来选择;
- 函数重名但是参数列表不同的现象称之为函数的重载;
- 函数自己调用自己的行为称之为函数的递归;递归函数实现简单,但是十分占用资源开销比较大,并且不易调试;
- 函数中的参数以及函数中定义的变量都是在栈中分配内存,当栈的内存不够使用后就会出现StackOverflowError错误。
- 函数中使用到的数组,数组的地址是在栈中分配内存,数组中的元素是在堆中分配内存。当栈中数组元素没有指向堆中的内存,JVM将会收回分配在堆中的内存。
- 总结:函数主要是通过内存中的栈来进行内存分配的,系统就函数调用者和函数如何使用栈做了约定,返回值可以简单地认为是通过一个专门的返回值存储器存储的。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!