Java



修饰符 Modifiers

public + [static + final] + class MyClass
public + [static + final] + void + myFunction(int param)

访问修饰符: 从package和class两方面控制

Default: accessible only within the same package.

Public: No Restriction

Private: 类

Protected: 类/子类

非访问修饰符

Final: variable, method, or class cannot be modified or extended.

Static: available outside any particular instance of the class. 该变量和Class声明同在。Class被load之后就存在。instance可以修改,表现为共用的量。

静态方法:
	属于类,可以直接通过类名调用,无需创建实例。
	Static Method 不能访问 Non-static(即this)。
Calculator.add(x, y) //static
Static Method=不调用this
Non-static=调用this

静态变量(类变量):
	是一样的道理,属于Class的变量。
	A有static变量id。修改a0.id,影响在a1.id中也能观察到。
	为避免混淆static变量和instance变量,推荐使用A.id修改类变量。




数据类型: 
	内置:数字x6,char,Boolean。
	引用:对象(Iterable, Map,String)。
	
	
	Collection.stream()
	List.add()

变量类型

Java 语言支持的变量类型有:Local Variables,Instance Variables,Class Variables/Static Variables,Parameters

Static: a single copy of the variable is created and shared among all objects at a class level.

Non-Static Variable:

Local Variables:
Instance Variables:
As instance variables are declared in a class, these variables are created when an object of the class is created and destroyed when the object is destroyed.


传参数
- Java 中的基本数据类型都采用值传递方式传递参数变量的值,Java 中的对象类型采用引用传递方式传递参数变量的值。(similar to js & py)
- Java 函数只支持 位置传参(positional arguments),不支持命名传参(keyword arguments),这是 Java 与 Python 等语言的一个重要区别。

输入输出
Mapper 就是“对象 <> 另一种格式”的转换器,比如 JSON、XML、YAML、CSV 等。
private final ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(obj)
mapper.readValue(json, Class)

抽象设计中,定义越少越高层(越抽象)。Java遵循接口和实现分离。接口定义共性,具体实现类实现差异。
子类继承父类,继承父类的所有方法。子类更具体。

List list = new ArrayList<>();
List 是接口。
ArrayList,LinkedList是实现。

- 重载(Overload) 发生在同一个类中,方法名相同但参数不同。
- Java 禁止多类继承,主要是为了避免“菱形继承问题”。(同一个方法有不同实现)
- public class D extends C implements A, B 是可以的。

流
Stream:通过Stream的方式实现了类似JS原生方法的流式处理。
List result = users.stream()
  .filter(user -> user.getAge() > 20)
  .sorted(Comparator.comparingInt(User::getAge))
  .map(User::getName)
  .collect(Collectors.toList());  


Throwable
├── Error
└── Exception
    ├── RuntimeException
    │   ├── NullPointerException
    │   ├── IndexOutOfBoundsException
    │   └── ...
    ├── IOException
    ├── SQLException
    └── ...


Spring, Spring Boot, Spring Cloud

ssm: Spring, SpringMVC, MyBatis

MyBatis和JPA功能重叠

TS

class extends class

interface extends interface

class implements interface

override

const { name: userName, age: userAge }: { name: string; age: number } = user;