自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 java中(list == null)和(null == list)的区别

本质上没什么区别,并且很多源码都是写成list == null的,但是养成null == list的习惯可以避免(list = null)这样的空指针异常情况,一般可以选择把常量写在前面来避免。...

2019-10-28 09:54:57 1214

原创 线程通信 3种方式

一、传统线程通信synchronized + wait + notifyObject类的wait()、notify() 、notifyAll()三个方法必须由同步监视器对象来调用,分两种情况:a)同步方法,该类默认实例(this)就是同步监视器,可以在同步方法中可以直接调用b)同步代码块,同步监视器是synchronized后括号里的对象,所以必须使用此对象调用这三个方法 二、使用Conditio...

2018-05-10 22:46:52 16435

原创 线程创建和启动 【三种方式】

1.    继承Thread类继承、重写run()、new MyThread().start();2. 实现Runnable接口实现、重写run()、new Thread(t,”名字”).start();3.使用Callable和Future创建线程实现callable接口,重写call()方法,FutureTask<Integer>task = new FutureTask<I...

2018-05-10 22:45:38 339

原创 线程与进程区别(四点)

进程process:程序的一次执行       进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响       进程间切换会有较大开销,一个进程包含1-n个线程       进程是资源分配的最小单位       多进程是指操作系统能够同时运行多个任务(程序)线程thread:进程中执行的一段程序片段              同一类线程共享代码和数据空间,每个线程有独立的运行...

2018-05-10 22:45:11 152

原创 输入输出&网络IO

Java把所有设备里的有序数据抽象成流模型。输入流&输出流(以程序运行内存来看)、字节流(InputStream)&字符流(Reader/Writer)、节点流&处理流【装饰器模式:使用处理流来包装不同的节点流】 重定向 System.setErr();   System.setOut(ps);  System.setIn(fis);RandomAccessFile既可以读...

2018-05-10 22:44:38 259

原创 异常处理

Java编译器要求程序必须捕获或者声明所有的非运行时异常,但对运行时异常可以不做处理。Runtime异常(运行时异常):无须处理。原因:编程错误。【除数为零、空字符串、无效句柄】javac无法通过编译时的静态语法检测异常,完全取决于运行时状态。Checked异常:可在编译阶段被处理的异常,强制程序处理它。仅java语言提供:严谨、健壮但也降低生产率和代码执行效率。当前方法知道如何处理该异常——tr...

2018-05-10 22:43:11 263

原创 ArrayList和Vector的区别

在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改),否则在任何时间以任何方式对列表进行修改(调用容器自身的remove和add方法进行修改),迭代器都会抛出ConcurrentModificationException。 Vector和Arr...

2018-05-10 22:42:18 180

原创 HashMap、ConcurrentHashMap的工作原理及代码实现

HashMap参考:JavaHashMap工作原理及实现 http://www.importnew.com/18633.html HashMap的底层数组长度总是2的n次方,在构造函数中存在:capacity <<= 1;这样做总是能够保证HashMap的底层数组长度为2的n次方。保证计算得到的索引值总是位于 table 数组的索引之内。当length为2的n次方时,h&(le...

2018-05-10 22:41:55 1063

原创 HashMap和Hashtable和ConcurrentHashMap的区别

 HashMap和Hashtable基本一致,  区别是HashMap是线程不同步的且允许空key。ConcurrentHashMap和CopyOnWriteArrayList同步的集合类(Hashtable和Vector),同步的封装类(使用Collections.synchronizedMap()方法和Collections.synchronizedList()方法返回的对象)可以创建出线程安...

2018-05-10 22:40:13 234

转载 MVC设计思想

转自:浅析MVC设计思想与三层体系结构 http://blog.sina.com.cn/s/blog_6f109b2b0101aujt.html【】、什么是三层体系结构    三层体系结构是在客户端和数据库端之间引入一个“组件层”,并以业务逻辑为核心,将整个项目在逻辑逻辑上分为表现层、业务层、数据访问层。 【】、什么是MVC设计思想M代表model V代表view C代表controller。vi...

2018-05-10 09:34:35 441

转载 JDBC流程:六步

