java学习
入门学习java的笔记
P1stic_Love
这个作者很懒,什么都没留下…
展开
-
Collection
Collection层次结构中的根接口 它提供更加具体的子接口如set实现 提供增 删 改 查 遍历 add 可以添加null 关于对象空间 假如arrays又10个空间 用了四个空间 那么size方法就是4 使用了clear方法,将四个空间置为null,size还是4 但是本身的10个空间还在 那么使用isEmpty就还是false ...原创 2020-08-11 17:54:27 · 86 阅读 · 0 评论 -
字符流buffer
为了效率,在字符流中引入缓冲流 缓冲流中定义了自己独有的方法 readLine和newLinew 按行进行操作 写入一个行分隔符 BufferedWriter void newLine() BufferedReader String readLine() 读取一行通过\n \t 来进行判断 若没有了 返回null 构造方法 和字节流的缓冲流构造方法一直,都需要一个底层的字符流对象 BufferedWriter(Writer out) BufferedReader(Reader in) 数据字节流 字节打.原创 2020-07-31 16:53:05 · 273 阅读 · 0 评论 -
File
因为在操作系统中,一切需要永久保存的数据,都是以文件的形式,存储在外部设备中,在java语言中,所有的文件或目录,都可以用file类对象来描述 File概述 file类是文件和目录,路径名的抽象表达式 一个File类对象,可以用来表示一个文件或者一个目录 一个File类对象,它表示的是一个路径名,所表示的那个文件或目录 抽象和物理存在相对, 三种构造方法 ...原创 2020-07-28 16:23:12 · 92 阅读 · 0 评论 -
hashcode clone
将任意大小的数据集合 通过hash映射的方法 到固定大小的数据集合 protected Object clone() 创建返回此对象的副本,返回的是指向这个对象的地址的地址 x.clone() != x 为true, x.clone().getClass() == x.getClass() 为true,表示是同一个类的两个对象,是同一个类 x.clone().equals(x) 为true,表示这两个对象相等,表示的是指向的对象 Cloneable接口里面什么都没有定义 我们将这种接口称之为空接口,该类原创 2020-07-24 16:09:41 · 106 阅读 · 0 评论 -
匿名内部类
当需要一个子类对象的时候,我们需要两步 定义子类 创建子类对象 匿名对象 new A(); 不带引用的对象 通常只使用一次这个类的某个方法的时候使用匿名内部类原创 2020-07-23 16:31:14 · 73 阅读 · 0 评论 -
内部类
内部类分为两种 成员位置内部类,类中方法体之外 局部位置内部类,类中方法体之内 访问特点 1.内部类可以直接访问外部类的成员,包括私有 2.外部类要访问内部类的成员,必须要创建对象 成员内部类 可以加private 可以加static 静态成员的内部类 作为外部类的静态成员,不依赖外部类的对象而存在 不需要先声明对象 局部内部类 只能在定义它的方法体中被访问到这个类 可以在局部内部类中访问到定义它的这个方法的局部变量 这个类可以访问到外部类的成员 ...原创 2020-07-23 14:40:46 · 63 阅读 · 0 评论 -
面向对象 接口
abstract 不能和final private static 共存: 因为子类需要去覆盖重写实现子类的抽象方法,有这几个前缀的无法实现覆盖 class 类名 impeement 接口 实质是继承 接口中只有抽象方法 jdk7及以前 接口不能直接实例化 接口中的成员变量 默认public static final 接口中的成员方法 只能是抽象方法 public abstract 所谓的接口的多重继承就是 接口可以同时继承多个接口,高级覆盖 一个类也可以实现多个接口 class xx extendx x原创 2020-07-23 10:16:46 · 85 阅读 · 0 评论 -
抽象
抽象类不能直接实例化 抽象类的子类任然可以是抽象类 只要子类没有完全override所有的抽象方法,就仍然是抽象类 抽象类中的成员: 成员变量,和普通类一样 构造方法,和普通类一样 成员方法,既可以包含抽象方法,也可以有普通方法 为什么抽象类不能实例化还可以定义构造方法 因为父类中也有成员变量,子类初始化的时候必须要初始化父类的成员变量,所以需要父类也有构造方法 下图是显示的构造方法,在子类中写个super将值传进去即可b ...原创 2020-07-21 19:57:38 · 98 阅读 · 0 评论 -
多态
多态,同一个对象的行为,不同条件,表现不同的效果 实现多态的三个条件 继承 方法覆盖 父类引用指向子类实例(对象) 成员变量 编译看左边,运行看左边,也就是引用类型 编译看左边,因为需要通过引用变量的值也就是地址去堆中的去操作 人看电视用遥控器,我们使用电视机的功能被遥控器所限制 每一个new都是披上了父类的马甲,所以具有父类的外貌特征,所以是拥有属性 成员方法 编译看左边,运行看右边,也就是引用变量实际指向的对象类型 运行结果,由于多态指向了实际的对象方法 多态的弊端 无法通过父类引用使用子类独有的方原创 2020-07-21 17:28:18 · 80 阅读 · 0 评论 -
java代码块
定义 {}括起来的就是代码块 根据位置和声明的不同有局部,构造,静态,同步代码块 不管什么代码块,我们都需要知道其声明方式和执行时机 局部代码块 局部代码块在方法中出现,这导致了它的生命周期仅限于这个方法,能尽早的释放,提高内存的利用率,甚至不用等待这个方法都周期结束,只要括号内运行完就结束 在嵌套的代码块中,不能够定义同名的局部变量,这个局部变量稍微有点区别,但是如果是两个独立的代码块,那么可以同名 public void localBlock(){ //这就是局部代码块原创 2020-07-18 11:29:16 · 81 阅读 · 0 评论 -
java对象
先引出数据类型的定义: 一个数据集合和基于这个数据集合的一组操作:int 通过类定义可以发现: 成员变量 成员方法 对应于数据类型的定义: 成员变量–>数据集合 成员方法–>基于数据集合的一组操作 综上类就是一种自定义的数据类型,和int等基本数据类型不同的地方在于,他们是jvm天生就认识的,而自定义的类,即自定义的数据类型,jvm默认并不认识。 可以直接写:int a; ...原创 2020-07-18 10:06:04 · 83 阅读 · 0 评论 -
动态代理
动态代理和静态代理角色一样 动态代理的代理类是动态生成的,不是我们直接写好的 动态代理的实现机制可以分为两大类:基于接口的动态代理;基于类的动态代理 动态代理 基于接口–JDK动态代理 基于雷–cglib java字节码实现 需要了解的两个类 Proxy:代理 Invokation:调用处理程序 ...原创 2020-06-11 08:19:44 · 113 阅读 · 0 评论 -
使用注解开发
bean 属性如何注入 衍生的注解 自动装配注解 作用域 小结 在使用Spring4之后,要使用注解开发,必须要保证aop包的导入仪 使用注解需要岛屿context约束,这在上一篇文章有提到 使用这个可以扫面路径下所有的注解,成为component的一个组件 <context:component-scan base-package="com.kuang"/> 属性如何注入 @Component 等价于 <bean id="name" class="com.kuang.pojo.Use.原创 2020-06-08 16:20:13 · 136 阅读 · 0 评论 -
Spring注解
@Autowired 直接在属性上使用即可,也可以在set方式上使用! 使用Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC(容器)中存在且符合bytype 可以设置一个required,如果为false,说明这个对象可以为Null,否则不允许为空 @Autowired(required = false) @Nullable 字段被标记了这个注解,说明了这个字段可以为null @Qualifier 如果@Autowired自动装配环境比较复杂,自动装配无法通过一个注解来完原创 2020-06-08 11:54:15 · 82 阅读 · 0 评论 -
Mybatis的增删改查
CRUD namespace namespace的包名要和Dao/Mapper名字一致 select id:就是和namespce中的方法对应的 resultType:Sql语句执行的返回值 parameterType 参数的类型 使用mybatis的流程 通过MybatisUtils来获得一个sqlSession sqlSession通过getMapper这个方法来获得userMapper这个接口的class对象,由此可以操作这个接口 在UserMapper.xml中配置select原创 2020-06-08 09:23:51 · 77 阅读 · 0 评论 -
IOC笔记
IOC创建对象的方式 默认的是时候无参构造创建对象,默认! 假如我们有了有参构造,则不能直接使用无参构造的方式去配置Bean.xml 方法一: 方法二:基础数据类型使用int,引用类型使用包,但是如果有两个引用类型的,如两个String就会很麻烦,不建议使用 方式三最好 关于加载 无论是否使用了bean里面的东西,bean里面的东西都会被加载,注册的一瞬间就已经被spring实例化了 换句话说在配置文件加载的时候,容器中管理的对象就已经实例化了 import 这个import,一般用于团队开发使用,原创 2020-06-07 11:21:39 · 67 阅读 · 0 评论 -
初次使用Mybatis的问题
没有在mapper注册 代码在执行的时候,Mybatis根本不知道有Mapper.xml这个文件。所以需要在mybatis-config.xml中注册 <mappers> <mapper resource="/com/kuang/dao/UserMapper.xml"/> </mappers> 初始化异常失败 在注册了之后发现运行仍然失败,可以发现找不到UserMapper.xml这个文件 打开target目录可以发现并没有生成这个xml 听狂原创 2020-06-05 11:47:57 · 69 阅读 · 0 评论 -
注解和反射
反射 反射相关的主要API java.lang.Class: 代表一个类 java.lang.reflect.Method: 代表类的方法 java.lang.reflect.Field: 代表类的成员变量 java.lang.reflect.Constructor: 代表类的构造器 使用Class c1 = Class.forName("com.kuang.reflection.User");来通过反射获得反射出来的class对象 //测试 public class Test02 { public原创 2020-06-05 11:43:40 · 84 阅读 · 0 评论 -
java学习笔记-内存划分
java的内容需要划分成为5个部分 1.栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中进行 2.堆(Heap):凡是new出来的东西,都在堆当中堆内存里面的东西都有一个地址值:16进制。堆内存里面的数据,都有默认值,规则: 整数:0 浮点数:0.0 字符:“\u0000" 布尔:false 引用:null 3.方法区(Method Area):存储.class相关的信息,包...原创 2020-06-04 11:14:30 · 86 阅读 · 0 评论 -
如何使用thymeleaf复用代码
使用fragment定义想要复用的代码段 <nav class="col-md-2 d-none d-md-block bg-light sidebar" th:fragment="sidebar"> 然后使用insert插入 <div th:insert="~{dashboard::sidebar}"></div>原创 2020-06-04 08:13:40 · 859 阅读 · 0 评论 -
如何使用登录拦截器
先在config目录下创建一个LoginHandlerInterceptor 因为拦截器需要用户的session来证明是否登录,所以需要在LoginController里面添加session,设置一个session名字叫做loginUser,username是要保存的对象 得到loginUser,判断是否为空,若不为空就通过,若为空就提示信息,这里判断是否为空的使用的LoginController里面的msg,这个msg只有登陆失败才会产生,与该判断条件吻合。提示信息之后跳转到/index.html p原创 2020-06-02 16:26:09 · 313 阅读 · 0 评论 -
如何更改网页跳转之后的链接
//具体的业务:判断用户密码是否正确 if(!StringUtils.isEmpty(username) && "123456".equals(password)){ return "dashboard"; //返回dashboard.html }else { //通过Model来告诉用户登陆失败 model.addAttribute("msg","用户名或者密码错误");原创 2020-06-02 11:03:22 · 938 阅读 · 0 评论 -
SpringBoot Web开发
自动装配 springboot xxxAotuConfiguration: 向容器中自动配置组件 xxxProperties:自动配置类,装配配置文件中自定义的一些内容 要解决的问题 导入静态资源 首页 jsp,模板引擎Thymeleaf 装配扩展SpringMVC 增删改查 静态资源的存储 默认可以放在resources目录下的三个目录中,这是映射在localhost:8080/** 优先级从大到小依次是resources/static/public 但是如果在application.prope原创 2020-06-01 15:13:20 · 113 阅读 · 0 评论 -
如何激活多套环境
使用.Properties进行配置 对于多种环境,在application.yaml中进行配置即可 使用原创 2020-06-01 10:15:00 · 99 阅读 · 0 评论 -
jsr303
在相关的类中使用@Validated开启校验,使用@Email对数据进行校验,可以不填值,填了会报相应的信息原创 2020-06-01 09:30:43 · 102 阅读 · 0 评论 -
JSP
什么是JSP Java Server Pages:Java服务器端页面,也和Servlet一样用于动态Web技术。 最大的特点: 就像是写html html只给用户提供静态数据 JSP页面可以嵌入JAVA代码,为用户提供动态数据 原理 代码层面没有问题 服务器内部工作,Tomcat中有一个work目录。在IDEA中使用Tomcat的会在IDEA中 JSP本质上就是一个servlet ...原创 2020-05-25 12:38:54 · 78 阅读 · 0 评论 -
Session
什么是Session 服务器会给每一个用户(浏览器)创建一个Session对象 一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在 用户登录之后,整个网站它都可以访问了,一个网站的各种各样的页面都可以。–>保存用户的信息,保存购物车的信息 Session和Cookie的区别 Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个) Session把用户的数据写到用户独占的session中,在服务器端保存(保存重要信息,减少服务器浪费) Session由服原创 2020-05-24 22:58:26 · 60 阅读 · 0 评论 -
Cookie的理解
public class CookieDemo01 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //服务器告诉你,你来的时间,把这个时间封装成信件,下次来就能知道是谁 //解决中文乱码 req.setChar原创 2020-05-24 21:47:39 · 98 阅读 · 0 评论 -
servlet
Servlet简介 Servlet是sun公司开发动态web的一种技术 sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤 编写一个类,实现Servlet接口 把开发好的java类部署到web服务器中 把实现了Servlet接口的Java程序叫做,Servlet HelloServlet Servlet接口Sun公司有两个默认的实现类,HttpServlet 1.构建一个普通maven的项目,删掉里面src目录,以后学习就在这个项目内进行原创 2020-05-24 21:10:15 · 87 阅读 · 0 评论 -
java中对象和对象变量的理解
举个例子 Date deadline = new Date(); 对于程序报错会提到的需要初始化这个变量,是因为deadline这个变量它并没有储存一个具体的值,它仅仅引用了一个对象。所通俗一点的意思就是deadline这个变量只是告诉系统变量在哪里,引用即是地址。对于这个例子来说就是deadline告诉系统new Date()在哪里,然后就可以使用了。 假如有一个已经引用对象的变量birthd...原创 2020-05-02 18:52:40 · 534 阅读 · 0 评论