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 “+”, “-“, “*”, “/“, “%”

运算符的使用需要注意:

  1. 整数相除不是四舍五入,而是直接舍去小数位;
  2. a++表示先使用原值a后再进行自增;a—同理;
  3. ++a表示先对原始值a进行自增再进行使用;—a同理;
  4. a += b相当于 a = a + b; a -= b同理,同样对乘除取模运算一样;

4. Java逻辑运算

  1. 与运算符(&):两个都为true才是true,有一个为false就是false;
  2. 或运算符(|):只要有一个为true就是true,只有都为false才是false;
  3. 非运算符(!):true的非运算就是false,反之同理;
  4. 异或运算符(^):相同为false,不相同就是true;
  5. 短路与(&&):作用跟&类似,boolean flag = a || b++ > 0, 当a为true忽略后面的运算;
  6. 短路或(||):作用于|类似,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
    21
    if (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
2
3
while (cond) {
loop body
}

只要循环条件为true,就一直执行循环体内,否则就中止执行;

2. do-while循环
1
2
3
do {
loop body
} while (cond)

不管循环条件是什么,循环体至少会执行一次;

3. for循环
1
2
3
for (init; cond; step) {
loop body
}
  • 1.执行初始化命令;
  • 2.检查循环条件是否为true,如果为false执行步骤6
  • 3.循环条件为true,执行循环体;
  • 4.执行步进操作;
  • 5.步进操作执行结束后,跳转至步骤2
  • 6.for循环后续的语句;
4. foreach语法
1
2
3
for (DataType element : DataTypeArr) {
loop body
}

每次迭代循环element时,指针会自动更新;

5. 循环控制
  • break:提前结束循环,不再执行循环体内的剩余代码;
  • continue:跳过循环体内剩余的代码,然后执行步进操作;

7. Java函数

函数是一种操作,一种处理模块,也是用来减少重复代码和分解复杂操作的重要手段。

  1. 函数参数支持可变长度参数,语法为在数据类型的后面加上(…),在函数内可变长度参数可以看做是数组。可变长度参数必须是参数列表中的最后一个,一个函数也只能有一个可变长度参数
  2. return用于显示执行函数返回,即便函数返回值是void也可以使用return关键字。
  3. 返回值可以是数组或者是对象,根据具体需求来选择;
  4. 函数重名但是参数列表不同的现象称之为函数的重载;
  5. 函数自己调用自己的行为称之为函数的递归;递归函数实现简单,但是十分占用资源开销比较大,并且不易调试;
  6. 函数中的参数以及函数中定义的变量都是在栈中分配内存,当栈的内存不够使用后就会出现StackOverflowError错误。
  7. 函数中使用到的数组,数组的地址是在栈中分配内存,数组中的元素是在堆中分配内存。当栈中数组元素没有指向堆中的内存,JVM将会收回分配在堆中的内存。
  8. 总结:函数主要是通过内存中的栈来进行内存分配的,系统就函数调用者和函数如何使用栈做了约定,返回值可以简单地认为是通过一个专门的返回值存储器存储的。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!