基本数据类型
java 是强类型语言, 在 java 中存储的数据都是有类型的, 而且必须在编译时就确定其类型.
基本数据类型变量存储的是数据本身, 而引用类型变量存的是数据的空间地址.
基本类型转换
自动类型转换
把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时, 系统将会进行自动类型转换, 否则需要强制转换.
强制类型转换
强制类型转换可能存在溢出导致数据精度丢失的情况.
字符串
Java 没有内置的字符串类型, 而是提供了一个标准类库 String.
特征: 不可变字符串
优点: 编译器可以让字符串共享 (只有字符串常量是共享的, 而 + 或 substring 等操作产生的结果并不是共享的)
运算符
自增自减
- int a = 5;
- int b = ++a; // a 先自增, 再赋值给 b
- System.out.println(a); // 6
- System.out.println(b); // 6
- int a = 5;
- int b = a++; // a 先赋值给 b, 再自增
- System.out.println(a); // 6
- System.out.println(b); // 5
条件判断
- switch (表达式) {
- case value1:
- statement1;
- break;
- case value2:
- statement2;
- break;
- case valuen:
- statementn;
- break;
- default:
默认执行的代码;
}
当 switch 后表达式的值和 case 语句后的值相同时, 从该位置向下执行, 直到遇到 break 语句或者 switch 语句块结束; 如果没有匹配的 case 语句则执行 default 块的代码.
case 后面的值可以是常量数值, 也可以是一个常量表达式, 但不能是变量或带有变量的表达式
可以把功能相同的 case 语句合并起来
default 块可以出现在任意位置, 也可以省略
循环
- While
- while (condition) {
- statement;
- }
- do-While
- do {
- statement;
- } while (condition);
- for
- for (循环变量初始化; 循环条件; 循环变量变化) {
- statement;
- }
循环跳转
break
continue
数组
数组是用来存储固定大小的同类型元素. 一旦数组初始化完成, 数组在内存中所占的空间将被固定下来, 因此数组的长度将不可以改变, 即使某个数组的元素被清空, 但是它所占的空间依然保留.
数组本身也是一种引用类型, 既可以存储基本数据类型, 也可以存储引用类型, 只要存储的数组元素具有相同的类型即可.
动态初始化
执行动态初始化时, 系统会根据声明的数组类型自动为数组元素分配初始值. 如果是引用类型, 则数组元素的初始值为 null.
- int[] scores;
- scores = new int[5]; // 声明一个长度为 5 的整型数组
- // 上面两步可以合为一步
- int[] scores = new int[5];
静态初始化
显示指定每个元素的初始值
- int[] scores;
- scores = new int[] {
- 1,2,3,4
- };
- // 上面两步可以合为一步
- int[] scores = {
- 1,2,3,4
- };// 方式二
遍历数组
for 循环遍历数组
foreach 遍历数组: foreach 不是 java 中的关键字, 是 for 语句的特殊简化版. 在遍历数组, 集合时更方便
- int[] scores = {1,2,3,4};
- for (int score : scores) {
- System.out.println(score);
- }
数组的本质
将数组看成两个部分, 一个部分是数组引用, 也就是在代码中定义的数组引用变量; 另一部分是实际的数组对象, 这部分是在堆内存中运行的, 通常无法直接访问它, 只能通过引用变量来访问.
二维数组
二维数组本质上还是一维数组, 只是其数组元素也是引用, 数组元素里保存的引用指向一维数组.
String [][] str1 = {new String[3], new String[]{"hello"}};
上面代码的示意图:
来源: https://www.cnblogs.com/Tianny/p/11604670.html