秋招Java后端开发冲刺——基础篇3

一、Java泛型

  1. Java 1.5中引入的一个新特性,其本质是参数化类型,可以增强代码的可读性以及稳定性。
  2. 分类
  • 泛型类:在类定义时类名后加,其中T表示泛型
  • 泛型接口:与泛型类相似
  • 泛型方法:静态泛型方法是没有办法使用类上声明的泛型的,必须声明自己的泛型

二、Java值传递

  1. 值传递和引用传递
  • 值传递:方法接收的是实参值的拷贝,会创建副本,方法内部的改变是否影响实参值需要根据参数是基本数据类型还是对象引用等来确定
  • 引用传递:方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。

三、反射

  1. 定义:程序运行时动态地获取任意一个类的所有属性和方法,包括私有属性和方法的机制。
  2. 反射获取Class对象
  • 具体类.class
  • 通过全类名:Class.forName(全类名)
  • 对象实例:对象变量.getClass()
  • 类加载器:xxxClassLoader.loadClass(全类名)
  1. 反射获取类的方法
  • 该类及其父类的public方法:getMethods()
  • 该类所有方法(包括private & protected & default & public,但不包括其父类中方法):getDeclaredMethods()
  • 获取指定方法并调用:(1)getDeclaredMethod(方法名,参数的Class对象); (2)setAccessible(true)(私有方法需要)(3)invoke(实例对象,实参)
  1. 反射获取类的属性
  • 该类及其父类的public属性:getFields()
  • 该类的所有属性(包括private & protected & default & public,但不包括其父类中属性)getDeclaredFields()
  • 属性的使用:与方法使用类似
  1. 应用场景:动态代理、注解、序列化和反序列化、依赖注入和控制反转等

四、注解

  1. 定义:Annotation (注解) 是 Java 1.5 开始引入的新特性,可以看作是一种特殊的注释,主要用于修饰类、方法或者变量,提供某些信息供程序在编译或者运行时使用。
  2. 作用:编译检查、代码分析、编译时动态处理等
  3. Java常见注解
分类注解描述
Spring Framework@Component标记一个类为Spring组件,Spring会自动检测并注册这个bean。
@Service特殊类型的`@Component`,用于服务层。
@Repository特殊类型的`@Component`,用于DAO层,并添加数据访问异常转换功能。
@Controller标记一个类为Spring MVC控制器。
@Autowired自动注入依赖对象。
@Qualifier与`@Autowired`结合使用,以区分具有相同类型的多个bean。
@Value注入属性值,支持SpEL表达式。
@Scope配置bean的作用域。
@Configuration标记一个类为配置类,用于定义bean。
@Bean声明一个bean的定义。
@Primary标记一个bean为首选bean,当有多个相同类型的bean时优先选择。
@Lazy懒加载bean,只有在需要时才初始化。
@PostConstruct在bean初始化完成后执行方法。
@PreDestroy在bean销毁之前执行方法。
Spring Boot@SpringBootApplication组合注解,包括`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`。
@EnableAutoConfiguration启用Spring Boot的自动配置功能。
@RestController组合注解,标记一个类为Spring MVC控制器,并且每个方法默认返回JSON响应。
@RequestMapping映射HTTP请求到控制器的方法上。
@GetMapping映射HTTP GET请求到控制器的方法上。
@PostMapping映射HTTP POST请求到控制器的方法上。
@PutMapping映射HTTP PUT请求到控制器的方法上。
@DeleteMapping映射HTTP DELETE请求到控制器的方法上。
@PatchMapping映射HTTP PATCH请求到控制器的方法上。
@PathVariable将URL路径变量绑定到方法参数上。
@RequestParam将请求参数绑定到方法参数上。
@RequestBody将请求体绑定到方法参数上。
@ResponseBody将方法的返回值作为HTTP响应体。
@CrossOrigin允许跨域请求。

五、序列化和反序列化

  1. 定义
  • 序列化:将数据结构或对象实例转换为二进制数据流
  • 反序列化:将二进制数据流还原为数据结构或对象实例
  1. 应用场景:RPC远程调用、对象的文件存储等
  2. transient 关键字:修饰对象中的变量可以保证该变量不被序列化
  3. 常见的序列化协议:Hessian、Kryo、Protobuf、ProtoStuff
  4. JDK 自带的序列化,只需实现 java.io.Serializable接口
  5. 序列化号:serialVersionUID(变量类型为static final long ),用于保证对象反序列化时原类没有改变,否则不能成功反序列化。虽然该变量是static final类型,但做了特殊处理,因此是可以被序列化的。

六、语法糖

  1. 定义:是编程语言为了方便程序员开发程序而设计的一种特殊语法
  2. 常见应用
  • 泛型
  • 自动拆装箱(引用类型和基本数据类型)
  • 变长参数
  • 枚举
  • 内部类
  • 增强 for 循环(for each)
  • try-with-resources 语法(用于关闭资源,如IO资源)
  • lambda 表达式
  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值