java基础篇
java基础篇
AlanJavaEE基础语法学习笔记
1.Java的变量与常量使用
类似于C#,Java的所有变量和函数都要定义在class中
(1)Java内置数据类型:
类型 字节数 举例
byte 1 123
short 2 12345
int 4 123456789
long 8 1234567891011L
float 4 1.2F
double 8 1.2, 1.2D
boolean 1 true, false
char 2 ‘A’
(2)Java常量使用:
使用final修饰
举例:
final int N = 110;
2.Java类型转化
(1)显示转化:
举例:
int x = (int)’A’;
(3)隐式转化:
举例:
double x = 12, y = 4 * 3.3;
3.表达式
与C++、Python3类似,包括+,-,*,/,%等算数运算符, &,|等位运算符, &&,||等逻辑运算符
举例:
int a = 1, b = 2, c = 3;
int x = (a + b) * c;
x ++;
4.Java的输入输出
输入方式1,使用Scanner类,效率较低,输入规模较小时使用。
使用方法:
1 | Scanner sc = new Scanner(System.in); |
输入方式2,使用BufferReader类与InputStreamReader类,效率较高,输入规模较大时使用。注意需要抛异常。
1 | public class Main { |
输出方式1 使用System.out 输出效率较低,输出规模较小时使用。
1 | System.out.println(123); // 输出整数 + 换行 |
输出方式2 效率较高,输出规模较大时使用。注意需要抛异常。
1 | import java.io.BufferedWriter; |
5.Java判断语句
if-else语句
举例:
1 | if(a > b){ |
switch语句
举例:
1 | switch (day) { |
6.Java循环语句
while循环
例如:
1 | int i = 0; |
do while循环
例如:
1 | int i = 0; |
do while语句与while语句非常相似。唯一的区别是,do while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行一次循环。
for循环
例如:
1 | for (int i = 0; i < 5; i ++ ) { // 普通循环 |
7.Java数组
数组初始化
初始化定长数组,长度可以是变量,可以在初始化时赋值。
1 | int[] a = new int[5]; // 初始化长度为5的int数组,初始值为0 |
数组元素的读取与写入
1 | int[] a = new int[5]; |
多维数组
1 | int[][] a = new int[2][3]; |
常用API
- 属性length:返回数组长度,注意不加小括号
- Arrays.sort():数组排序
- Arrays.fill(int[] a, int val):填充数组
- Arrays.toString():将数组转化为字符串
- Arrays.deepToString():将多维数组转化为字符串
注意:数组不可变长
8.字符串
String类
初始化:
String a = “Hello World”;
String类 常用API:
- length():返回长度
- split(String regex):分割字符串
- indexOf(char c)、indexOf(String str):查找,找不到返回-1
- equals():判断两个字符串是否相等,注意不能直接用==
- compareTo():判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于
- startsWith():判断是否以某个前缀开头
- endsWith():判断是否以某个后缀结尾
- trim():去掉首位的空白字符
- toLowerCase():全部用小写字符
- toUpperCase():全部用大写字符
- replace(char oldChar, char newChar):替换字符
- replace(String oldRegex, String newRegex):替换字符串
- substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串
StringBuilder、StringBuffer
- String不能被修改,如果打算修改字符串,可以使用StringBuilder和StringBuffer。
- StringBuffer线程安全,速度较慢;StringBuilder线程不安全,速度较快。
举例;
1 | StringBuilder sb = new StringBuilder("Hello "); // 初始化 |
9.Java的类
Java源文件声明规则
- 一个源文件中只能有一个public类。
- 一个源文件可以有多个非public类。
- 源文件的名称应该和public类的类名保持一致。
- 每个源文件中,先写package语句,再写import语句,最后定义类。
Java中类的定义
举例:
- public: 所有对象均可以访问
- private: 只有自己可以访问
class Point {
private int x;
private int y;
1 | public Point(int x, int y) { |
}
Java中类的继承
注意:每个类只能继承一个类。
举例;
class ColorPoint extends Point {
private String color;
1 | public ColorPoint(int x, int y, String color) { |
Java中类的多态
1 | public class Main { |
10.Java的接口
interface与class类似。主要用来定义类中所需包含的函数。
接口也可以继承其他接口,一个类可以实现多个接口。
接口的定义
1 | interface Role { |
接口的继承
每个接口可以继承多个接口
1 | interface Hero extends Role { |
接口的实现
每个类可以实现多个接口
1 | class Zeus implements Hero { |
1 | public void greet() { |
}
泛型
类似于C++的template,Java的类和接口也可以定义泛型,即同一套函数可以作用于不同的对象类型。
泛型只能使用对象类型,不能使用基本变量类型。
10.Java常用容器
List
接口:java.util.List<>。
实现:
java.util.ArrayList<>:变长数组
java.util.LinkedList<>:双链表
- 函数:
add():在末尾添加一个元素
clear():清空
size():返回长度
isEmpty():是否为空
get(i):获取第i个元素
set(i, val):将第i个元素设置为val
栈
类:java.util.Stack<>
函数:
push():压入元素
pop():弹出栈顶元素,并返回栈顶元素
peek():返回栈顶元素
size():返回长度
empty():栈是否为空
clear():清空
队列
接口:java.util.Queue<>
实现:
java.util.LinkedList<>:双链表
java.util.PriorityQueue<>:优先队列
默认是小根堆,大根堆写法:new PriorityQueue<>(Collections.reverseOrder())
- 函数:
add():在队尾添加元素
remove():删除并返回队头
isEmpty():是否为空
size():返回长度
peek():返回队头
clear():清空
Set
接口:java.util.Set
实现:
java.util.HashSet:哈希表
java.util.TreeSet:平衡树 函数:
add():添加元素
contains():是否包含某个元素
remove():删除元素
size():返回元素数
isEmpty():是否为空
clear():清空
java.util.TreeSet多的函数:
ceiling(key):返回大于等于key的最小元素,不存在则返回null
floor(key):返回小于等于key的最大元素,不存在则返回null
Map
接口:java.util.Map
实现:
java.util.HashMap:哈希表
java.util.TreeMap:平衡树 函数:
put(key, value):添加关键字和其对应的值
get(key):返回关键字对应的值
containsKey(key):是否包含关键字
remove(key):删除关键字
size():返回元素数
isEmpty():是否为空
clear():清空
entrySet():获取Map中的所有对象的集合
Map.Entry:Map中的对象类型
getKey():获取关键字
getValue():获取值
java.util.TreeMap多的函数:
ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
floorEntry(key):返回小于等于key的最大元素,不存在则返回null
- 0鼓励
- 0菜狗
- 0正确
- 0错误
- 0思考
- 0无聊