[java] view plain copy 1.   import java.sql.Connection;   2.   import java.sql.DriverManager;   3.   import java.sql.ResultSet;   4.   import java.sql.SQLException;   5.   import java.s...

2018-05-10 09:33:55 1234

转载 反射的用途和实现

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射框架提供以下功能:①、在运行时判断任意一个对象所属的类②、在运行时构造任意一个类的对象③、在运行时判断任意一个类所具有的成员变量和方法(通过反射设置可以调用 private)④、在运行时...

2018-05-08 22:10:59 6490

转载 为什么java中有了基本类型为什么还要有包装类型?

为什么存在这两种类型呢? 我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在栈中,因此更加高效。 有了基本类型为什么还要有包装类...

2018-05-08 22:09:19 7622

原创 int 和 Integer 的区别

        Java语言提供两种不同的类型,即引用类型和原始类型(或内置类型)。int是Java语言的原始数据类型,Integer是Java语言为int提供的封装类。Java为每个原始类型提供了封装类。...

2018-05-08 22:08:46 129

原创 equal()和 == 的区别

        ==比较对象的内存地址值,equals是Object中的方法,在Object中也是用==实现,但是其他对象可以重载,比如,String重载后可以比较值。

2018-05-08 22:08:00 249

原创 赋值和引用

       对于基本类型,Java是传值的副本;对于一切对象型变量,Java都是传引用的副本。       “=”不是赋值语句,右边对象地址传给了左边的引用,使得左边的引用指向了右边的对象。对象存储于堆中,引用存储于速度更快的堆栈上。       “=”语句左边是引用(存在栈中),右边new出来的是对象(存在堆中)。“=”左右都是引用的语句,左右引用同时指向了右边引用所指向的对象。       ...

2018-05-08 22:06:40 861

原创 super()和 this

super:调用父类构造函数,必须作为子类第一条语句。子类成员变量和方法优先级高,隐藏了父类的成员变量和方法,但是如果想用到父类的成员变量和方法那就需要用到super,要用到父类的构造方法就用super(参数列表)。this:想使类的成员变量与方法参数或方法自己定义的局部变量同名,就需要用到this...

2018-05-08 22:04:53 112

原创 接口和抽象类区别

>抽象类和接口都不能被实例化。>抽象类和接口都可以包含抽象方法,继承抽象类或者实现接口的普通子类都必须实现这些抽象方法。 差别主要体现在二者设计目的上:       接口作为系统与外界交互的窗口,体现的是一种规范。对于接口实现者,接口规定了实现者必须向外提供哪些服务(以方法的形式);对于接口调用者,接口规定调用者可以调用哪些服务,以及如何调用这些服务(方法)。一个程序中,接口是多个模块...

2018-05-08 22:03:40 116

原创 面向对象的特征:封装、继承和多态

对象和实例:初级理解,对象是类的实例;对象是同类事物的一种抽象表现形式,而实例是对象的具体化。封装:隐藏实现细节,代码模块化。代码重用继承is a:面向对象编程OOP,扩展已存在的代码模块。破坏封装性。代码重用     //组合has a(运行期间通过对象之间的引用动态定义,不破坏封装性)多态:一个接口,多个方法。重载(和多态无关)、重写(晚绑定:运行时绑定)。接口重用接口最大任务就实现多态。三大...

2018-05-08 22:02:35 268

原创 对面向对象的认识

面向对象是区别于面向过程的,它是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象。对同类对象抽象出其共性,即类。 面向过程是以事件为中心的开发方法,自顶向下顺序执行。 面向对象特征:抽象、继承、封装、多态 ...

2018-05-08 22:01:33 199

转载 简谈对Java平台的理解

Java本身是一种面向对象语言,最显著特征有两个方面,一个是非常容易获得跨平台能力,还有就是GC,Java通过垃圾收集器回收分配内存。 JRE也就是Java运行环境,包含了JVM和Java类库,以及一些模块。 JDK可以看作是JRE的超集,提供更多的工具,比如编译器、各种诊断工具等。 Java是解释执行这句话说法不太准确。 Java源代码——通过javac编译成为字节码bytecode,—...

2018-05-08 22:00:40 168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除