跳过正文

java

·80 字·1 分钟
jiladahe1997
作者
jiladahe1997
To see the world as it is, and to love it
目录

java
#

java命名:主类和文件名必须一样。

java官方installtion教程,包括设置JAVA_HOME环境变量:

https://docs.oracle.com/en/java/javase/13/install/installation-jdk-microsoft-windows-platforms.html#GUID-96EB3876-8C7A-4A25-9F3A-A2983FEC016A

java模块化:

java的模块化只有import语句,和JavaScript类似。但是java没有export导出语句。

java模块化另外一点是使用package来做区分,目的是避免重名和目录结构优化。

demo如下:

     红线会提示包名和目录结构不符合。但是并不影响编译,编译后的目录结构仍然是正确的。

QQ截图20191006235847.png

QQ截图20191007000118.png

java注解和反射:

一个项目一般都会有很多的配置,以前端webpack为例,需要配置输出目录,源文件目录;在router层还需要读取routers。当然js的配置相对简单,router可以直接读取文件,但是假如router非常多,还要分开多个文件,然后读取整个文件夹,为了方便,甚至可以webpack配脚本读取。

因此java使用xml文件进行如上配置。

但是java项目一般会有非常多的配置,因此xml文件会非常杂乱。所以sprintboot为首的最新框架都使用注解进行配置

package hello;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class GreetingController {

private static final String template = “Hello, %s!”;

private final AtomicLong counter = new AtomicLong();

@RequestMapping("/greeting")

public Greeting greeting(@RequestParam(value=“name”, defaultValue=“World”) String name) {

return new Greeting(counter.incrementAndGet(),

String.format(template, name));

}

}

java注解的原理是:

java读取到注解时,可以另外写代码来读取注解处的内容,然后来进行特殊处理。例如上述代码中的 RequestMapping注解,可以在程序的主入口处写一段代码,利用反射机制,首先拿到Greeting类,然后用getDeclaredMethods方法可以拿到greeting函数,再用getAnnotation方法,可以拿到注解的信息,最后像前端一样,把路由注册进去。

java异常处理:

java几乎每层都要做异常处理,所以每一层都要报一下错,不然某层catch了不报,调用栈就会出错。

catch (Exception e) {

e.printStackTrace();

}

java的异常为什么要分类?为什么不直接兜底策略?

java原生数组是定长的,扩展了list类来实现不定长数组,不定长数组的本质是对象??

问题:为啥要用List xxx = getArrayList() 这种语法? 据说是为了多态。某天getArrayList不返回ArrayList了,返回newList,假设newList也继承List,则代码不需要变更。

java泛型

java字符串模板