![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
willlu10
这个作者很懒,什么都没留下…
展开
-
常见的RuntimeException异常
1.NullPointerException 空指针异常空指针异常非常常见,在业实际务场景中经常出现String ss=null;ss.equals("str");2.ArrayIndexOutOfBoundsException数组索引越界异常ArrayList中只有1个数据,最大索引是0,当获取下标为1的数时,就会ArrayIndexOutOfBoundsExceptionArrayList arrayList = new ArrayList();ar...原创 2020-06-03 15:59:07 · 2826 阅读 · 0 评论 -
Java中值传递和引用传递
https://www.cnblogs.com/nnngu/p/8299724.html当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是按值传递。Java 语言的参数传递只有按值传递。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是...转载 2018-04-23 15:28:15 · 264 阅读 · 0 评论 -
关于Java包装类的equals方法和“==”笔试题总结
public class equals { public static void main(String[] args) { int i = 30; Integer j = new Integer(30); Integer k = new Integer(30); Integer l = 30; Integer...原创 2018-05-02 11:22:05 · 273 阅读 · 0 评论 -
自动装箱和自动拆箱
前言一开始想学学自动拆箱和自动装箱是被这个名字吸引到,听上去好像很高端的样子,其实认真看一下,自动拆箱、自动装箱就是很简单的内容。 自动拆箱和自动装箱Java为每种基本数据类型都提供了对应的包装器类型。举个例子:public class TestMain{ public static void main(String[] args) { Integer i = 1...转载 2018-04-25 16:33:36 · 101 阅读 · 0 评论 -
Java队列的基本操作
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常...转载 2018-04-26 09:53:27 · 1061 阅读 · 0 评论 -
clone方法,及深浅复制
前言:我们经常会遇到某个已有对象A,创建出另外一个与A具有相同状态的对象B,并且对B的修改不会影响A的状态,这就需要clone一个对象实例。在Java语言中简单的复制操作无法达到这个目的(对象的赋值属于引用传递,传递的是地址),而Java提供clone方法解决这个问题。步骤:1.继承Cloneable接口(Cloneable是标识接口,没有任何方法)2.在类中重写Object类中的clone方法3...原创 2018-04-26 19:37:52 · 419 阅读 · 0 评论 -
try-catch-finally执行顺序总结
本博客转载自https://www.cnblogs.com/superFish2016/p/6687549.html 推荐看原文在网上看到一些异常处理的面试题,试着总结一下,先看下面代码,把这个方法在main中进行调用打印返回结果,看看结果输出什么。 public static int testBasic(){ int i = 1; try{ ...转载 2018-04-26 20:36:49 · 142 阅读 · 0 评论 -
java实现简单的socket通信
基础:一些的占用端口号mysql:3306tomcat:8080 http:80 FTP: 21输入流:程序从输入流中读取数据输出流:程序从输出流中写入数据缓冲流:每次I/O发送或接收指定大小的数据量,减少了I/O次数InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;OutputStream:是所有字节输出流的超类Buffere...原创 2018-05-05 14:10:00 · 463 阅读 · 0 评论 -
面向对象和面向过程的区别
转自http://blog.163.com/wenxianliang08@126/blog/static/83583263201131611916893/面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。1.什么...转载 2018-04-28 09:09:26 · 3659 阅读 · 0 评论 -
Java实现socket文件传输
Java实现通过socket文件传输:用到的类:DataInputStream :数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。 DataOutputStream :数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。读取文件中的信息:客户端...原创 2018-05-07 22:02:12 · 5393 阅读 · 0 评论 -
sleep和wait的区别
1.sleep方法继承自Thread类,wait继承自Object类2.sleep方法没有释放对象锁,而wait方法释放了对象锁、 sleep不让出系统资源;wait进入线程等待池等待。3.wait,notify,notifyAll,只能在同步控制方法或者同步方法控制块中使用,sleep可以在任何地方使用synchronize(x){x.notify()//或者wait()}4...原创 2018-05-23 13:47:58 · 305 阅读 · 0 评论 -
动态代理
https://blog.csdn.net/maoyuanming0806/article/details/80186248转载 2018-08-07 21:52:09 · 107 阅读 · 0 评论 -
BIO与NIO、AIO的区别
参考文章1https://blog.csdn.net/skiof007/article/details/52873421参考文章2http://ifeve.com/java-nio-vs-io/原创 2018-10-05 15:00:08 · 190 阅读 · 0 评论 -
JAVA与模式--单例模式-DCL
很多人用过单例模式,笔者面试时,偶尔谈起设计模式,大部分人都会说自己会设计模式,基本上也就是说个单例模式、工厂模式。可能笔者面试的人都层次都比较低吧(笔者所在公司是小公司,负责面的也都是两年工作经验以下的)。很多人谈起单例模式,但并不能真正用好这个模式,也不能写出一个好点的例子,今天笔者斗胆介绍一下单例模式。分类懒汉式:懒汉式是指应用启动时并不会初始化相应的实例,而是在第一次使用时加载,也就是所谓...转载 2018-04-18 17:17:34 · 626 阅读 · 0 评论 -
Java中static、final、static final的区别(转)
static: 静态修饰符(只有一个)private:私有的,定义私有属性或方法,不能被其他类调用final:不可变的。我们在系统中经常定义某个常量(对象的值不可变)如下:private static final String VAR = "This is a unable changed Variable";该变量只能在当前这个类中被使用,并且是带有static修饰的静态函数中被调用。加了fin...转载 2018-04-18 15:44:14 · 178 阅读 · 0 评论 -
深入Java单例模式
在GoF的23种设计模式中,单例模式是比较简单的一种。然而,有时候越是简单的东西越容易出现问题。下面就单例设计模式详细的探讨一下。 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等。 1. 最简单的实现 首先,能够想到的最简单的实现是,把类的构造函数写成p...转载 2018-04-18 11:09:19 · 88 阅读 · 0 评论 -
深入理解Java的接口和抽象类
转载自:http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: ...转载 2018-02-22 21:31:33 · 98 阅读 · 0 评论 -
组合与聚合的区别
组合和聚合的区别不是在形式上,而是在本质上聚合关系(Aggregation)体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。组合关系(Composition):如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。现实生活中,人和人和手,脚是组合关系,因为当人死亡后人的手也...原创 2018-02-22 21:32:50 · 15996 阅读 · 3 评论 -
HashMap 和 HashTable的不同
HashMapHashTable继承自AbstractMap继承自Dictionary类非Synchronize的,线程不安全的Synchronize的,线程安全删除了Hashtable的contains方法保留了Contains方法key 和 value可以为空,null可以作为键,而且只能有一个key 和 value 都不允许出现空值遍历方式 Iterator遍历方式 Iterator、Enu...原创 2018-03-01 15:19:47 · 154 阅读 · 0 评论 -
JAVA三大内置注解
@Override@Deprecated@SuppressWarnings() Override 注解指明被注解的方法需要覆写父类中的方法.如果某个方法使用了该注解,却没有覆写超类中的方法(比如大小写写错了,或者参数错了,或者是子类自己定义的方法),编译器就会生成一个错误.Deprecated 注解可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用...原创 2018-03-01 20:35:50 · 451 阅读 · 0 评论 -
Vector、 ArrayList、LinkedInList
Vector、 ArrayList的区别1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。 2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样...原创 2018-03-01 20:36:12 · 224 阅读 · 0 评论 -
JAVA 常用容器初始值大小
1.StringBuffer和StringBuilder初始化默认大小为16个字符2.HashMap初始化默认大小16,自增为2n.3.HashTable默认初始值为11,加载因子为0.75,自增为2n+14.ArrayList初始化默认值为10,自增为1.5n5.Vector初始化默认值为10,自增为2nhttp://blog.csdn.net/mantantan/article/details...转载 2018-03-24 10:14:00 · 735 阅读 · 0 评论 -
面向对象的六大原则
原文:http://blog.csdn.net/yqlee2000/article/details/508438881、单一职责单一职责的英文全称是Single Responsibility Principle,缩写为SRP。定义:就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数,数据的封装。两个完全不一样的功能就不应该放在一个类中。单一职责是代码优化的第...转载 2018-03-01 21:27:06 · 114 阅读 · 0 评论 -
Thread类
1 start方法 start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。 2 run方法 run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要...转载 2018-03-25 15:41:09 · 13136 阅读 · 1 评论 -
Java实现线程的方法 以及三种线程的区别
Java实现线程的方法一.继承Thread类,重写run()方法。二.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target三.通过Callable和FutureTask创建线程四.通过线程池创建线程前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果 后面两种可以归...原创 2018-03-25 16:33:51 · 290 阅读 · 0 评论 -
volatile
volatile关键字的作用1.保证内存的可见性2.防止指令重排3.volatile并不保证原子性内存可见性volatile保证可见性的原理是在每次访问变量时都会进行一次刷新,因此每次访问都是内存中最新的版本,所以volatile关键字的作用之一就是保证变量的可见性当且仅当满足以下所有条件时,才应该使用volatile变量对变量的写入操作不依赖变量的当前值,或者你能确保只有单个线程更新变量的值。该...原创 2018-03-27 22:05:11 · 104 阅读 · 0 评论 -
协调同步的线程方法 wait,notifyAll,notify
wait:wait方法可以中断线程的执行,使本线程等待,暂时让出cpu的使用权,并允许其他线程使用这个方法。notifyAll:其他线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法时,应当用notifyAll方法通知由于使用这个同步方法而处于等待的线程结束等待,曾中断的线程就会从刚才中断处继续执行这个同步方法,并遵循先中断先继续的原则。notify:使用此方法时,与上面notify...原创 2018-03-28 10:49:39 · 319 阅读 · 0 评论 -
synchronize和volatile的区别
1.volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronize则是锁定当前的变量,只有当前线程课访问该变量,其他线程被阻塞主。2.volatile仅能使用在变量级别,synchronize可使用在变量方法级别3.volatile仅能实现变量的修改可见性,而synchronize则可以保证变量修改可见性和原子性4.volatile不会造成线程的阻塞,...原创 2018-03-28 19:07:57 · 790 阅读 · 0 评论 -
Java中Synchronized的用法
《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码...转载 2018-03-28 16:05:43 · 170 阅读 · 0 评论 -
单例模式
什么是单例模式:单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单...原创 2018-04-18 10:14:42 · 117 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别
执行速度上StringBuilder>StringBuffer>StringString是字符串常量创建之后不可更改,前两者是字符串变量创建之后可以更改StringBuilder是单线程的,线程不安全的,StringBuffer是多线程的,线程安全的。对于String StringBuffer,StringBuilder,String使用的总结 String:适用于少量的字符串操作的...原创 2018-03-01 20:36:38 · 135 阅读 · 0 评论