!!! note 目录
Switch 语句
一、case 语句可以合并
case 后面只能是字面量值这样的值,不能使用变量。
12345678910111213141516171819202122232425import java.util.Scanner;public class SwitchTest01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer month = sc.nextInt(); String str; switch(month) { case 3: case 4: case 5: str="春天"; break; case 6 : case 7: case 8: str=" ...
字节码解读一、基础概念
Windows cmd 查看程序字节码指令:javap -c
局部变量表、操作数栈、槽位
在 Java 语言中,任何一个方法执行时,都会专门为这个方法分配所属的内存空间,供这个方法的使用。
每个方法都有自己独立的内存空间,这个内存空间有两块比较重要的内存空间:局部变量表、操作数栈
此外,局部变量表中还管理着槽位,在 Java 虚拟机的线程栈中,局部变量、操作数栈和返回值等数据存储在称为“槽位”的内存单元中。
每个槽位通常可以容纳一个基本类型值或者是一个引用。
bipush、istore、iload、iinc
bipush 是 Java 虚拟机(JVM)中的一个字节码指令,用于将一个字节(byte)常量推送到操作数栈顶。
istore 是 Java 虚拟机(JVM)中的一个字节码指令,用于将整数类型的值从操作数栈顶存储到局部变量表中的指定位置。
iload 是 Java 虚拟机(JVM)中的一个字节码指令,用于将整数类型的值从局部变量表中加载到操作数栈顶。
iinc 是 Java 虚拟机(JVM)中的一个字节码指令,用于对局部变量表中的整数值进行增量操作。
...
变量类型一、整型变量byte < short < int < long < float < double
在 Java 中任何一个**整数型字面量**都会被默认被当做 int 类型来处理。
1234567891011public class IntTest { public static void main(String[] args) { // 100 是 4 个字节,b 是八个字节。 // 所以存在自动类型类型转换。 long b=100; // 这个不存在类型转换。 long c=100L; // 这个会报错,原因是 = 右边先执行,这个整型字面量会以 int 类型处理,显然超过了 int 范围所以报错。其错误的原因在这。 long e=2147483648; }}
1.1、自动类型转换可以理解为从小容量到大容量。程序员不需要明确地指定转换操作,而是由编程语言的规则自动执行。
1.2、 强制类型转 ...
Java SE
未读Java SE 基础知识一、Java虚拟机(JVM)
二、Java的加载与执行原理
三、JDK、JRE、JVM分别是什么?他们的关系是什么?
JDK(Java Development Kit):JDK 是 Java 开发工具包,它是 Java 开发者用来开发 Java 应用程序的核心组件。JDK 包括了 Java 编译器(javac)、Java 运行时环境(JRE)、Java 文档生成器(Javadoc)以及其他一些开发工具和库。简而言之,JDK 提供了开发 Java 应用程序所需的所有工具和资源。
JRE(Java Runtime Environment):JRE 是 Java 运行时环境,它是在运行 Java 应用程序时所必需的环境。JRE 包含了 Java 虚拟机(JVM)以及 Java 核心类库和支持文件。当用户想要运行一个已编译的 Java 应用程序时,他们需要安装 JRE。JRE 提供了 Java 应用程序的运行环境,但不包含开发工具。
JVM(Java Virtual Machine):JVM 是 Java 虚拟机,它是 Java 程序的运行环境。JVM 负责在实际的 ...
Spring
未读Spring第二阶段
掌握IOC/DI配置管理第三方bean
掌握IOC/DI的注解开发
掌握IOC/DI注解管理第三方bean
完成Spring与Mybatis及Junit的整合开发
1. IOC/DI配置管理第三方bean前面所讲的知识点都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理?
1.1 案例:数据源对象管理在这一节中,我们将通过一个案例来学习下对于第三方bean该如何进行配置管理。
以后我们会用到很多第三方的bean,本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。
1.1.1 环境准备学习之前,先来准备下案例环境:
创建一个Maven项目
pom.xml添加依赖
1234567<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context& ...
Spring
未读Spring学习第一阶段
掌握Spring相关概念
完成IOC/DI的入门案例编写
掌握IOC的相关配置与使用
掌握DI的相关配置与使用
1. Spring相关概念
1.1 初识Spring在这一节,主要通过以下两个点来了解下Spring:
1.1.1 Spring家族
官网:https://spring.io,从官网我们可以大概了解到:
Spring能做什么:用以开发web、微服务以及分布式系统等,光这三块就已经占了JavaEE开发的九成多。
Spring并不是单一的一个技术,而是一个大家族,可以从官网的Projects中查看其包含的所有技术。
Spring发展到今天已经形成了一种开发的生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能。
Spring已形成了完整的生态圈,也就是说我们可以完全使用Spring技术完成整个项目的构建、设计与开发。
Spring有若干个项目,可以根据需要自行选择,把这些个项目组合起来,起了一个名称叫全家桶,如下图所示
说明:
图中的图标都代表什么含义,可以进入https://spring.io/proj ...
SpringMVC
未读响应
SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户。
对于响应,主要就包含两部分内容:
响应页面
响应数据
文本数据
json数据
因为异步调用是目前常用的主流方式,所以我们需要更关注的就是如何返回JSON数据,对于其他只需要认识了解即可。
1. 环境准备
创建对应的配置类
12345678910111213141516171819202122232425262728293031public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class<?>[] getRootConfigClasses() { return new Class[0]; } protected Class<?> ...
SpringMVC
未读日期类型参数传递
日期类型比较特殊,因为对于日期的格式有N多中输入方式,比如:
2088-08-18
2088/08/18
08/18/2088
……
针对这么多日期格式,SpringMVC该如何接收?
1. 字符串转日期
步骤1:编写方法接收日期数据在UserController类中添加方法,把参数设置为日期类型
123456@RequestMapping("/dataParam")@ResponseBodypublic String dataParam(Date date) System.out.println("参数传递 date ==> "+date); return "{'module':'data param'}";}
步骤2:使用PostMan发送请求使用PostMan发送GET请求,并设置date参数
http://localhost/dataParam?date=2088/08 ...
SpringMVC
未读JSON数据传输参数
现在比较流行的开发方式为异步调用。前后台以异步方式进行交换,传输的数据使用的是==JSON==,所以前端如果发送的是JSON数据,后端该如何接收?
对于JSON数据类型,我们常见的有三种:
json普通数组([“value1”,”value2”,”value3”,…])
json对象({key1:value1,key2:value2,…})
json对象数组([{key1:value1,…},{key2:value2,…}])
对于上述数据,前端如何发送,后端如何接收?
1. JSON普通数组
步骤1:pom.xml添加依赖SpringMVC默认使用的是jackson来处理json的转换,所以需要在pom.xml添加jackson依赖
12345<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> ...
SpringMVC
未读五种类型参数传递
前面已经讲解使用GET或POST来发送请求和数据,所携带的数据都是比较简单的数据,接下来在这个基础上,研究一些比较复杂的参数传递,常见的参数种类有:
普通参数
POJO类型参数
嵌套POJO类型参数
数组类型参数
集合类型参数
1. 普通参数
普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数。
* 如果形参与地址参数名不一致该如何解决?发送请求与参数:
1http://localhost/commonParamDifferentName?name=张三&age=18
后台接收参数:
1234567@RequestMapping("/commonParamDifferentName")@ResponseBodypublic String commonParamDifferentName(String userName , int age){ System.out.println("普通参数传递 userName ==> "+userName); Syste ...