#Java
文章平均质量分 65
榴莲男孩
这个作者很懒,什么都没留下…
展开
-
try、catch、finally中return的问题
try、catch、finally中return的问题一、try中有return,finally有returnpublic int test(){ int i =0; try{ i = 2; return i; }catch(Exception e){ System.out.println(e); }finally{ i = 3; return i;// i=3 }}返回值为3原创 2021-09-08 15:50:43 · 349 阅读 · 0 评论 -
JVM类加载器
JVM类加载器类加载器:引导类加载器、扩展类加载器、系统/应用类加载器按JVM官方进行分类(两种划分方法)按类划分引导类加载器(Bootstrap ClassLoader)自定义类加载器(直接或间接继承ClassLoader类的类加载器)按实现语言划分Bootstrap ClassLoader (C++、C实现的)其他类加载器(Java实现的)引导类加载器(BootStrap ClassLoader)引导类加载器是使用C++和C实现的,嵌套在JVM内部主要用于加载Java核原创 2021-09-05 21:01:40 · 156 阅读 · 0 评论 -
JVM类的加载过程
JVM类的加载过程从全局维度观察类的加载过程类的加载过程一般可以划分为:加载阶段 Loading、链接阶段 Linking、初始化阶段 InitializationIDEA安装插件jclasslib bytecode viewer即可查看反编译后的字节码文件加载阶段就是如何获取字节码文件的阶段通过一个类的权限定名获取定义此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构(元数据)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的原创 2021-09-05 17:12:38 · 190 阅读 · 0 评论 -
零基础——Shiro整合SpringBoot+Mybatis-01基本操作
Shiro整合springboot案例环境准备案例介绍本案例使用shiro+SpringBoot+mybatis进行完成,未使用jsp或者thymeleaf等模板引擎,单纯使用json作为数据传送和返回点击此处看验证结果主要验证shiro作为权限管理的相关过程其中包括的相关知识有Mybatis中mapper的书写springmvcMd5加密过程中加盐salt和散列使用SSM相关过程等相关依赖pom.xml<?xml version="1.0" encoding="UTF-原创 2021-07-31 17:48:37 · 251 阅读 · 1 评论 -
原型模型—Java的浅克隆和深克隆
原型模式原型模式(Prototype Pattern)是一种对象创建型模式,用原型实例制定创建对象的种类,并且通过复制这些原型创建新的对象。在Java中,用 克隆 实现了原型模式浅克隆被复制对象的常量和引用对象都与源对象相同浅克隆仅复制当前对象,而不复制对象内的成员对象(即成员对象均指向源成员对象)代码实现:Teacher类:@Data // lombok 自动生成get和set@AllArgsConstructor// lombok 自动生成构造函数public class Tea原创 2021-04-20 20:47:10 · 131 阅读 · 0 评论 -
java中String类型对象在克隆时候的特殊性
查看原码可知String类型被final所修饰,不可对它的实例进行修改即:String类型的实例是一个常量,跟八大基本类型 int 、double等一样但根据我们所学到的,String是一个引用类型啊,为什么是一个常量呢?这就跟String实例化的过程相关String在实例化时,一旦初始化就再不能进行修改若是收到了修改, **Java处理机制会重新开辟一个新的地址空间**存放这个新的值,然后再把原来的对象指向新的地址。由此则衍生出了一个可修改的字符串类型——StringBuffer因此,在原创 2021-04-20 20:44:29 · 424 阅读 · 0 评论 -
Spring-Mybatis整合
Spring-Mybatis官网地址:http://mybatis.org/spring/zh/index.html一、整合基本配置文件目录结构:1. 导入依赖<dependencies> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupI原创 2021-03-29 15:01:11 · 82 阅读 · 0 评论 -
Spring @Component 找不到bean | 大小写问题
使用@Component注解类时,容易出现以下错误:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean namedException in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userserviceImpl' available at org.springfra原创 2021-03-24 15:32:27 · 3210 阅读 · 0 评论 -
java基础——类和抽象类和接口的异同点
类和抽象类 异同点:相同之处:包含成员变量、局部变量、类变量包含各类具体实现的方法具有构造方法、可继承和被继承、可实例化接口不同点:类:类可以被实例化类没有抽象方法子类可以任意重写父类方法抽象类:抽象类不能被实例化有抽象方法,抽象方法没有主体、只有方法名,不能为静态子类必须实现父类的抽象方法、否则子类也是抽象类具有抽象方法的类必定是抽象类、抽象类可以没有抽象方法接口和抽象类 异同点:相同之处:都不能直接被实例化,接口需要被实现、抽象类需要被继承存在原创 2021-03-17 00:32:49 · 220 阅读 · 0 评论 -
Java基础——注解与反射(反射的多种实例及机制)
注解和反射注解 Annotation定义Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc(注释) 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。组成部分:Annotation.javapackage java.lang.annotation;public i原创 2020-09-29 15:31:22 · 296 阅读 · 1 评论 -
Java基础——多线程简述
开启多线程的两种方法继承Thread类子类继承Thread类(重写run()方法)启动线程:子类对象.start()由于Java是单继承,不建议使用继承Thread的方法进行实现多线程实现Runnable接口实现Runnable接口(重写run()方法)启动线程:将该接口的实现类(你正在使用的类)作为参数传入Thread对象后,使用Thread对象.start()进行启动避免了Java的单继承性,方便同一个对象被多个线程使用的情况示例:public class Test1原创 2020-09-24 22:03:29 · 209 阅读 · 0 评论 -
Java基础——IO流(字节流、字符流的简单使用)
IO流概述IO包括输入和输出流输入流指的是将数据以字符或字节形式从外部媒介文件、数据库等读取到内存中。所以也分为字符输入流和字节输入流。输出流指的是将内存中的数据写入外部媒介,也分为了字符输出流和字节输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。IO流的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流。输出流 :把数据从内存 中写出到其他设备上的流。格局数据的类型原创 2020-08-18 16:26:32 · 197 阅读 · 0 评论 -
Java学习(不断更新中)
Java学习目录Java学习JavaSEJava基础多线程注解和反射MySQL数据库基础语法基本操作数据库设计JDBCSQL注入数据库连接池JavaWeb开发SSM框架JavaSEJava基础多线程注解和反射MySQL数据库基础语法基本操作数据库设计JDBCSQL注入数据库连接池JavaWeb开发未来继续学习SSM框架未来继续学习...原创 2020-08-17 00:10:53 · 78 阅读 · 0 评论 -
Java基础——Lambda表达式及四种内置函数式接口
Lambda表达式概述Lambda表达式是JAVA8的新特性,使用Lambda表达式可以对一个函数式接口进行快速的实现(因此,lambda也可以看做是一个匿名函数。使用注意:JAVA的版本必须为JAVA8及以上并非所有接口都可以用Lambda表达式进行实现,Lambda表达式只适用于 接口定义的抽象方法只有一个(函数式接口)新特性:在JAVA8中,对接口内方法新增了一个修饰符——default。这使得被该修饰符修饰的方法可以在接口中得到默认实现@FunctionalInterface用原创 2020-08-16 23:44:32 · 953 阅读 · 0 评论 -
Java基础——集合的排序(Collections类和Compare比较器的使用)
Collections简介及常用功能java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list):打乱集合顺序。public static <T> void sort(List<原创 2020-08-16 23:41:44 · 1241 阅读 · 1 评论 -
Java基础——文件的简单操作(文件、文件夹遍历及检索---用Flie类实现)
File类概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。在Java中,File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法记住三个单词:file 文件directory 文件夹/目录path 路径记住四个静态变量:String pathSeparator 路径分割字符串char pathSeparatorChar 路径分割符windows:分号Linux:冒号String原创 2020-08-14 23:38:44 · 251 阅读 · 0 评论 -
Java基础——Map接口及其实现类(两种遍历方法)
Map接口概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理解为原创 2020-08-12 23:04:19 · 246 阅读 · 0 评论 -
Java基础——List、Set接口简介
Collection有几个常用子类(java.util.List、java.util.Set)List 接口List接口介绍java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:它是一个元素存取有原创 2020-08-11 23:33:40 · 362 阅读 · 0 评论 -
Java基础——红黑树的产生
红黑树是如何产生的呢?我们先来看看红黑树的亲戚二叉排序树又叫二叉查找树和二叉搜索树定义:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树;没有键值相等的结点。查找算法与二分法类似,将查找的关键字与树结点进行对比,大的往右小的往左,相同则成功查找。步骤:若根结点的关键字值等于查找的关键字,成功。否则,若小于根结点的关键字值,递归查左子树。若大于根结点的关键字值,递归查右子树。若子原创 2020-08-06 11:50:13 · 187 阅读 · 0 评论 -
Java数据结构——堆栈、队列、数组、链表、数组、红黑树、哈希表
数据存储的常用结构有:栈、队列、数组、链表和红黑树。栈栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。简单的说:采用该结构的集合,对元素的存取有如下的特点先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的子弹。栈的入口、出口的都是栈的顶端位置。这里两个名原创 2020-08-04 16:49:48 · 643 阅读 · 0 评论 -
Java基础——集合(Collection、迭代器、for each循环)
Collection集合概述集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢?与数组的区别:数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。集合框架常用功能Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操原创 2020-07-31 18:00:23 · 351 阅读 · 0 评论 -
Java基础——构造过程解析
继承的构造首先, 类初始化时,继承链上(包括当前类)的全部静态代码块最 先执行一次.之后不再执行,除非程序又重启.(按链序和声明序且仅1次)其次,创建子类实例时,会先进行父类的构造(要么显式进行, 要么隐式用super()进行)最后,类的构造顺序:构造代码块(按声明序)→构造方法总体:父类静态块→子类静态块→父类构造块→父类构造子→ 子类构造块→子类构造子class C { static { System.out.println("C父类静态块"); }}class A ext原创 2020-07-30 21:46:51 · 238 阅读 · 0 评论 -
Java基础——多态(继承多态、接口多态)
多态多态的概念定义多态 polymorphism :对象根据所接收的消息而做出动作,同样的消息为不同的对象接收时可导致完全不同的行动,该现象 称为多态性静态绑定编译时多态 指在编译程序时就根据调用方法提供的信息,把它所对应的具体方法确定下来。即 在编译时就把调用方法名与具体方法绑定在一起方法重载动态绑定运行时多态 指在编译程序时还不能确定方法调用所对应的具体方法,只有在程序运行过程中才能确定具体的方法。 即 在程序运行时才把调用方法名与具体方法绑定在一起继承多态、接口多态为何需要多态?原创 2020-07-25 16:39:10 · 2701 阅读 · 0 评论 -
Java数据结构——稀疏矩阵(数组)的意义与转变方法
Java基础——稀疏矩阵(数组)的意义与转变方法定义 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。举例说明现有一个二维数组,其值如下所示0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 5 0 由于数组中有效数字(非0)与无效数组比例较小,存储空间利用率低,因此使用稀疏数组原创 2020-07-19 17:21:55 · 254 阅读 · 0 评论 -
Java基础——可变参数
可变参数定义: 在方法定义形参时,可通过使用定义可变参数的形式使得参数的个数可变。注意:书写规范 定义好形参的数据类型后在后面 + … +形参名称 (加不加空格都行)public int Example1(int... Num1){ 略;}可变参数只能出现在形参列表的最后// 正确写法:public double Example2(int Num1,double... Num2){ 略;}// 错误写法:public double Example2(int原创 2020-07-17 17:32:05 · 125 阅读 · 0 评论 -
Java基础——数据类型
数据类型基本类型基本信息类型默认值字节最大值最小值byte0256bit128-128short02B-3276832767int04B-21474836482147483647long0L8B-92233720368547758089223372036854775807float0.0f4B1.4E-453.4028235E38double0.0d8B4.9E-3241.7976931348623原创 2020-07-13 21:40:49 · 97 阅读 · 0 评论 -
Java背景基础
Java 背景java的诞生1972年C语言问世1982年C++问世1995年java诞生java的特性优点与C语言语法相似,容易上手没有指针、没有内存管理真正的可移植性,一次编写、到处运行面向对象、类型安全拥有高质量的类库分布式、多线程、动态性、健壮性java的三大版本及主要应用java2 SE 标准版(J2SE) (桌面程序,控制台开发)java2 ME 移动版 (J2ME)(嵌入式开发,手机和小家电;已淘汰)java2 EE 企业版 (J2EE) (WEB开发,服务原创 2020-07-12 15:41:27 · 162 阅读 · 0 评论