目录
- 控制流程
- 块作用域
- if 条件语句
- for while 循环
- switch 多重选择
- break continue 中断控制流程语句
- 大数值
- 数组
- 多维数组
- 字符串类型数组
- Array.sort() 数组排序
- for each 循环
控制流程
块作用域
块(即复合语句)是指由一对大括号{}括起来的若干条简单的 Java 语句。块确定了变量的作
用域。一个块可以嵌套在另一个块中。
不能在块的嵌套中声明相同的变量。
任何语言中其内部原理都是用栈实现的。
if 条件语句
if (条件1){
满足条件1执行;
}else if (条件2)
{
满足条件2执行;
}else{
上述都不满足执行;
}
for while 循环
for (变量; 条件; 变量的变化) // 里面也可以只有条件
{
符合条件执行;
}
while(条件){
符合条件执行;
}
还有 do while循环,先执行后判断条件。
可以写一个死循环:
import java.util.*;
public class Test{
public static void main(String[] xxx){
while(true){
System.out.println("=======");
}
}
}
Ctrl + c 可以中断执行。
switch 多重选择
switch(x){ // x 为一个变量
case 条件1:
x满足条件1执行;
break;
case 条件2:
x满足条件2执行;
break;
case 条件3:
x满足条件3执行;
break;
default:
x都不满足执行;
break;
}
switch击穿:如果没有break,匹配之后会接着往下执行。
switch可选类型:char byte short int String 枚举
break continue 中断控制流程语句
break 打断循环,但只能跳出一层循环。
continue 跳过本次循环,进行下一次循环。
大数值
导入包 import java.math.*;
基本的整数和浮点数精度不能够满足需求, 那么可以使用 jaVa.math 包中的两个很有用的类: Bi glnteger 和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。
Biglnteger 类实现了任意精度的整数运算。
BigDecimal 实现了任意精度的浮点数运算。
底层是 char 类型的数组来存的。
所以在项目中很多需要精确计算的都会使用其来代替基本类型。
注意其属于的引用类型,也不能运算符重载, 所以没有像 +、* 的操作,但可以利用如下方法:
valueOf(x) // 将x普通数值转换为大数值
a.add(b) // a + b
a.multiply(b) // a * b
数组
数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。
例如,如果 a 是一个整型数组,a[i] 就是数组中下标为 i 的整数。
int [] a; // 声明数组
int a[]; // 也可以这样c语言的分格写,不过一般用上一种。
int [] a = new int [100]; // 初始化创数组
数组物理地址连续。
只有基本类型的一维数组,数据才会在物理地址上严格连续。
Java中的引用类型完全等于c语言中的指针。
数组无论多大,都只记录第一个的地址。
元素地址 = 首地址 + i * m; // i 为下标(第 i + 1的位置),m 为所存的数据类型大小。
在计算机中,若一块数据没有任何一个地方记录其地址,将被标记为空白无效,被销毁。
多维数组
二维数组的储存:
可以发现数组之间都是通过记录地址来联系,真实地址并不连续。
三维数组与之同理:
字符串类型数组
String[] arr2 = {"d","dsfs","daadf", "dd"};
也是存放的地址。
在修改 daadf 为 eeeeeee 时,不是在原位置修改,而是新创建一个再把对应位置地址指向它,而原来的 daadf 将被销毁。
Array.sort() 数组排序
导入import java.util.*;
Array.sort(arr) 对 arr 排序,内部和C++一样也是快排。不局限于基本类型,引用类型也可以,后面再介绍。
Array.toString(arr) 打印数组
import java.util.*;
public class Test{
public static void main(String[] xxx){
int[] arr = {1, 34, 3, 4, 5,8, 9,-1,12,33, 90};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
for each 循环
Java 有一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心 。
for ( variable : collection ) statement
import java.util.*;
public class Test{
public static void main(String[] xxx){
int[] arr = {1, 34, 3, 4, 5,8, 9,-1,12,33, 90};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
for (int w: arr){
System.out.println(w);
}
String[] arr2 = {"aa", "bb", "cc"};
for (String w : arr2){
System.out.println(w);
}
Object[] arr3 = {new Object(), new Object(), new Object()};
for (Object w : arr3){
System.out.println(w);
}
}
}