Java入门
肥胖的企鹅
这个作者很懒,什么都没留下…
展开
-
【转载】Servlet生命周期
原文链接:https://www.runoob.com/servlet/servlet-life-cycle.htmlServlet 生命周期Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:Servlet 通过调用 init () 方法进行初始化。 Servlet 调用 service() 方法来处理客户端的请求。 Serv...转载 2020-03-26 13:05:59 · 115 阅读 · 0 评论 -
静态方法特点
静态的内存空间是固定的,相对来说更省资源。创实例的创一个实例就要开辟一个新内存,耗费资源静态方法属于类所有,类实例化前即可使用;非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,...原创 2020-03-03 18:02:48 · 5142 阅读 · 0 评论 -
如何获取Class类对象
反射系列传送门 如何获取Class类对象(本篇) 详述反射中的构造方法 详述反射中的普通方法 详述反射中的属性什么是Class类Class类是Java 反射机制的入口,封装了一个类或接口的运行时信息,通过调用Class类的方法可以获取这些信息。如果将类看作一个对象,那...原创 2019-08-20 11:40:51 · 270 阅读 · 0 评论 -
详述线程(二)—— 线程常用方法
线程系列传送门: 详述线程(一)——了解线程 详述线程(二)—— 线程常用方法(本篇) 详述线程(三)—— 数据共享 详述线程(四)—— 线程协作1、join方法作用:执行该方法的线程进入阻塞状态,直到调用该方法的线程结束后再由阻塞转为就绪状态。注意:...原创 2019-08-23 19:20:41 · 201 阅读 · 0 评论 -
String类常用方法总结
1、subString(int beginindex)传入一个参数i,返回一个原字符串中从序号为i的字符开始到原字符串最后结束的字符串;该方法也可传入两个参数,第一个参数代表开始的字符(包含开始位置的字符),第二个参数代表结束的位置(但不包含结束位置的字符)。public class Test { public static void main(String[] args) {...原创 2019-08-14 22:34:12 · 197 阅读 · 0 评论 -
DBUtil实战(学生管理系统)
利用上篇博客创建的DBItil工具类中的方法(可参考:DBUtil数据库工具类),本篇博客将创建一个简易的学生管理系统实战import java.sql.ResultSet;import java.util.Scanner;public class Realize2 { static boolean flag = true; public static void ...原创 2019-08-14 17:19:17 · 210 阅读 · 0 评论 -
DBUtil数据库工具类
使用前提:使用本类中的方法需要定义一个函数式接口IRowMapper,如下:import java.sql.ResultSet;@FunctionalInterfacepublic interface IRowMapper { void rowMapper(ResultSet resultSet);}DBUtil源代码:import java.sql.Co...原创 2019-08-14 16:41:24 · 367 阅读 · 0 评论 -
详述throw与throws
引现有录入学生年龄系统如下:public class Student { private int age;//封装 public void setAge(int age) { if (age > 0 && age < 20) { this.age = age; }else { System.out.println("...原创 2019-08-07 20:33:20 · 295 阅读 · 0 评论 -
HashMap常用方法总结
引1、集合分支HashMap属于Map集合下的实现类,Map集合的分支图如下:2、Map集合概述Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。3、创建HashMap对象语法格式:HashMap<数据类型,数据类型> map ...原创 2019-08-09 22:52:21 · 5536 阅读 · 0 评论 -
详述异常处理方式及try-catch-finally的使用
接上篇博客:详述异常出现异常时根据实际情况往往有三种处理办法可供选择。包含:JVM自动处理、主动捕获(try-catch)解决以及主动抛出(throw)处理。一、JVM自动处理异常当程序出现运行时异常时,如果不主动对其做任何处理,则异常会最终在被JVM执行时处理。JVM处理方式为:立刻终止程序运行,同级代码不再执行,同时将异常信息、类型以及出错位置打印在控制台。例如pub...原创 2019-08-07 18:10:45 · 935 阅读 · 0 评论 -
分析ArrayList实现类中contains()方法底层代码
contains()方法是我们用于判断一个集合中是否含有某一元素的方法,那么作为ArrayList.util所提供的方法,它又是怎样实现的呢?本篇博客将深入contains()方法的底层代码,探究其实现原理。情形一:参数存在实例import java.util.ArrayList;public class Test { public static void main(S...原创 2019-08-09 17:54:47 · 856 阅读 · 2 评论 -
详述反射中的构造方法
反射系列传送门 如何获取Class类对象 详述反射中的构造方法(本篇) 详述反射中的普通方法 详述反射中的属性什么是反射?Java反射(Reflection)是一种新的操作类中成员变量、构造方法和普通方法的机制。为了实现对成员变量、构造方法和普通方法的操作,我们需要借...原创 2019-08-20 16:28:43 · 346 阅读 · 0 评论 -
详述线程(三)—— 数据共享
线程系列传送门: 详述线程(一)——了解线程 详述线程(二)—— 线程常用方法 详述线程(三)—— 数据共享(本篇) 详述线程(四)—— 线程协作并发运行线程中并发指一个时间段中多个线程都处于已启动但没有运行结束的状态。多个线程之间默认并发运行,这种运...原创 2019-08-24 18:49:59 · 163 阅读 · 0 评论 -
详述反射中的方法
反射系列传送门 如何获取Class类对象 详述反射中的构造方法 详述反射中的普通方法(本篇) 详述反射中的属性一、获取普通方法的实例化对象现有学生类如下:public class Student { public int doHomework(int a...原创 2019-08-20 17:04:20 · 349 阅读 · 0 评论 -
Java标识符
什么是标识符大家第一次见到标识符这个词的时候可能会有点陌生,其实标识符就是我们编程的时候使用的“名字“,Java中对包、类、方法、接口、变量、常量等命名的时候所用的字符序列就称为标识符。Java标识符的命名规则因为我们使用标识符的目的就是让计算机看懂,那么我们在命名标识符的时候就要遵守一定的规则,标识符才能被使用,那么一般来说,命名规则有以下几条:标识符由字母、数字、 “_”(下划线)、...原创 2019-05-26 12:56:33 · 254 阅读 · 1 评论 -
详述线程(一)——了解线程
线程系列传送门: 详述线程(一)——了解线程(本篇) 详述线程(二)—— 线程常用方法 详述线程(三)—— 数据共享 详述线程(四)—— 线程协作什么是程序程序(Program)是为实现特定目标或解决特定问题而用计算机语言(比如Java语言)编写的命令序列...原创 2019-08-23 12:23:24 · 177 阅读 · 0 评论 -
简述NIO
概念JDK1.4版本开始,JDK提供了新的IO操作API, NIO(即New IO)提供多路(non-blocking) 非阻塞式的高伸缩性网络I/O,从而提高了效率。NIO有三个重要组件:Channel、Buffer和Selector。BufferBuffer是一个抽象类,Buffer类型变量对应的对象代表一块缓冲区,ByteBuffer、CharBuffer、DoubleBuf...原创 2019-08-22 18:29:13 · 171 阅读 · 0 评论 -
总结几种IO流
一、字节流字节流用于处理以字节为单位的二进制文件(如音乐、图片、视频等),在传输数据时以字节(Byte)为单位。语法格式:==========输入字节流==========FileInputStream fileInputStream = new FileInputStream(File file)==========输出字节流==========FileOutputStr...原创 2019-08-22 11:41:51 · 137 阅读 · 0 评论 -
详述File类
File类代表什么File类代表一个特定的文件或者目录,并提供了若干方法对该文件或目录进行操作。如何创建File类对象注意:创建File实例对象的前提是指定目录或文件在硬盘中存在,若不存在则需要使用mkdir或creatNewFile方法创建不存在的File对象。1、通过路径名创建一个新 File 实例:File(String pathname)import java.io....原创 2019-08-21 17:17:10 · 174 阅读 · 0 评论 -
总结几种常用排序方法及产生历程
一、冒泡排序冒泡排序法的运行机制是通过循环遍历元素并调整相邻元素顺序来实现的一种简单排序方法。产生历程:以升序为例,冒泡排序的主要原理就是逐个比较大小,将最大元素排到最后,循环多次直到所有元素升序排列。于是可以写出如下代码:public class Test { public static void main(String[] args) { int [] score...原创 2019-08-25 10:48:17 · 320 阅读 · 0 评论 -
详述线程(四)—— 线程协作
线程系列传送门: 详述线程(一)——了解线程 详述线程(二)—— 线程常用方法 详述线程(三)—— 数据共享 详述线程(四)—— 线程协作(本篇)情景实例现在需要设计一个电子表程序,分为获取时间和输出时间两个线程,选择合适的方法让这个程序能正确无误的打印出...原创 2019-08-24 21:33:31 · 214 阅读 · 0 评论 -
详述反射中的属性
反射系列传送门 如何获取Class类对象 详述反射中的构造方法 详述反射中的普通方法 详述反射中的属性(本篇)一、获取普通方法的实例化对象现有学生类如下:public class Student { public String name; pri...原创 2019-08-20 17:30:32 · 349 阅读 · 0 评论 -
分析HashMap实现类中add()方法的底层代码
声明:本博客中所有底层代码片段均按照JDK 8提供src源代码缩进方式缩进目录分析前须知分析hashCode()方法作用通过实例分析add()方法底层代码实例一:如何判断是否重复(两对象地址相同)实例二:如何判断是否重复(两对象地址不同)实例三:能否判断是否重复(自定义学生类学号相同)思考尝试一:重写hashCode()方法尝试二:重写hashCode(...原创 2019-08-11 21:46:03 · 2657 阅读 · 0 评论 -
分析equals()方法底层代码
equals()方法是我们常常用来比较两个字符串是否相同时所用的方法,本篇博客将深入equals()底层,通过分析源码探究该方法的实现过程。情形一:地址相同实例public class Test { public static void main(String[] args) { String name1 = "Tom"; String na...原创 2019-08-09 15:48:37 · 1998 阅读 · 0 评论 -
详述异常
1、定义Java语言将程序在编写或运行过程中所发生的不正常严重错误称为异常,而对异常的处理就称为异常处理。2、异常后果如果程序出现异常,则会中断程序的运行,并且同级代码将不再执行。例如public class Test { public static void main(String[] args) { System.err.println(111); Sys...原创 2019-08-07 14:17:55 · 162 阅读 · 0 评论 -
详述如何创建String对象
创建方法1、直接赋值法public class Try { public static void main(String[] args) { String name = "Tom"; }}代码原理:在执行“String name = "Tom";”代码时,JVM在常量池中开辟一个存放“Tom”字符串的空间并让name指向该对象。所以说代码中的“=”其实是赋...原创 2019-08-04 11:41:29 · 380 阅读 · 0 评论 -
逻辑运算符与位运算符的区别
什么是逻辑运算符逻辑运算符有哪些?运算符含义结合方向实例结果&&逻辑与从左到右2 == 2 && 1 == 1trueII逻辑或从左到右1!=2 II 2 == 4true!逻辑非从左到右!(2==4)true要注意的是,逻辑运算符只能对布尔型(Boolean)数据进行运算。例如:publ...原创 2019-07-26 11:34:35 · 638 阅读 · 0 评论 -
详述继承
为什么要有继承?我们在编写Java代码的时候会遇到这种情况,例如我们创建了两个类,一个类名为Father一个名为Son,他们的属性和方法大部分是相同的,那么当我们创建完成Father类再去创建Son类时就需要将这些属性和方法重新编写,费时费力。这时通过“继承”,子类可以直接调用父类的部分属性和方法。什么是继承?继承是面向对象编程的三大特征之一,是一种基于已有类来创建新类的机制。由继承而得到的...原创 2019-07-31 10:41:38 · 142 阅读 · 0 评论 -
详述抽象类与接口的区别
在前两篇博客,详述抽象类与详述接口中已经提到过,接口实际为抽象方法的集合,而抽象类可包含抽象方法也可不包含抽象方法。抽象类与接口的具体区分可以参考下图:下面对部分区别举实例并予以证明成员变量的区别抽象类接口可包含任意合法成员变量只包含常量(由public static final修饰)public interface ICircle { String NAME...原创 2019-08-03 20:41:33 · 132 阅读 · 0 评论 -
父类构造方法对子类构造方法的影响
在继承中,由于继承的原因,父类的构造方法对子类的构造方法产生了一定影响,下面将用实例证明父类构造方法对子类构造方法产生了哪些影响。证明过程实例如下现有父类Father和子类Son,各有无参构造方法如下public class Father{ public Father() { System.out.println("这是父类无参构造方法"); }...原创 2019-08-03 18:03:09 · 188 阅读 · 0 评论 -
详述接口
什么是接口我们将接口定义为抽象方法的集合,如果一个抽象类中都是抽象方法,那么可以将该类定义为接口。语法格式如下:权限访问控制符 interface 接口名 [extends 接口列表]{ 常量; 抽象方法; 内部类;}注:接口只能包含常量(public static final)、抽象方法及内部类接口的继承可以通过extends关键字实现接口的继承,但要注意两点:接口只能...原创 2019-08-02 17:35:49 · 126 阅读 · 0 评论 -
详述重写
一、为什么要重写我们知道,子类可以继承父类的方法并调用,但有时从父类中继承的方法在子类中必须加以修改以适应新类的需要。例如下面的代码段中,子类Son对象调用父类eat方法,但继承父类的方法eat已经不能准确描述自身行为特征了。因此子类Son欲将从父类Father继承的方法“eat”改变为输出“用刀叉方式吃饭”,此时就需要方法重写。public class Father{ public ...原创 2019-07-30 12:32:16 · 183 阅读 · 0 评论 -
讨论值传递与引用传递
值传递值传递是指在调用函数时将实际参数复制一份传递到函数中并且在函数中对参数进行修改不会影响到实际参数例如public class Test { public static void test(int y) { y=0; } public static void main(String[] args) { int x=100; test(x); System.out...原创 2019-07-29 20:02:07 · 82 阅读 · 0 评论 -
详述对象初始化过程
引我们在创建一个对象时往往要经历很多初始化过程,比如给对象的实例变量初始化,给构造方法的参数初始化等等。那么在对象初始化的过程中究竟要经历什么样的过程呢?其实对象初始化的过程按下面四个步骤进行。一、给对象的实例变量分配内存空间,默认初始化成员变量。二、成员变量声明时的初始化。三、初始化块初始化(初始化块又称为构造代码块或者非静态代码块)。四、构造方法初始化。证明下面是一段利用无参构造...原创 2019-07-29 11:46:10 · 706 阅读 · 0 评论 -
详述Java程序运行原理
前言我们都知道,Java是一种面对对象的语言,这样就避开了繁琐的过程使编码变得简单。同时Java是在JVM虚拟机上运行,故具有良好的可移植性。现在,让我们来一起探索Java程序运行的原理基本原理Java语言是一种先编译后解释的语言,一般我们在编写一个Java程序时需要在记事本(或编辑器)上先编辑好源代码这些源代码经过编译器编译后,就会生成一个.class文件,这个文件就是编译好的Jav...原创 2019-05-21 22:50:34 · 229 阅读 · 0 评论 -
break、return和continue的区分
引break、return和continue是我们常用的三种结束一个循环或者结束方法的语句,看似作用一样,实则在使用范围和作用效果上有很大区别,下面我将分别总结这三种语句如何使用,并举例以区分。break语句break用于Switch或者循环中,用于结束当前switch语句块程序或当前循环的运行,不影响其所在语句块外部代码的执行。例如public class Test{ public...原创 2019-07-26 17:55:06 · 119 阅读 · 0 评论 -
全局变量与局部变量的区分
全局变量一、什么是全局变量?直接在类中声明的变量就叫做全局变量(又称成员变量)。public class Student { String name; static int age; public static void main(String[] args) { Student student = new Student(); System.out.println(stu...原创 2019-07-27 13:20:23 · 1205 阅读 · 0 评论 -
Lambda表达式
什么是Lambda表达式从Java 8开始,为了简化函数式接口匿名内部类的语法,新增了Lambda表达式。语法格式如下:(参数列表)->{ 代码块};实例使用Lambda表达式简化前通过函数式接口匿名内部类实现接口@FunctionalInterfaceinterface IComputer { int add(int a,int b);}...原创 2019-08-06 18:33:56 · 100 阅读 · 0 评论 -
详述静态内部类与非静态内部类
什么是(非)静态内部类按照是否有static修饰分为静态内部类和非静态内部类,有static修饰的为静态内部类,没有static修饰的为非静态内部类。静态内部类与非晶态内部类的区分1、非静态内部类①直接在类中定义的非静态内部类,在非静态方法中创建对象时,必须先(一般隐式)创建外部类对象。public class Body{ public class Heart{ ...原创 2019-08-06 18:15:39 · 179 阅读 · 0 评论 -
HashSet类常用方法总结
引1、分支HashSet属于Collection集合的set分支下的子类(Collection集合分支图可参考博客:ArrayList常用方法总结)2、创建HashSet对象语法格式:HashSet<数据类型> 变量名 = new HashSet<数据类型>();思考:如何实现创建HashSet类型对象?我们可以从源码角度出发,Ctrl+“单击...原创 2019-08-08 18:25:38 · 1812 阅读 · 0 评论