1. Java的Hello World
public class Test {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2. 注释
Java中的注释共分为三种
1.单行注释 //
2.多行注释 /* */
3.文档注释 /** */
3.数据类型
- 整形
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -231-231-1 (超过20亿) |
short | 2字节 | -2^15 - 2^15-1 |
long | 8字节 | -2^63 - 2^63-1 |
byte | 1字节 | -128 - 127 |
Java7开始可以为数字字面量加下划线 1_000_000 可以表示100万
2.浮点型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | |
double | 8字节 |
char类型
char类型表示单个字符unicode 和 char类型
不建议使用,可以使用字符串来代替boolean类型
boolean 有两个值:true 和 false。 在Java中boolean和整型不能互换
4. 变量
在声明变量时,变量的类型位于变量名之前。
4.1 变量的初始化
在声明一个变量后必须使用赋值语句对变量进行显示初始化,造成不要使用未初始化的变量。
4.2 常量
在Java中,利用关键字final声明常量。 例如:
public class Constants {
public static void main(String[] args){
final double CM_PER_INCH = 2.542122;
}
}
关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能再更改了。习惯上常量名使用全大写。
5. 运算符
在Java中使用算术运算符+、-、*、/表示。当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。整数的求操作用%表示。
注意:当整数被0除的时候会产生一个异常,而浮点数被0除会得到无穷大或NaN结果。
1. 数学函数与常量。
在Math类中,包含了各种各样的数学函数。
1.1 平方根:Math.sqlrt();
1.2 幂运算:Math.pow(x,y);
1.3 可以判断一个数的奇偶: floorMod();
1.4 常用的三角函数
- Math.sina
- Math.cos
- Math.tan
1.5 Java还提供了两个用于表示π和e常量的近似值:
Math.PI
Math.E
2. 数值类型之间的转换
当使用两个数值进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算。
如果两个操作数中有一个是double类型,另一个操作数就会转成double类型。
否则,如果其中一个操作是float类型,另一个操作数就会转成float类型。
否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
否则,两个操作数都将被转换为int类型。
3. 强制类型转换
double x = 9.997;
int nx = (int) x;
4. 综合赋值和运算符
可以在赋值中使用二元运算符。
x += 4;
5. 自增与自减运算符
i++; ++i; i--; --i;
6. 关系和布尔运算
==、 != 、 && 、 || 、 ? :
7. 位运算符
&(与) |(或) ~(非) ^(异或) >>(左位移) <<(右位移) >>>(以0填充高位左位移) <<<(没有)
8. 括号与运算符优先级
括号内的优先级最高,最先计算
9. 枚举
6.字符串
每个用""引号引起来的字符串都是String类的一个实例。
子串
String类的substring方法可以从一个较大的字符串提取出一个子串拼接
Java允许使用+号连接两个字符串。也可以使用静态的join方法。
String all = String.join("/", "S", "M", "L");
// all = "S/M/L"。 使用一个定界符进行分隔。不可变字符串
字符被确定后,他本身是不可以被改变的。检测字符串是否相等
可以使用equals方法检测两个字符串是否相等。
equalsIgnoreCase方法在检测字符串是否相等时,不区分大小写
千万不要使用 == 来检测两个字符串是否相等空串与NULL串
空串""是长度为0的字符串。 NULL串表示这个字符串为null。码点与代码单元
这里的知识比较晦涩难懂,在Java核心技术卷I第49页上。String API
Java核心技术卷I P50阅读联机API文档
Java核心技术 卷I P52构建字符串
采用字符串连接的方式来构建字符串效率比较低,每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间。可以使用StringBuilder类来避免
StringBuilder 是线程不安全的在多线程的环境下,应该使用StringBuffer。
7.输入输出I/O
读取输入
格式化输出
System.out.printf(); 的格式化符号。
3.文件输入与输出
8.控制流程
- {} 语句块
- 条件语句
if - 循环
while
do while - 确定循环
for - 多重选择: swtich语句
switch(){
case 1:
...
break;
} - 中断流程控制语句 break
9.大数值
java.math包下的BigInteger和BigDecimal。
BigInteger add(BigInteger other)
BigInteger subtract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
java.math.BigDecimal
BigDecimal add(BigDecimal other)
BigDecimal subtract(BigDecimal other)
BigDecimal multiply(BigDecimal other)
BigDecimal divide(BigDecimal other RoundingMode mode)
10.数组
数组是一种数据结构,用来存储同一类型的集合。通过下标可以访问数组中的每 一个值。
int[] a = new int[100]; 声明了长度为100的数组,可访问的下标为0-99;
for each循环
数组初始化及匿名数组
int[] a = {1,2,3,4}; //在声明时初始化数组
匿名数组: new int[]{1,2,3,4}; //初始化了一个匿名数组数组拷贝
在Java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组
int[] luckyNumbers = smallPrimes;
luckNumbers[5] = 12;
如果希望将值拷贝到一个新的数组中,可以使用Arrays类中的copyOf方法命令行参数 main方法接收一个String[] 参数,这里便是命令行参数
数组排序:Ayyay.sort()
多维数组
不规则数组