java
loveNY啊
我想做真正的程序员啊
展开
-
Java集合框架(二)List
List 看下list的类图:1.list介绍 list,java中的有序集合,内部用数组实现,每个元素都有对应的索引,可以存放重复数据。2.list的几种主要实现 list的主要实现有ArrayList,Vectory,Stack和LinkedList。 我们还是通过具体实例来学习。ArrayList:也被称为动态数组,可以动态改变数组的大小。测试类: package ...原创 2018-06-29 14:16:50 · 181 阅读 · 0 评论 -
Java基础之异常处理机制
Java的异常处理机制可以让程序有更好的容错性,提高程序的健壮性。在程序运行出现意外情况时,系统通过生成Exception对象来通知程序。将业务功能代码和错误处理代码分离,提高可读性。java异常继承体系 Java将程序中的意外情况分为两种:Error(错误)和Exception(异常),都继承自父类Throwable. Error一般都是与虚拟机相关,如虚拟机错误,系...原创 2018-07-24 16:47:04 · 123 阅读 · 0 评论 -
Java基础之数据类型
数据类型 java中有两种数据类型:基本数据类型和引用数据类型。我们用一张图简单概括下,有一个直观的印象:下面会具体介绍八大数据类型。整型(定点数):byte:1个字节大小,占用内存8位,大小范围是-2^7~2^7-1;short:2个字节大小,占用内存16位,大小范围是-2^15~2^15-1;int:4个字节大小,占用内存32位,大小范围是-2^31~2^31-1;long:8个字节大小...原创 2018-07-15 21:09:28 · 185 阅读 · 0 评论 -
Java基础之final
final是java中常见的关键字之一,从字面意思来看,使用final修饰的内容通常都是确定好的内容,不需要再改变值。我们从final可以修饰的对象来了解final。1.final修饰变量 final可以修饰成员变量和局部变量,但是两者用法有一些细微区别。final修饰成员变量 我们知道成员变量根据是否使用static修饰符修饰分为类变量和实例变量。 使用fina...原创 2018-07-22 14:39:50 · 119 阅读 · 0 评论 -
Java基础之反射
反射是java中比较重要的一块知识,虽然平时的开发中可能不太用到反射,但是在框架的开发中,反射是非常重要的,而且各个框架中大量使用的注解,在解析注解的时候也需要用到反射,所以说反射是框架的灵魂。说了这么多,其实反射做的事情很简单,就是在运行时获取类或者对象的信息。1.获取class对象 我们将.java结尾的文件称为源文件,源文件最终会被编译。class文件,也就是字节码文件,反射的作用...原创 2018-08-06 19:57:40 · 146 阅读 · 0 评论 -
Java基础之注解
在我们日常的开发过程中,会经常遇到注解,比如重写方法时的@Override,使用springmvc中用到的@Controller,@Autherwide,@RequestMapping等等,注解在代码中就好像一个标签,通过这个标签我们或者编译器可以获取制定的信息,也可以通过这个注解来实现特定的功能。1.认识注解 java预置注解(jdk7) java提供了几个内置的注解:@Dep...原创 2018-08-07 23:08:24 · 150 阅读 · 0 评论 -
Java IO之InputStream
Java io部分的知识是比较重要的一部分内容,io是理解nio的基础,nio又是理解netty的基础。相信看到java io体系的结构图的时候都会感叹他的庞大: 在网上查阅相关资料的时候,也没有一个很详细的理解,大部分都是陈列一下api的用法,所以在这里将自己对io的理解记录下来。 InputStream也就是io中的输入流,用来处理字节对象,也叫字节流,他将数据以字节...原创 2018-09-01 16:17:40 · 1379 阅读 · 0 评论 -
Java基础之序列化
最近几天重新看了下序列化部分的内容,今天将它整理出来。什么是序列化/反序列化序列化是java开发中经常可以听到的一个词,那么究竟什么是序列化呢?简单来理解的话就是:将java对象转换成字节序列以二进制数据的形式保存在本地的操作就叫做序列化,将二进制数据还原成java对象的过程就叫反序列化。 我们画一个图来说明下:2.怎么让对象序列化/反序列化 虽然序列化的目的是为了...原创 2018-08-29 23:57:23 · 149 阅读 · 0 评论 -
Java IO之OutputStream
Java io中通过InputStream字节输入流用来将数据读取到内存中,同时也提供了字节输出流OutputStream用来从内存中读取数据。 和InputStream结构类似,我们也通过以下几个类来了解OutputStream。 OutPutStream OutputStream抽象类中主要提供了三个方法:输出单个字节public a...原创 2018-09-05 21:32:25 · 1253 阅读 · 0 评论 -
Java集合框架(一)Set
Set 看下jdk中集合框架部分的类图: 是不是被这密密麻麻的关系吓到了,其实里面的体系没有想象的那么复杂,java集合体系主要分为四大类:set,queue,list和map,由collection和map两个接口派生出,set,queue和list继承coeelction。这篇文章主要学习其中的set部分。1.set介绍 set,java中的集合对象,用来...原创 2018-06-27 17:24:34 · 191 阅读 · 0 评论 -
java基础之hashCode
hashCode 学习java的集合框架时,发现里面很多地方涉及到了hashCode的比较,于是决定先了解一下hashCode,再继续学习集合框架。 1.什么是hashCode? 我们知道在java中,Object类是所有对象的父类,在Object类中有一个hashCode()方法:public native int hashCode(); 可以看...原创 2018-06-27 10:00:37 · 247 阅读 · 0 评论 -
java基础之数组
数组 复习一下java中数组方面的知识。 1. 数组介绍数组是java中的一种数据结构,用来存储类型相同的一组数据。和基本数据类型区别,数组属于引用数据类型。(有关基本数据类型的介绍移步这里) 2.数组的声明/初始化数组的使用可以分为两部分,首先是声明一个数组变量,这时候会在栈中创建一个引用,初始化以后才会在堆中分配具体空间。具体过程可以见下一部分...原创 2018-06-25 14:47:39 · 290 阅读 · 0 评论 -
Java多线程(三)线程控制
线程控制 java中提供了很多方法,让我们可以对线程进行控制。我们今天主要学习其中的join线程,后台线程,线程睡眠,线程让步和怎么改变线程优先级。join线程: join线程可以让一个线程等待另一个线程执行完毕以后再执行。我们还是通过例子来进行学习,有这么一个场景:我们要吃一碗泡面,要经过四个步骤,放水、下面、吃面、洗碗。用我们前面学到的知识来写的话,我们的代码会是这样子:package ...原创 2018-07-06 20:33:29 · 3420 阅读 · 0 评论 -
Java多线程(二)线程的生命周期
线程的生命周期 当一个线程被创建并启动以后,它并不是一直处于运行状态,他会有多个状态,在一个线程的生命周期中,总共有五种状态:新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)。我们具体说下线程在不同情况下的状态:新建状态: 当我们通过new创建线程实例的时候,这个线程就已经除了新建状态;就绪状态: 当调用线程对象的start()方法以...原创 2018-07-06 13:47:44 · 238 阅读 · 0 评论 -
Java基础之成员变量和局部变量
成员变量和局部变量 在介绍成员变量和局部变量之前,先看一段简单的代码,如果不能很明确的给出答案的话,请看完全文。package com.ljw.field;/** * Created by liujiawei on 2018/7...原创 2018-07-18 22:35:41 · 179 阅读 · 0 评论 -
Java集合框架(三)Queue
Queue Java中Queue的类图:1.Queue介绍 Queue,java中模拟队列的一种数据结构,先进先出(FIFO),不支持随机访问数据,通过offer()方法增加数据到队列尾部,poll()获取队列头部元素,可以将Queue看成一个通道,最先走进的通道的也是最先走出通道的,最后走进去的,在通道里面呆的时间最久。 2.Queue主要实现 Queue...原创 2018-06-30 11:08:26 · 2348 阅读 · 0 评论 -
Java多线程(四)线程同步
线程同步 系统的线程调度有一定的随机性,当多个线程访问同一个数据时,不作处理的话,很容易出现线程安全问题,我们可以通过线程同步来解决这个问题。 我们用银行取钱的场景的来模拟这种情况:银行类,可以设置账户上的余额,提供一个取钱的方法,只要没有超过账户上的钱就扣除对应的钱数:import com.sun.scenario.effect.impl.prism.PrImage;/** ...原创 2018-07-08 23:53:48 · 163 阅读 · 0 评论 -
Java集合框架(四)Map
Map 先看下map的类图: 我们主要学习HashMap,LinkedHashMap,Hashtable,WeakedHashMap和TreeMap。1.map介绍 map在java中用来保存具有映射关系的数据,以键值对的形式保存,一个key对应一个value,key不可以重复。可以把map中的key部分看成一个set集合,无序不重复,把value部分看成是一个list集...原创 2018-07-02 15:16:35 · 523 阅读 · 1 评论 -
Java多线程(五)线程通信
线程通信 java中提供了三种方式进行线程通信:1.使用同步监视器控制线程通信: 我们在线程同步中已经介绍过同步监视器主要就是通过同步方法和同步代码块实现的,同步监视器中的线程通信就是通过调用同步监视器的wait(),notify()和notifyAll()方法实现。线程通信中有个经典的生产者消费者模式,我们用同步监视器的方式是来实现生产者消费者模式,看一下是怎么工作的: 工厂类...原创 2018-07-09 15:31:12 · 188 阅读 · 0 评论 -
Java之== 和 equals()的区别
== 和equals简单概括就是: ==比较基本数据类型的值和引用类型对象的引用地址,equals比较对象的内容。下面我们具体来说一下这两个: ==: 我们知道java在内存中有栈(stack)和堆(heap)之分。栈中存放基本数据类型和引用类型的变量,堆中存放对象的实际内容。当我们通过new实例化一个对象时,在内存是这样存储对象的:Student s = new Student("jack",1...原创 2018-07-03 22:36:33 · 321 阅读 · 0 评论 -
Java多线程(六)线程组和线程池
线程组和线程池线程组 1.线程组介绍 java中用线程组(ThreadGroup)来同时管理一批线程,对线程组做的操作相当于对里面所有的线程都做了同样的操作,线程所属的线程组在运行过程中无法修改。 可能大家听到更多的是线程池的概念,但其实只要使用过线程,那么你就已经使用过了ThreadGroup,只是你自己并不知道而已,我们看下Thread类的构造方法: public Thread(R...原创 2018-07-10 18:48:18 · 1652 阅读 · 2 评论 -
Java之String,StringBuffer和StringBuilder
String,StringBuffer和StringBuilder 在java中有关这三个对象的比较一直是一个老生常谈的问题,大部分人了解的也就限于StringBuffer是线程安全的,而StringBuilder是非线程安全的。今天我们一起看下这三者之间的联系和区别。 我们先从类图中看下这三个类之间的关系: 可以看到String,StringBuffer和Str...原创 2018-07-04 14:12:07 · 283 阅读 · 2 评论 -
Java基础之4种引用
我们知道java中有一个垃圾回收机制(gc),在合适的时候gc会清理内存中的垃圾,释放内存。虽然Object类中提供了finalize()用来清理资源,但是finalize()具有不确定性,不能明确知道什么时候会对资源进行回收。java提供了4种引用类型,让开发者可以直接控制对象的生命周期,配合引用队列可以知道对象在何时被gc清理。按照级别高低从高到低分为强引用(StrongRefrence)...原创 2018-07-23 10:39:56 · 140 阅读 · 0 评论 -
Java之抽象类和接口
抽象类和接口 抽象类和接口的使用在java开发中是比较常见的,今天我们就来比较下接口类和抽象类的之前的联系和区别。抽象类:1.什么是抽象类? 使用abstract修饰符来修饰的类就是抽象类,使用abstract修饰的方法就叫抽象方法,抽象方法没有方法体。抽象类除了不能实例化以外,其他都和普通的java类一样。2.抽象类需要遵守的规则(1)抽象类必须使用abstract修饰符来修...原创 2018-07-05 09:06:21 · 137 阅读 · 0 评论 -
Java之类加载机制
类加载机制 了解jvm中的类加载机制,可以帮助我们更好的理解程序的运行。(由于没有深入了解过jvm,本文以理论为主,日后有实操会进行补充)。1.类的加载过程 类的整个加载过程主要分为:加载,连接,初始化,使用和卸载五个阶段,其中连接中有验证,准备,解析三个过程。看一下整个的加载过程示意图:我们接着了解主要过程中所作的操作:加载: 类的加载主要通过类加载器来实现,通过不同的类加载...原创 2018-07-05 13:47:36 · 125 阅读 · 0 评论 -
Java多线程(一)认识多线程
认识多线程 Java中有关多线程的只是虽然只有几章节,但是真正扩展开来几本书都不用,让我们从基础开始,一步步的学习多线程相关的知识。1.基本概念介绍 进程:系统中分配资源的一个调度单位。 线程:也被称为轻量级进程,是进城中的调度单位。 并发:多个指令轮流执行。 并行:多个执行同时执行。 一个程序至少有一个进程,一个进程中可以有多个线程。2.多线程的基本实现要想实...原创 2018-07-06 01:20:46 · 280 阅读 · 0 评论 -
Java基础之static
static 整理一下有关java关键字 static的用法。 先来看一下《java编程思想》中有关static的说明: 我们从以下几个角度来分析一下static:1. static的作用是什么?想一下我们一般调用其他类中的变量和方法是怎么操作的?是不是都要先new一个对象实例出来,接着才能操作对象中的变量和方法,sta...原创 2018-06-22 14:25:05 · 172 阅读 · 0 评论