Java语法
兜兜转转,又绕回到Java了。
最近在学习Java,其实以前也学过,但是技术发展太快了,Java都出到14了。。是时候该更新一下知识体系了。
然后看的是网上好评如潮的《Java核心技术 卷Ⅰ》和《Java编程思想》。
不过,我感觉这两本书都有点长篇大论,比较适合初学者看,不适合复习。。
这两本书看过几页后,如果不做笔记,基本等于看了个寂寞。
然后也因为现在的Java,知识点还挺多的,所以把一些知识点记录下来。
总共分两篇,这篇记录Java的语法,下一篇记录Java常用的类库。
不打算写得过于详细,详细内容还是直接看书吧,这两篇文章当作纲要来用。
注释
点击查看详情
// 行注释
// 这是一行注释
// 块注释
/*
这是一块注释
这是一块注释
这是一块注释
*/
// 文档注释
/**
* 这是一个文档注释
* 这是一个文档注释
* 这是一个文档注释
*/
修饰符
点击查看详情
访问控制
public
protected
(子类或包内)
private
default (包内)
static
静态初始化代码块
静态字段
静态方法
嵌套类
final
常量
常字段
最终方法
最终类
abstract
抽象方法
抽象类
default
默认方法
synchronized
同步代码块
同步方法
volatile
共享字段
transient
非序列化字段
strictfp
严格浮点方法
严格浮点类
native
原生方法
基本数据类型
点击查看详情
// 布尔
boolean x = false;
boolean[] a = {true};
// 整数
byte x = 0;
short x = 0;
int x = 0;
long x = 0L;
int[] a = {1_2345_6789, 0B0_1111_1111, 0X0_FFFF_FFFF};
// 浮点数
float x = 0.0F;
double x = 0.0;
double[] a = {3.14, 1.0E5, 0X1.0P-5};
// 字符
char x = '';
char[] a = {'A', '"', 's', '
', 'uFFFF'};
// 字符串
String x = null;
String[] a = {"", "Hello!", """
<html>
<header></header>
<body>
<div>"lalala"</div>
</body>
</html>
"""};
// 引用
Object x = null;
数组
点击查看详情
var a = new int[5];
var a = new int[]{1, 3, 5, 7, 9};
int[] a = {1, 3, 5, 7, 9};
枚举
点击查看详情
enum A{
A0,
A1,
A2,
}
类型转换
点击查看详情
char -> int
byte -> short -> int -> long
float -> double
int ~> float
int -> double
long ~> float
long ~> double
any -> Object
运算符
点击查看详情
// 类型转换
(type)x
// 符号
+x
-x
// 自加、自减
++x
--x
x++
x--
// 算术
x+y
x-y
x*y
x/y
x%y
// 移位
x<<y
x>>y
x>>>y
// 按位
~x
x|y
x&y
x^y
// 比较
x==y
x!=y
x<y
x>y
x<=y
x>=y
// 逻辑
!x
x||y
x&&y
// 条件
c?vt:vf
// 赋值
x = y
// 算术赋值
x += y
x -= y
x *= y
x /= y
x %= y
// 移位赋值
x <<= y
x >>= y
x >>>= y
// 按位赋值
x |= y
x &= y
x ^= y
// 实例
obj instanceof type x
// switch
var r = switch(x){
case k00, k01 -> v0;
case k1 -> v1;
case k2 -> {
s2;
yield v2;
}
default -> v;
};
控制流程
点击查看详情
// if-else
if(c0){
s0;
}else if(c1){
s1;
}else{
s2;
}
// switch
switch(x){
case k00, k01 -> s0;
case k1 -> s1;
case k2 -> {
s2;
};
default -> s;
}
// while
while(c){
s;
}
// do-while
do{
s;
}while(c);
// for
for(sb; c; sa){
s;
}
// foreach
for(x: it){
s;
}
// other
continue;
break;
break label;
return;
return obj;
面向对象
点击查看详情
依赖 (uses-a)
关联、聚合、组合 (has-a)
继承 (is-a)
// 类
class A extends B implements C, D{
}
// 抽象类
abstract class A{
public abstract void m();
}
// 接口
interface A{
void m0();
default void m1(){
s;
}
}
// 嵌套类
class A{
public static class B{
}
}
// 内部类
class A{
public class B{
}
}
// 局部类
class A{
public void m(){
class B{
}
}
}
// 匿名类
interface A{
}
class B{
public void m(){
var x = new A(){
};
}
}
泛型
点击查看详情
// 泛型方法
class A{
public <T> void m(){
s;
}
}
// 泛型类
class A<T>{
}
// 泛型上界
<T extends A>
// 泛型下界
<T super A>
// 泛型通配符
<?>
<? extends A>
<? super A>
函数式
点击查看详情
// 函数式接口
interface A{
void m();
}
// lambda表达式
() -> {
s;
};
// 方法引用
A::m
// 构造器引用
A::new
注解
点击查看详情
内置元注解
@Retention
@Target
@Inherited
@Repeatable
@Documented
@Native
内置注解
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@interface A{
public int id() default 0;
public String desc() default "";
}
异常处理
点击查看详情
Throwable
Error
(非检查型)
Exception
RuntimeException
(非检查型)
IOException
(检查型)
… (检查型)
// 抛出异常
class A{
public void m() throws Exception{
throw new Exception();
}
}
// 捕获异常
// try-catch-finally
try{
s0;
}catch(x){
s1;
}finally{
s2;
}
// try-with-resources
try(rsc){
s0;
}catch(x){
s1;
}finally{
s2;
}
断言
点击查看详情
assert c;
assert c: x;