Java语法学习
password
icon
AI summary
type
status
date
slug
summary
tags
category
Property
Nov 22, 2024 06:19 AM
1. Java语法1.1 面向对象1.2 内置数据类型1.3 常量1.4 类型转换1.5 输入1.6 输出2. 条件判断2.1 if-else语句2.2 switch语句2.3 逻辑运算符与条件表达式3 循环3.1 while循环3.2 do while循环3.3 for循环4 数组4.1 初始化4.2 数组元素的读取与写入4.3 多维数组4.4 常用API5 字符串5.1 String 类常用API:5.2 StringBuilder、StringBuffer6. 函数7 类与接口7.1 类7.1.1 源文件声明规则
7.1.2 类的定义7.1.3 类的继承
7.1.4 类的多态
7.2 接口7.2.1 接口的定义
7.2.2 接口的继承
7.2.3 接口的实现7.2.4 接口的多态
7.3 泛型8 常用数据结构8.1 List8.2 栈8.3 队列
8.4 Set8.5 Map
1. Java语法
1.1 面向对象
和
C#
一样,Java
的所有变量和函数都要定义在class
中1.2 内置数据类型
类型 | 字节数 | 举例 |
byte | 1(8位) | 123(-128~127) |
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’ |
(n位数二进制表示范围 )
1.3 常量
使用final修饰
1.4 类型转换
- 显式转换:
- 隐式转换:
1.5 输入
- 方式1,效率较低,输入规模较小时使用
- 方式2,效率较高,输入规模较大时使用,类似C++的scanf,注意需要抛异常
1.6 输出
- 方式1,效率较低,输出规模较小时使用
- 方式2,效率较高,输出规模较大时使用,注意需要抛异常。
2. 条件判断
2.1 if-else语句
与c++、Python类似
2.2 switch语句
与c++中类似
2.3 逻辑运算符与条件表达式
3 循环
3.1 while循环
与c++、python类似
3.2 do while循环
与c++、python类似
do while语句与while语句非常相似。唯一的区别是,do while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行一次循环。
3.3 for循环
4 数组
4.1 初始化
与c++类似
初始化定长数组,长度可以是变量,可以在初始化时赋值
4.2 数组元素的读取与写入
与c++类似
4.3 多维数组
4.4 常用API
- 属性length:返回数组长度,注意不加小括
- Arrays.sort():数组排序
- Arrays.fill(int[] a, int val):填充数组
- Arrays.toString():将数组转化为字符串
- Arrays.deepToString():将多维数组转化为字符串 数组不可变长
数组.length不加括号
字符串.length()加括号
5 字符串
5.1 String 类
初始化
只读变量,不能修改,例如
访问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(a, b): 返回[a, b)的子串
5.2 StringBuilder、StringBuffer
String不能被修改(修改了是创建新的串,速度很慢),如果打算修改字符串,可以使用StringBuilder和StringBuffer。
StringBuffer线程安全,速度较慢;StringBuilder线程不安全,速度较快(算法题一般用这个)。
涉及到字符串往后加可以用这两
常用API:
- reverse():翻转字符串
6. 函数
Java的所有变量和函数都要定义在类中。
函数或变量前加static表示静态对象,类似于全局变量。
静态对象属于class,而不属于class的具体实例。
静态函数中只能调用静态函数和静态变量。
示例:
7 类与接口
class与C++、Python类似。
7.1 类
7.1.1 源文件声明规则
一个源文件中只能有一个public类。
一个源文件可以有多个非public类。
源文件的名称应该和public类的类名保持一致。
每个源文件中,先写package语句,再写import语句,最后定义类。
7.1.2 类的定义
public: 所有对象均可以访问
private: 只有自己可以访问
定义链表
7.1.3 类的继承
新的类和原类只有一点点不同,可能只是多了一个新的属性。
每个类只能继承一个类。
7.1.4 类的多态
同一个类的同一个函数可能有不同的行为
7.2 接口
interface与class类似。主要用来定义类中所需包含的函数。
接口也可以继承其他接口,一个类可以实现多个接口。
7.2.1 接口的定义
用来规范某些类必须要实现的函数,方便多人协作
7.2.2 接口的继承
每个接口可以继承多个接口
7.2.3 接口的实现
每个类可以实现多个接口
类实现接口以后,实例可以赋到接口引用上
7.2.4 接口的多态
7.3 泛型
类似于
C++
的 template
, Java
的类和接口也可以定义泛型,即同一套函数可以作用于不同的对象类型。
泛型只能使用对象类型,不能使用基本变量类型。8 常用数据结构
8.1 List
接口:
java.util.List<>
实现:
java.util.ArrayList<>
:变长数组,不好删除,删除O(n),访问下标O(1)
java.util.LinkedList<>
:双链表 添加删除O(1),访问下标O(n)
函数:
add()
:在末尾添加一个元素
clear()
:清空
size()
:返回长度
isEmpty()
:是否为空
get(i)
:获取第i个元素
set(i, val)
:将第i个元素设置为val
8.2 栈
类:
java.util.Stack<>
函数:
push()
:压入元素
pop()
:弹出栈顶元素,并返回栈顶元素
peek()
:返回栈顶元素
size()
:返回长度
empty()
:栈是否为空
clear()
:清空
8.3 队列
接口:
java.util.Queue<>
实现:
java.util.LinkedList<>
:双链表
java.util.PriorityQueue<>
:优先队列
默认是小根堆,大根堆写法:
new PriorityQueue<>(Collections.reverseOrder())
函数:- add():在队尾添加元素
- remove():删除并返回队头
- isEmpty():是否为空
- size():返回长度
- peek():返回队头
- clear():清空
8.4 Set
接口:
java.util.Set<K>
实现:
- java.util.HashSet<K>:哈希表 无序集合,增删改查O(1)
- java.util.TreeSet<K>:平衡树 有序集合,增删改查O(logn)
函数:
- add():添加元素
- contains():是否包含某个元素
- remove():删除元素
- size():返回元素数
- isEmpty():是否为空
- clear():清空
java.util.TreeSet多的函数:
ceiling(key)
:返回大于等于key的最小元素,不存在则返回null
floor(key)
:返回小于等于key的最大元素,不存在则返回null
8.5 Map
接口:
java.util.Map<K, V>
实现:
java.util.HashMap<K, V>
:哈希表
java.util.TreeMap<K, V>
:平衡树
函数:- put(key, value):添加关键字和其对应的值
- get(key):返回关键字对应的值
- containsKey(key):是否包含关键字
- remove(key):删除关键字
- size():返回元素数
- isEmpty():是否为空
- clear():清空
- entrySet():获取Map中的所有对象的集合
- Map.Entry<K, V>:Map中的对象类型
- getKey():获取关键字
- getValue():获取值
java.util.TreeMap<K, V>多的函数:
- ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
- floorEntry(key):返回小于等于key的最大元素,不存在则返回null
上一篇
Java知识库(to 飞书)
下一篇
论文阅读(to Notion)
Loading...