Java基础知识
文章平均质量分 77
Java基础知识
凌凌小博客
一直,一直,一直努力的用汗水去浇灌梦想开出奇迹!
为什么要努力?
因为我是凌王啊!!!
展开
-
C++与Java数组的申明创建初始化的区别
C++与Java数组的申明创建初始化的区别复习Java数组知识的时候,发现数组的申明、创建、初始化在Java和C++的不同之处,特此记录。Java中,数组的申明 int [] array; //如果现在对array进行初始化, array1[0]=1; 将会报错,提示array还未进行初始化,其实是还未进行内存分配 注原创 2017-06-29 21:43:23 · 617 阅读 · 0 评论 -
Java动态代理和静态代理
一、概念 代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:在编译的时...原创 2018-08-02 16:23:43 · 216 阅读 · 0 评论 -
初始化模块
初始化模块可以与构造方法一起用于初始化对象。初始化模块是用一个大括号括住的语句块,它的作用是,当多个构造方法共享一段代码时,可以提取共享代码放到初始化模块来简化类,调用时期是在当类被载入时,先执行静态初始化模块,再执行实例化模块,然后执行构造方法。1.第一次使用类时,需要装入类,装入分为两个阶段 1.1装入父类。在装入任何类之前,如果父类没有装入,必须装入父类。这是一个递归的过程,直到继...原创 2018-05-18 21:20:07 · 2213 阅读 · 0 评论 -
一、面试准备--接口和抽象类有什么区别
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。首先,看一下两者的定义:1、抽象类抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。[public] abstract class ClassName { abstract void fun();}...原创 2018-05-06 17:45:16 · 1296 阅读 · 0 评论 -
Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)
今天看设计模式-模板方法模式时发现一个实现父类调用子类方法的效果的代码,不理解其中的原理,然后询问大佬之后,发现这原来是动态绑定的知识,所以恶补了一下。package com.practice;/** * 父类调用子类的方法 * * @author ling * @since 2018年09月11日 */public class SuperClassInvokeMeth...原创 2018-09-11 15:48:49 · 386 阅读 · 0 评论 -
理解String 及 String.intern()的区别
一、String设计的初衷:Java中的String被设计成不可变的,出于以下几点考虑:1. 字符串常量池的需要。字符串常量池的诞生是为了提升效率和减少内存分配。可以说我们编程有百分之八十的时间在处理字符串,而处理的字符串中有很大概率会出现重复的情况。正因为String的不可变性,常量池很容易被管理和优化。2. 安全性考虑。正因为使用字符串的场景如此之多,所以设计成不可变可以有效的防止...原创 2018-10-06 10:56:07 · 529 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
结论:1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好...转载 2018-09-30 08:50:02 · 136 阅读 · 0 评论 -
Java 序列化Serializable详解
Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB、RPC远程调用等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。...原创 2018-12-09 12:39:21 · 371 阅读 · 0 评论 -
Tomcat 类加载器之为何违背双亲委派模型
原文来自:https://juejin.im/post/5a59f2296fb9a01ca871eb8c今天来研究类加载器。我们分为4个部分来探讨:什么是类加载机制?什么是双亲委任模型?如何破坏双亲委任模型?Tomcat 的类加载器是怎么设计的?我想,在研究tomcat 类加载之前,我们复习一下或者说巩固一下java 默认的类加载器。楼主以前对类加载也是懵懵懂懂,借此机会,也...转载 2019-03-06 10:22:18 · 307 阅读 · 0 评论 -
hashmap相关的问题
hashmap相关的问题hashmap源码 https://blog.csdn.net/ooo123lll/article/details/81103234#335-gethashmap扩容、为什么是2n(2的n次方)扩容 https://www.cnblogs.com/williamjie/p/9358291.html扩容或者初始化容量时,都是以2的n次方扩容,这主要原因是,hashma...原创 2019-03-19 22:09:50 · 311 阅读 · 0 评论 -
java反射原理
一、反射机制在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态(在运行时)获取类的信息以及动态调用对象的方法的功能称为java语言的反射机制。简单来说,就是Java对每一个类和类中的所有成员都进行了封装,这样每个类都有一个与之对应的Class对象(编译之后产生的class对象),通过这个对象可以直接访问类中的所有成员。...原创 2018-07-31 10:32:46 · 4992 阅读 · 1 评论 -
java函数(方法)中的值传递和引用传递问题
java函数(方法)中的值传递和引用传递问题我想很多人如果从c/c++转向java开发的,并且有些项目经验的,对于函数中参数传递方式都会先入为主的,将c/c++那套分析参数传递方式搬过来理解java的参数传递方式,而且大部分都能解释的通,恩,开始我也是这么认为的,但后面看面试题,发现原来我一直错了,java中只存在值传递,只存在值传递!!!其实并不存在引用传递,因为java中是没有指针的。 ...原创 2018-03-26 21:31:56 · 14909 阅读 · 3 评论 -
C++ 对象和实例的区别,以及用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高转载 2017-06-20 11:04:30 · 676 阅读 · 0 评论 -
java中extends与implements的区别
java中extends与implements的区别浅谈1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用2.extends是继承父类原创 2017-03-03 21:01:48 · 274 阅读 · 0 评论 -
Java中的private、protected、public和default的区别
Java中的private、protected、public和default的区别(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。(2)对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的转载 2017-02-28 00:06:24 · 342 阅读 · 0 评论 -
Java中主类中定义方法加static和不加static的区别
Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用)/* 3 知识点:1.Getter and Setter 的应用 4 2.局部变量与成员变量(也可叫做全局变量) 5 3.Static关键字的用法 6 a.成员变量被static修饰后的所有类的原创 2017-02-27 23:53:02 · 15362 阅读 · 3 评论 -
Super与this的区别
子类的构造函数如果要引用super的话,必须把super放在函数的首位. 1 class Base { 2 3 Base() { 4 5 System.out.println("Base"); 6 7 } 8 9 }10 11 12 13 public class Checket extends Base {14 15 Checket(原创 2017-02-27 23:41:50 · 258 阅读 · 0 评论 -
javaweb开发,super的用法
Javasuper关键字:super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数,贴段代码先class Tiger { 2 int age; // 年龄 3 int hight; // 身体高度 4 5 public Tiger() { 6 print(); 7 }原创 2017-01-25 18:02:40 · 660 阅读 · 0 评论 -
Java的sychronized锁中对象锁和类锁的区别
Java的sychronized锁中对象锁和类锁的区别 1. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内针对该对象的操作只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 2. 然而,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 3. 尤...转载 2018-03-16 10:52:27 · 2076 阅读 · 0 评论 -
堆内存(heap)和栈内存(stack)区别
栈内存: 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 栈内存主要存放的是基本类型类型的数据 如、( int, short, long, byte, float, double, boolean, char) 和对象句柄。 并没有有String基本类型、在栈内存的数据的大小及生存周期是必须确定的、其优点是寄存速度快、栈数据可以共享、缺点是数据固定、不够灵活...转载 2018-03-11 20:06:59 · 2877 阅读 · 0 评论 -
java类的三种初始化块的执行顺序
java类的三种初始化块的执行顺序java里初始化一个类的对象,通过初始化块或者构造方法进行数据赋值。与其相关的执行代码有这么几种:静态初始化块初始化块构造方法静态初始化块静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。非静态初始化块非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。构造方法在每次初始化实例对象时调用。重点:执行...原创 2018-03-13 21:47:52 · 5320 阅读 · 0 评论