JAVA基础
JAVA基础
西瓜游侠
希望自己能够开心
展开
-
Java异常详解
转载:http://www.cnblogs.com/lulipro/p/7504267.html一、异常简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预原创 2017-10-07 19:48:33 · 473 阅读 · 0 评论 -
java中 final 与 static
final Java关键词final有“无法改变”的含义,主要用于修饰非抽象类、方法或者变量。使用时注意: (1)final类不能被继承,没有子类,final类中的方法默认是final的。 (2)final方法不能被子类的方法覆盖,但可以被继承。 (3)final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 (4)final不能转载 2017-04-07 11:11:20 · 500 阅读 · 0 评论 -
用static关键字修饰类(只适用于内部类)
Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类。普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需先实例一个外部类。public class OuterClass { public static class InnerClass { InnerClass(){原创 2017-08-11 17:35:58 · 8805 阅读 · 2 评论 -
LinkedList源码解析——JDK1.8
1、LinkedList介绍LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆原创 2017-07-27 13:15:22 · 450 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的区别。主要的区别有:线程安全性,同步(synchronization),速度。HashMap可以接受null(键值(key)和值(value)都可以为null),而Hashtable则不行,会抛出NullPointerException异常。HashMap是非synchronized,而Hash原创 2017-07-27 09:13:31 · 481 阅读 · 0 评论 -
Hashtable源码解析
1、简介和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。 Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。此外,Hashtable中的映射不是有序的。Hash转载 2017-07-26 21:40:01 · 361 阅读 · 0 评论 -
HashMap中(tab.length - 1) & hash的神奇之处
在HashMap和ConcurrentHashMap的源码中,作者通过:int index = (tab.length - 1) & hash;来计算将要插入的元素在数组中的索引位置。这样做有什么妙处呐?1、保证不会发生数组越界首先我们要知道,在HashMap和ConcurrentHashMap中,数组的长度按规定一定是2的幂(2的n次方)。因此,数组的长度的二...原创 2017-08-03 15:40:54 · 2848 阅读 · 4 评论 -
关于java中静态属性、静态方法的继承问题
1、结论java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏。2、原因静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成,不需要继承机制就可以调用。如果子类里面定义了静态方法和属性,那么这时候父类的静态方法或属性称之为”隐藏”。如果你想要调用父类的静态方法和属性,直接通过父类名.方法或父类名.变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是原创 2017-07-19 17:33:38 · 669 阅读 · 0 评论 -
JVM类加载机制
虚拟机把Class文件(描述类的数据)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是类加载机制。Java中,类显性的加载、连接、初始化都是在 运行期 完成。Class文件是一串二进制的字节流。1、类加载总体流程图类的整个生命周期分为以上七个阶段:加载、验证、准备、解析、初始化、使用、卸载。2、虚拟机规范规定了如下几种情况就必须要进行初始化遇到ne原创 2017-07-30 11:31:53 · 361 阅读 · 0 评论 -
Java中抽象类和接口的区别
区别:接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final (这里需要说一点,既然一个变量被final修饰了,那么这个变量就是一个常量!!!!!变量必须初始化成常量!!!!!)语法区别:抽象类可以有构造方法,接口中不能有构造方法。原创 2017-07-20 13:43:05 · 320 阅读 · 0 评论 -
sleep(),wait(),yield(),join()方法的区别
转载:http://blog.csdn.net/xiangwanpeng/article/details/54972952sleep() sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级的线程得到执行的机会,也可以让低优先级的线程得到执行机会。但是sleep()方法不会释放“锁标志”,也就是说如果有sync转载 2017-07-28 20:56:11 · 785 阅读 · 0 评论 -
HashMap源码分析——JDK1.8
HashMap源码分析——JDK1.8转载:http://blog.csdn.net/u010498696/article/details/45888613 在JDK1.6中,HashMap采用位桶+链表实现:即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。 而JDK1.8中,Has转载 2017-07-24 16:03:14 · 690 阅读 · 0 评论 -
Java集合知识点总结
1、集合博客http://www.cnblogs.com/skywang12345/p/3323085.html2、原创 2017-07-21 16:41:19 · 1034 阅读 · 0 评论 -
Java内存模型
转载:http://www.cnblogs.com/leesf456/p/5291484.html Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model, JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。1、Java并发基础在并发编程中存在两个关键问题:(1) 线程之间如何通信;(2)线程之间如何同步转载 2017-07-31 10:11:07 · 362 阅读 · 0 评论 -
Java实现多线程的三种方式
1、Java实现多线程主要有三种方式:(1)继承Thread类(2)实现Runnable接口(3)使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。2、方式一:继承Thread类Thread类本质上也是实现了Runnable接口的一个类,它代表一个线程的实例。启动线程的唯一方法就是通过T原创 2017-07-28 15:17:31 · 638 阅读 · 0 评论 -
java程序中,如何安全的结束一个正在运行的线程?
转载:http://blog.163.com/xh_ding/blog/static/193903289201341685931689在Java的多线程编程中,java.lang.Thread 类型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通过这些方法,我们可以对线程进行方便的操作,转载 2017-07-28 16:00:17 · 963 阅读 · 0 评论 -
JAVA多线程、并发知识点总结
1、java多线程(一个优秀的博客)http://www.cnblogs.com/skywang12345/p/java_threads_category.html2、线程状态图http://www.cnblogs.com/skywang12345/p/3479024.html3、Callable、Future、FutureTaskhttp://blog.csdn.net/hbtj_1216/art原创 2017-07-28 14:19:41 · 2255 阅读 · 1 评论 -
Java基础知识点
Java基础知识点1.面向对象和面向过程的区别面向过程: - 优点:性能比面向对象高,因为面向对象中类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 - 缺点:不易维护、不易复用、不易扩展。面向对象: - 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合原创 2017-07-21 16:33:12 · 829 阅读 · 0 评论 -
重载(Overload)和重写(Override)的区别
重载(Overloading)重载方法的规则: 1. 参数列表:被重载的方法必须改变参数列表。 2. 返回类型:可以改变返回类型。 3. 修饰符:可以改变修饰符。 4. 异常:可以声明新的或者更广泛的异常。其中: 1. 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现转载 2017-07-19 17:23:57 · 913 阅读 · 0 评论 -
CopyOnWriteArrayList源码解析——JDK1.8(本文作废)
参考:http://www.cnblogs.com/skywang12345/p/3498483.html1、CopyOnWriteArrayList介绍它相当于线程安全的*ArrayList。和ArrayList一样,它是个可变数组*;但是和ArrayList不同的时,它具有以下特性: 1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止转载 2017-07-27 14:34:08 · 1299 阅读 · 1 评论 -
ArrayList源码解析——JDK1.8
转载:http://www.cnblogs.com/skywang12345/p/3308556.html1、ArrayList介绍ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList转载 2017-07-27 10:06:29 · 444 阅读 · 0 评论 -
不使用第三方变量交换两个参数的值
(1)算术运算 a = a + b; b = a - b; a = a - b;位运算(异或) a = a ^ b; b = a ^ b; a = a ^ b;转载 2017-07-15 22:58:14 · 430 阅读 · 0 评论 -
Java死锁
Java死锁的简单例子两个线程互相占有对方需要的资源而不释放,便形成了死锁。代码如下: Program.java/** * 程序类 * @author michael * */public class Program implements Runnable { //两个静态的资源 public static Object obj1 = new Object();原创 2017-07-15 15:49:56 · 1374 阅读 · 0 评论 -
ConcurrentHashMap中的putIfAbsent方法的使用以及返回值的含义
ConcurrentHashMap中的putIfAbsent方法的使用以及返回值的含义 public V putIfAbsent(@NotNull K key, @NotNull V value)putIfAbsent方法主要是在向ConcurrentHashMap中添加键—值对的时候,它会先判断该键值对是否已经存在。如果不存在(新的entry)原创 2017-07-13 22:09:29 · 33431 阅读 · 3 评论 -
数据库连接池
数据库连接池转载 2016-06-20 15:45:33 · 335 阅读 · 0 评论 -
No grammar constraints (DTD or XML schema).....两种解决方法
转载:http://blog.csdn.net/xwin1989/article/details/6754790方法一:常用方法 关闭XML验证工具栏:windows => preferences => xml => xml files => validation => Indicate when no grammar is specified:选择Ignore即可转载 2016-07-27 13:46:23 · 495 阅读 · 0 评论 -
JAVA 读取txt文件中的数据赋给String变量
public class MainActivity {private static final String fileName = "D:/Tao/MyEclipseWorkspace/resources/weather.txt";public static void main(String[] args) {//读取文件BufferedReader br = null原创 2016-07-26 16:17:15 · 11053 阅读 · 1 评论 -
Java 集合系列目录(Category)
转载:http://www.cnblogs.com/skywang12345/p/3323085.html 下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录。 01. Java 集合系列01之 总体框架02. Java 集合系列02之 Collection架构03. Java 集合系列03之 ArrayList详细介绍转载 2016-07-25 16:39:43 · 767 阅读 · 2 评论 -
Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
转载出处:http://www.cnblogs.com/skywang12345/p/3308556.htmlJava 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 概要上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用转载 2016-07-25 16:12:05 · 553 阅读 · 0 评论 -
项目中jSTL的使用
jSTL转载 2016-06-15 11:42:35 · 1572 阅读 · 0 评论 -
javaWeb项目中连接MySQL出现无法加载驱动的问题
servlet连接数据库报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver原创 2016-06-14 16:48:59 · 8529 阅读 · 4 评论 -
JDBC连接MYSQL类
JDBC连接MySQL数据库原创 2016-06-14 12:57:43 · 495 阅读 · 0 评论 -
JAVA中的Socket类
一、两类传输协议:TCP;UDP TCP 是一种面向连接的可靠传输协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输原创 2016-06-08 17:08:54 · 4477 阅读 · 0 评论 -
JDBC中输出PreparedStatement对象中的SQL语句的方法
JDBC中输出PreparedStatement对象中的SQL语句的方法原创 2016-06-22 19:19:00 · 8517 阅读 · 1 评论 -
JDBC 和 Mybatis连接mysql数据库的时候,设置字符集编码
jdbc连接mysql数据库的时候,设置字符集编码!!!可以如下配置,mysql可直接在url后面加上字符集设置:String url = "jdbc:mysql://localhost:3306/exceltest1?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull原创 2016-06-23 10:55:19 · 16342 阅读 · 2 评论 -
ASCII、Unicode和UTF-8编码的区别
转载:http://blog.csdn.net/u012223913/article/details/51772610编码大小支持语言ASCII1个字节英文Unicode2个字节(生僻字4个)所有语言UTF-81-6个字节,英文字母1个字节,汉字3个字节,转载 2017-06-07 23:16:55 · 333 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转载:http://blog.csdn.net/luanlouis/article/details/24589193这篇博文对动态代理的讲解恰到好处,特此转载,非常感谢博主!!class文件简介及加载 Java编译器编译好Java文件之后,会产生对应的 .class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。J转载 2017-04-20 12:16:09 · 587 阅读 · 0 评论 -
java中String、StringBuffer、StringBuilder的区别
转载:http://www.cnblogs.com/xudong-bupt/p/3961159.htmljava中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“f转载 2017-04-20 22:12:41 · 333 阅读 · 0 评论 -
理解Java的static import静态引入机制
转载:http://blog.csdn.net/xyz_fly/article/details/8178104 J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员。本文介绍这一机制的使用方法,以及使用过程中的注意事项。 在Java程序中,是不允许定义独立的函数和常量(当然,准确的说,只是被转载 2017-05-03 10:48:01 · 501 阅读 · 0 评论 -
JAVA中的 instanceof 关键字
转载:http://rodney.cnblogs.com/archive/2005/08/18/instanceof.htmlinstanceof 是Java的一个二元操作符,和==,>,它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: String s = "I AM an Object!"; boolean isOb转载 2016-11-10 10:39:36 · 339 阅读 · 0 评论