Java基础
酆都小菜鬼
这个作者很懒,什么都没留下…
展开
-
HashMap相关知识点和面试题
1.为什么HashMap要用数组加链表来实现?2.HashMap的put方法的大致实现流程?3.HashMap中数组的大小有什么特点?4.HashMap中数组的大小为什么要是2的幂次方数?5.HashMap中是如何计算数组下标的?6.HashMap是如何进行扩容的?1.8和1.7有什么不一样?7.新元素计算下标有什么不一样?8.多线程情况下HashMap1.7在扩容时为什么会出现线程不安全?9.HashMap中的modcount表示什么什么意思?10.HashMap为什么会出现Concur原创 2022-02-24 21:41:17 · 465 阅读 · 0 评论 -
常见的时间复杂度和复杂度如何分析
算法和数据结构是相辅相成的,数据结构是为算法服务的,算法要作用在特定的数据结构上一.如何分析时间复杂度大O复杂度表示法:它并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势。也叫作'渐进时间复杂度',简称时间复杂度。表示算法的执行时间与数据规模之间的增长关系**时间复杂度分析方式:**1.只关注循环执行次数最多的一段代码如下 int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++原创 2021-05-03 23:47:11 · 1926 阅读 · 0 评论 -
InnoDB和MyISAM对比
InnoDB和MyISAM是使用MySQL时最常用的两种引擎类型 - 事务和外键: 1.InnoDB支持事务和外键,具有安全性和完整性,适合大量insert或update操作 2.MyISAM不支持事务和外键,它提供存储和检索,适合大量的select查询操作 - 锁机制 1.InnoDB支持行级锁,锁定制定记录,基于锁 2.MyISAM支持表级锁,锁定整张表 - 索引结构 1.InnoDB使用聚集索引(聚族索引),索引和记录在一起存储,既缓存索引,也缓存记录 2.MyISAM.原创 2021-05-03 17:55:13 · 216 阅读 · 0 评论 -
面向对象的四大特性和五大基本原则
1.面向对象的四大特性1.封装是保证软件部件具有优良的模块性的基础,封装的目标就是保证软件部件的'高内聚,低耦合'防止程序相互依赖性而带来的变动影响。'优点' 1)提高代码的复用性 2)隐藏了实现的细节,对外提供一个公共的访问方式 3)提高了安全性2.继承在JAVA中,类的继承是指在一个现有类的基础上,构建一个新的类,构建的新类,被称为子类,现有类被称为父类。 '优点': 1.继承可以提高代码的复用性 2.继承让类和类之间产生了关系,提供了多态的前提 '缺点' 1.类和类之原创 2021-04-26 11:09:07 · 1288 阅读 · 0 评论 -
String常见构造方法和区别对比
1.常见的四种方法2.构造方法和双引号创建对象的区别注意:==号做比较基本类型数据:比较的是具体的值引用数据类型:比较地址值以" "方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序中出现几次,JVM都只会建立一个String对象,并在字符串常量池中维护字符串常量池:当使用双引号创建字符串对象的时候,系统会检查字符串是否在字符串常量池存在,不存在就创建,存在就直接复用。2.通过构造方法创建的字符串对象,在堆内存中存储...原创 2021-04-24 16:01:58 · 364 阅读 · 0 评论 -
数组、链表、跳表的原理和实现,以及三者的时间复杂度、空间复杂度比较
1原创 2021-04-23 00:15:31 · 1047 阅读 · 1 评论 -
JVM的内存模型和案例图,类加载顺序
1原创 2021-04-22 21:29:00 · 157 阅读 · 0 评论 -
实现JAVA快排算法
/** 快排SortTest01 */public class SortTest01 { public static void main(String[] args) { /** 1.快排算法中,每一次递归以第一个数为基准数,找到数组中所有比基数小的,再找到所有比基准数打的。小的全部放左边,大的全部放右边,确定基准数的正确位置 */ /* *步骤 * 1.从右边开始找比基数小的 * 2.从左边开始找比基数大的 arrys[left] * 3.原创 2021-04-13 23:30:19 · 138 阅读 · 2 评论 -
遍历map的几种方法
案例: Map<String,String> map=new HashMap<String,String>(); map.put("username", "qq"); map.put("passWord", "123"); map.put("userID", "1"); map.put("email", "qq@qq.com"); 第一种方式:map.entrySet() for(Map.Entry<.原创 2021-04-13 20:02:03 · 130 阅读 · 0 评论 -
强引用、软引用、弱引用、幻想引用有什么区别?应用场景是什么
在 Java 中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握 Java 对象生命周期和 JVM 内部相关机制非常有帮助。不同的引用类型:主要体现的是对象不同观点可达性(reachable)和垃圾收集的影响1.强引用就是常见普通对象引用。只要强引用指向一个对象,就表示这个'对象'还活着。垃圾收集器就不会碰这个对象。对于一个普通对象而言,如果没有其它的引用关系,只要超过了引用作用域或显式地将相应(强)引用赋值为null。这个对象就可以被回...原创 2021-04-13 14:54:12 · 152 阅读 · 0 评论 -
MySQL经典练习57道(持续更新,提供答案和部分测试数据)
1.查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天数据表代码:CREATE TABLE employees (emp_no int(11) NOT NULL, – ‘员工编号’birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_date date NOT NULL,P原创 2020-06-27 21:25:42 · 286 阅读 · 0 评论 -
final、finally、 finalize有什么不同?
1.从语法和使用实践角度出发final 可以用来修饰类、方法、变量,分别有不同的意义。final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)finally则是Java保证重点代码一定要被执行的一种机制,我们可以使用try-finally 或者try-catch-finally 来进行类似关闭JDBC连接、保证unlock锁等动作finalize 是基础类 java.lang.Object 的一个方法,它的设原创 2021-04-11 11:04:14 · 102 阅读 · 0 评论 -
什么是双亲委派机制
JVM中类加载机制:当某个类加载器需要加载某个.class⽂件时,它⾸先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,⾃⼰才会去加载这个类。双亲委派机制的作⽤ 1. 防⽌重复加载同⼀个.class。通过委托去向上⾯问⼀问,加载过了,就不⽤再加载⼀遍。保证数据 安全。 2. 保证核⼼.class不能被篡改。通过委托⽅式,不会去篡改核⼼.class,即使篡改也不会去加载,即使 加载也不会是同⼀个.class对象了。不同的加载器加载同⼀个.class也不是同⼀个.原创 2021-03-08 10:41:10 · 108 阅读 · 0 评论 -
面试题:你对Java平台的理解?
JAVA特性:面向对象(封装,继承,多态)平台无关行(JVM运行.class文件)语言(泛型,Lambda)类库(集合,并发,网络,IO/NIO)Java采用的是解释和编译混合的模式。它首先通过javac将源码编译成字节码文件class.然后在运行的时候通过解释器或者JIT将字节码转换成最终的机器码。对于“一次编译,到处运行”的理解说的是Java语言跨平台的特性,Java的跨平台特性与Java虚拟机的存在密不可分,可在不同的环境中运行。比如说Windows平台和Linux平台都有相应的JD原创 2021-03-04 20:11:50 · 117 阅读 · 1 评论 -
java中,静态和动态方法的区别
主要区别如下:1.静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收2.非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。3.静态方法在初始化类时初始化,并分配内存;动态方法只有先创建类的实例对象后,才能调用动态方法4.静态方法实在类装载的时候就加载的,可以直接用类名调用,不必实例化。动态方法,是在由具体的类的对象的时候由对象调用的5.静态方法在访问本类的成员时,只容许访问静态成员(即静态成员变量和静态方法),而不容许访问实例成员变量和实例方法;实例方法则原创 2021-03-03 20:34:14 · 3594 阅读 · 1 评论