Java 入门指南
Java 程序基础操作
基本数据类型
- 整数类型: byte short,int, long
- 浮点数类型:float,double
- 字符类型:char
- 布尔类型:boolean
类型 | 字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
如果需要传递一个数字,没有定义变量类型
100 // 默认是 int 型
100L // 默认是 long 型
10.0 // 默认是 double 型
10.0f // 默认是 float 型
数据运算
整除
如果除数为 0 时,运行时则会报错,但编译不会。
int x = 25 / 3; // -> 8
取余
int y = 25 % 3; // -> 1
溢出
整数的范围有限制,如果计算超出了范围,就会溢出,溢出不会出现错误,但是结果不可控。
所以要调整变量的类型,让数字再类型的范围内运算就可以了。
System.out.println(2147483640 + 30); // -> -2147483626
System.out.println(2147483640L + 30L); // -> 2147483670
简写运算符
+=
-=
*=
/=
x += 100; // 相当于 x = x + 100
x -= 100; // 相当于 x = x - 100
自增,自减
++ 写在前面或者后面是有区别的, ++ 写在前面是先加1在引用x、 否则就是先引用x再加1.
x++; // x = x + 1;
x--; // x = x - 1;
位移运算
在计算机中,都是二进制的表示形式,比如,int 类型的整数 5
00000000 00000000 00000000 00000101
可以对整数进行位移运算
x 向左移动 y 位 即 x = x * 2 y 2^y 2y
x 向右移动 y 位 即 x = x / 2 y 2^y 2y
int n = 5;
int a = n << 1; // 00000000 00000000 00000000 00001010 = 10
int b = n << 2; // 00000000 00000000 00000000 00010100 = 20
int c = n >> 1; // 00000000 00000000 00000000 00000010 = 2
位运算
位运算是按位进行与、或、非和亦或的运算
0 & 1 // 0
1 & 1 // 1
0 | 1 // 1
~0 // 1 按位取反
1 ^ 0 // 1
1 ^ 1 // 0
三目运算符
b ? x : y
字符和字符串
char
是基本的数据类型,它占两个字节。
String
是引用类型,
String
一旦确定就不能更改了。
String s = "hello";
System.out.println(s);
s = "world";
System.out.println(s);
int len = s.length();
for (int i = 0; i < len; ++i)
System.out.println(s.charAt(i));
这里变的不是字符串 s
, 变得是 s
的指向。
可以使用 +
来实现字符串的拼接。
String s = "world!";
s = "hello " + s;
System.out.println(s);
数组
int[] vis;
vis = new int[4]; // 4 个大小的数组,
int[] a = new int[19]; // 19 个大小的数组
所有数组的下标都是从 0 开始的
数组在内存地址上是连续的,所以就可以使用下标来取出具体的值。
知道了下标,也知道数组的起始位置,就可以推出来值在内存地址上的位置了。
假设内存内置的起始地址是从 0 开始的(实际上并不是)
这里我们开了一个5个大小的数组,数组在内存地址上的起始位置是2,
现在我们想要取数组中 2 位置的值, 那么对应在内存地址上的位置就是 $ 2 + 2 = 4$, 所以只要在内存地址4的位置取值就可以了。
数组的优点:可以O(1) 的取数,修改数。
数组的缺点:如果删除一个数的时候,需要删除位置后面所有的数整体前移一位。
字符串数组
names
包含3个元素,每个元素指向了一个字符串对象。
如果修改,那就是修改指向。
流程控制
输入和输出
System.out.println("Hello World!!!"); // 普通输出
int x = 10;
System.out.printf