简介
1 Java 区分大小写
2 Java类 应该用首字母大写的驼峰法 命名
3 源文件的名称 应该 与公共类的名称相同
4 运行已编译的程序时,Java虚拟机将从指定类中的main方法开始执行
5 main方法必须声明为public
6 // 注释 / /多行注释 /* / 可以自动生成文档
数据类型
Java 有8种基本类型
1 整型
long(…) int(20亿出头) short(32767) byte(127)
长整型数值有一个后缀L或l
0x 十六进制
0 八进制
0b 二进制
数字字面量可以加下划线 1_0000_0000 方便阅读 编译器会去除
java没有无符号
2 浮点
float(后缀要加f) double(绝大部分用double)
三种特殊的值 : 正无穷,负无穷,NaN
3 char
用于表示Unicode 字符 有些字符用一个char 有些用多个 因为字符的增多 2个字节的char 不够用了
char的值 \u0000到\uffff 一个char 占据两个字节
UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。
强烈建议不要在程序中使用char类型,最好将字符串作为抽象数据类型处理
4 boolean
虚拟机 用int 来表示 boolean 用byte[] 代替 boolean[]
所以boolean大小为4个字节
变量
1 在Java中,不区分变量的声明与定义。
2 声明一个变量之后,必须用赋值语句对变量进行显式初始化,千万不要使用未初始化的变量
3 通过 final 定义 一个常量
4 使用 static final 定义一个类的常量 非静态的常量 没有意义 如果定义为public
运算符
1 +-*/ %
整数/0 产生异常 浮点数/0 得到NaN 或无穷大
2 常用函数 Math.sqrt() Math.pow(x,a) Math.PI Math.E
3 += ++
4 == != > >=
5 && || 短路求值
6 位运算符 & | ^(异或) ~ <<(左移) >>(右移) 移位超过数字长度 需要对长度求余
7 枚举
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
Size s = Size.MEDIUM;
字符串
1 Java没有内置的字符串类型,类库中提供了一个预定义类String。每个用双引号括起来的字符串都是String类的一个实例
2 substring(index, len)方法 用于获取 子串
3 Java语言允许使用+号连接(拼接)两个字符串
4 当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串
5 静态join方法 将多个字符串拼接 用一个定界符分隔
String.join(“,”,”A”,”B”,”C”)
6 String类没有提供用于修改字符串的方法 String字符串不可变
Java的设计者认为共享带来的高效率远远胜过于提取、拼接字符串所带来的低效率
7 使用equals()检测两个字符串是否相等
s.equals(t) “Hello”.equals(“He”)
使用equalsIgnoreCase() 忽略大小写比较
8 == 判断字符串 只能表示 是否在同一个位置
9 检查空串 可以用 equals(“”) 或者 length == 0 检查null 要用 !=null
10 常用API
equals() equalsIgnoreCase()
startsWith() endsWith()
indexOf() lastIndexOf()
length()
subString()
toLowerCase() toUpperCase()
trim()
join()
11 使用StringBuilder 构建字符串 (StringBuffer 线程安全 效率较低)
StringBuilder API
length()
append()
toString()
12 读取输入
Scanner in = new Scanner(System.in)
Scanner API:
nextLine() nextInt() next() hasNext()
13 java 沿用 printf 进行格式化输出
还可以使用静态的String.format方法创建一个格式化的字符串
14 读写文件
创建Scanner 和 PrintWriter对象并关联文件
流程控制
1 块(即复合语句)是指由一对大括号括起来的若干条简单的Java语句,块确定了变量的作用域。
不能在嵌套的两个块中声明同名的变量
2 if 条件语句
3 while 循环
4 do{ }while(); 先do一次 再判断while
5 for 循环,其中可以使用逗号表达式
6 switch(){}
case 可以是 char byte short int 枚举 字符串常量
7 中断
break , 带标签的break , continue
标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号。
A:
for(){
for(){
break A;
}
}
大数值
1 BigInteger和BigDecimal,实现任意精度的整数和浮点数计算
2 常用API
静态 valueOf 将普通数值转化为大数值
不能用常用的运算符 得用 add() substract() multiply() divide() mod() comparTo()
数组
1 需要指出数组类型(数据元素类型紧跟[])和数组变量的名字 int[] a;
这种只声明 没有初始化
int[] a = new int[100] 初始化了 长度不要求一定是常量
对于 数字数组 初始化为 0 boolean初始化为 false 对象数组初始化为null
2 数组长度 用length属性 获得,一旦创建了数组,其大小不变
3 for each 循环
for(variable : clooection) statement
collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)
定义一个变量用于暂存集合中的每一个元素,并执行相应的语句
4 调用静态函数 Arrays.toString(a),返回一个包含数组元素的字符串, 用sout打印
5 可以用花括号初始化数组 int[] smallPrimes = {2,3,4,5,6} ,不需要用new
还可以初始化一个匿名数组 new int[]{2,3,4,5,6}
数组大小就是初始值的个数
6 Java中允许 数组为空 作为返回值的时候 有用 new int[0]
7 如果需要将数组拷贝一份,使用Arrays.copyOf(xx ,new length),多余的根据类型初始化为0 false 或者 null
8 main函数的 args 用于接收命令行参数
9 数组排序 可以用 静态函数 Arrays.sort() 使用了快排
10 java内多维数组即数组的数组,这样数组内的数组可以有不同的长度