Java SE
文章平均质量分 62
Williamwhc
代码改变世界 + 我改变代码 = 我改变世界
展开
-
JavaScript 原生数组的用法
数组是值的有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。JavaScript 数组是无类型的,也就意味着任何类型都可以放进数组,可以有一种类型,也可以有多种类型数组方法push() 和 pop()允许将数组当做栈一样来使用,两个方法都修改并替换原数组而非生成一个修改后的新数组。push()描述:向数组末尾添加一个或多个元素参数:至少一个元素返...原创 2018-09-25 11:09:35 · 102 阅读 · 0 评论 -
java枚举类型的实现原理
Java从JDK1.5开始支持枚举,也就是说,Java一开始是不支持枚举的,就像泛型一样,都是JDK1.5才加入的新特性。通常一个特性如果在一开始没有提供,在语言发展后期才添加,会遇到一个问题,就是向后兼容性的问题。像Java在1.5中引入的很多特性,为了向后兼容,编译器会帮我们写的源代码做很多事情,比如泛型为什么会擦除类型,为什么会生成桥接方法,foreach迭代,自动装箱/拆箱等,这有个术语叫...原创 2018-10-01 13:05:17 · 97 阅读 · 0 评论 -
队列的基本原理及实现
基本原理:队列是有序集合,新添加的一端为队尾,另一端为队头,当一个元素从队尾进入队列时,一直向队首移动,直到它成为移除的元素为止。这种排序是先进先出FIFO,生活中常见的例子就是去学校食堂打饭,人多时候需要排队,排队在前面的同学先打饭,新来的同学在后面排队,知道前面同学都打完饭,才轮到它代码实现:1、小游戏:小时候大家玩过一个游戏,大家围成一个圈,从某一个人开始报数,知道某个人报数...原创 2018-10-01 13:18:05 · 614 阅读 · 0 评论 -
Java之接口与实现
接口,顾名思义就是一个入口,什么的入口呢?当然是方法的的入口,接口与abstract类很类似,在接口中,不必具体说明方法的作用,只需要在接口中定义一个方法名就好,也就是说只需要知道这个方法有什么功能,而不必在意他的细节(是不是跟abstract类很像! 因为接口中的方法只能是abstract方法呀!)那么,接口与abstract类的区别是什么呢?为什么要定义接口呢?这个就需要学习过后才能理解了。...原创 2018-10-02 09:21:49 · 221 阅读 · 0 评论 -
java 原子操作的实现原理
处理器如何实现原子操作(1)使用总线锁保证原子性第一个机制是通过总线锁保证原子性。如果多个处理器同时对共享变量进行读改写操作(i++就是经典的读改写操作),那么共享变量就会被多个处理器同时进行操作,这样读改写操作就不是原子的,操作完之后共享变量的值会和期望的不一致;处理器使用总线锁就是来解决这个问题的。所谓总线锁就是使用处理器提供的一个LOCK#信号,当一个处理器在总线上输出此信号时,其他...原创 2018-10-02 09:30:47 · 270 阅读 · 0 评论 -
synchronized的用法介绍
synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有...原创 2018-03-25 10:36:43 · 92 阅读 · 0 评论 -
comparator接口与Comparable接口的区别
1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collec...原创 2018-03-25 10:34:44 · 97 阅读 · 0 评论 -
Java中的自动装箱与拆箱
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Collections)中放入原始类型值,因为集合只接收对象。通常这种情况下你的做法是,将这些原始类型的值转换成对象,...原创 2018-03-25 10:27:56 · 186 阅读 · 0 评论 -
理解面向对象
面向对象方法的三个基本特征:封装、继承和多态。 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能; 继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法; 多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时...原创 2018-03-25 10:26:53 · 109 阅读 · 0 评论 -
Java 循环语句中 break,continue,return有什么区别?
break 结束循环,跳出循环体,进行后面的程序; continue 结束本次循环,进行下次循环; return 跳出循环体所在的方法,相当于结束该方法。例子:[java] view plain copypublic class whiletrueTest{ public static void main(String[] args) { hei...原创 2018-03-25 10:25:58 · 226 阅读 · 0 评论 -
Java序列化与反序列化
**序列化和反序列化的概念 把对象转化为字节序列的过程称之为对象的序列化 反之,称之为反序列化serialVersionUID的作用 如果没有为指定的class配置serialVersionUID,那么java编译器会自动给这个class进行一个摘要算法,类似于指纹算法,只要这个文件有任何改动,得到的UID就会截然不同的,可以保证在这么多类中,这个编号是唯一的。所以,由于没有显指定 se...原创 2018-03-25 10:24:17 · 105 阅读 · 0 评论 -
mysql与oracle的区别
一、 并发性mysqlmysql以表级锁为主 , 对资源的粒度很大 , 如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。 虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracleoracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源...原创 2018-03-24 20:50:10 · 162 阅读 · 0 评论 -
解决eclipse中java代码注释变成乱码的问题
Eclipse JAVA文件注释乱码将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同。总结网上的建议和自己的体会,可以参考以下几种解决方式:1 改变整个文件类型的编码格式1) eclipse->window->preferences->General->...原创 2018-03-23 16:07:32 · 202 阅读 · 0 评论 -
SimpleDateFormat类中的parse方法
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateParse { public static void main(String[] args) throws ParseException { /* ...原创 2018-03-22 23:04:25 · 12504 阅读 · 0 评论 -
详细介绍如何在Eclipse中使用SVN
一、在Eclipse中下载安装Subclipse插件 1 打开eclipse,在Help菜单中找到marketPlace,点击进入。 2 在搜索框Find中输入subclipse,点击右边的Go按钮查询;subclipse找到之后,点击右下角的按钮install安装。 3 选择需要安装的一些文件,默认全选即可,点击Next进行下一步操作。 4 同...原创 2018-03-22 23:03:34 · 1177 阅读 · 1 评论 -
Java基础知识-static
一.变量static修饰的变量称为:静态变量,类变量或,成员变量,全局变量。1.在类被加载的时候就被初始化,与类关联,只要类存在,static变量就存在。而非static修饰的变量需要对象new出来才能划分存储空间,与具体的对象对应,且该变量仅为当前变量拥有。2.static修饰的变量在加载的时候优先于main方法加载在内存中的数据共享区-方法区,而非statci变量只有对象被new出...原创 2018-03-28 08:41:59 · 91 阅读 · 0 评论 -
2017 最新java面试题(技术面试)
1、servlet执行流程客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。...原创 2018-03-28 08:41:19 · 165 阅读 · 1 评论 -
JAVA异常处理总结
异常处理:在写Java程序时,异常处理是比较重要的地方,所以刚刚参考书中的相关章节,把异常处理的知识系统整理了一下。一)异常的产生:1)在程序运行时由 Java 虚拟机创建和抛出的异常2)在 Java 类库的函数中创建和抛出的异常3)程序员自己的函数中创建和抛出的异常 二)抛出异常:异常的抛出需要 throw 关键字。在定义一个函数时,如果在这个函数内部可能会抛出某...原创 2018-03-28 08:39:43 · 110 阅读 · 0 评论 -
Java接口
Java接口接口在Java中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,但是编写接口的方法和类相似,但是他们属于不同的概念。类描述对象的属性和方法,接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化但是可以被实现,一个实现接口的类,必须实现接...原创 2018-03-27 21:49:08 · 112 阅读 · 0 评论 -
hashCode()方法的作用
1. hashCode() 方法和equals()方法的作用其实是一样的,在java中都是用来对比两个对象是否相等、一致;2. 既然作用相同,为什么要定义两个作用相同的方法呢?二者的区别是什么? 因为重写的equals()方法比较的较为全面、较为复杂,以至于处理效率就相对比较低; 而利用hashCode()方法进行比较,则只要生成一个hash值进行比较就...原创 2018-03-26 22:54:03 · 183 阅读 · 0 评论 -
integer类型与int的==比较
java中有两种类型基本类型基本数据类类型存的是数值本身引用类型引用类型变量在内存放的是数据的引用基本类型通过==比较的是他们的值大小,而引用类型比较的是他们的引用地址正文在一些特殊的类中,如Integer在使用==比较的时候往往非常容易出错,下面通过几个例子来探索一下具体的原理代码片段public class Test03 { public sta...原创 2018-03-26 22:53:23 · 136 阅读 · 0 评论 -
JavaSE基础常见面试题
基础部分1.Java语言的特性?跨平台性、面向对象、安全性、多线程、简单易用。2.& 和 && 的区别?&运算符表示按位与、逻辑与,而&&运算符是短路与运算。3.String是最基本的数据类型吗?基本数据类型包括byte、int、char、long、float、double、boolean和short。 取值范围是 -2^(字...原创 2018-03-30 23:14:44 · 264 阅读 · 0 评论 -
Java序列化与反序列化
**序列化和反序列化的概念 把对象转化为字节序列的过程称之为对象的序列化 反之,称之为反序列化serialVersionUID的作用 如果没有为指定的class配置serialVersionUID,那么java编译器会自动给这个class进行一个摘要算法,类似于指纹算法,只要这个文件有任何改动,得到的UID就会截然不同的,可以保证在这么多类中,这个编号是唯一的。所以,由于没有显指定 se...原创 2018-03-30 22:51:12 · 87 阅读 · 0 评论 -
String使用equals方法和==分别比较的区别
equals方法和==的区别 首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用。这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = "Hello",它的使用方法如同基本类型int一样,比如int i = 1;,而作为一个对象来使用,则是指通过new关键字来创建一个新对象,比如String s = new String("Hello")。...原创 2018-03-29 18:18:38 · 509 阅读 · 1 评论 -
foreach与正常for循环效率对比
在Java中对于集合的遍历,一般有以下三种方法:for循环 foreach循环 Iterator遍历 下面来分析一下for循环和foreach循环的效率对比以及简单分析一下原因。 看下面的代码:public class ForTest { public static void testArrayList(ArrayList<Integer> arrayLi...原创 2018-03-29 14:38:20 · 11772 阅读 · 3 评论 -
Eclipse智能提示及快捷键
1、java智能提示(1). 打开Eclipse,选择打开" Window - Preferences"。(2). 在目录树上选择"Java-Editor-Content Assist",在右侧的"Auto-Activation"找到"Auto Activation triggers for java"选项。默认触发代码提示的就是"."这个符号。(3). 在"Auto Activati.原创 2018-03-28 08:43:04 · 96 阅读 · 0 评论 -
Java基础知识总结(二)
多线程和Java虚拟机创建线程有几种不同的方式?你喜欢哪一种?为什么?继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池 实现Callable接口。我更喜欢实现Runnable接口这种方法,当然这也是现在大多程序员会选用的方法。因为一个类只能继承一个父类而可以实现多个接口。同时,线程池也是非常高效的,很容易实现和使用。1.简述线程,程...原创 2018-04-03 23:20:54 · 135 阅读 · 0 评论 -
Javaweb基础知识总结
Servlet总结:在Java Web程序中,Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。Servlet可以设置初始化参数,供Servlet内部使用。一个Servlet类只会有一个实例,在它初始化时调用init()方法,销毁时调用destroy()方法。Ser...原创 2018-04-03 23:18:34 · 216 阅读 · 0 评论 -
《Think In Java》阅读笔记 ·第一卷
重载基本类型的重载当传入较小精确度的数值时,会调用拥有最接近该精确度形参的方法。 当传入较大精确度的数值时,需要至少窄化转换成所有重载方法中最大精确度的数值,否则编译器将报错。不能通过方法的返回值来区分重载方法构造器的重载 在构造器中可以调用其它重载构造器,但只能调用一个,且必须放在该构造器的首行。初始化静态成员的初始化public class Initializ...原创 2018-04-03 23:15:55 · 151 阅读 · 0 评论 -
OO面向对象设计的五大原则
S.O.L.I.D The Single Responsibility Principle(单一职责SRP) The Open/Closed Principle(开闭原则OCP) The Liskov Substitution Principle(里氏替换原则LSP) The Interface Segregation Principle(接口分离原则ISP) The Depend...原创 2018-04-03 23:09:12 · 221 阅读 · 0 评论 -
面向对象和面向过程的区别
(1)借用一本书里的比喻写程序就好像是在看电视用面向过程就等于是要先自己制造一台电视,然后再收看节目;而面向对象则是直接去商店买一台电视收看。面向对象编程省去了很多不需要知道的部分,就好比即使你不清楚如何制造电视机,也能看电视一样。(2)面向对象的数据是封装在对象内部,而面向过程的则不是。面向对象的概念更能描述现实世界,任何物体都是对象,而面向过程则比较麻烦。当然,如果你先学了面向过程,反而会觉得...原创 2018-04-03 23:08:09 · 96 阅读 · 0 评论 -
Java--面向对象
1 面向对象细节成员属性有默认的初始值,其中String等引用类型为null,而局部变量没有初始值。2 匿名对象作用:调用某对象某方法仅一次 new Student().fun(); 作为实参调用某个函数 a.fun(new Student());3 构造代码块构造代码块的作用:给对象进行统一的初始化 构造函数的作用:给对应的对象进行初始化 经过java编译器编译后,构造...原创 2018-04-03 23:06:16 · 88 阅读 · 0 评论 -
Java面试知识点整理
优化Hibernate所鼓励的7大措施: 1.尽量使用many-to-one,避免使用单项one-to-many(Hibernate鼓励使用双向一对多关联,不使用单向一对多关联。单向一对多关联映射是在one端维护关系的,必须先保存many端后才可以保存one端,所以在保存many端时该端不知道one端是否存在相应的数据,所以只能将维护的关系字段设置为null,如果为非空则无法保存。因为是one...原创 2018-04-02 22:40:24 · 118 阅读 · 0 评论 -
alibaba的FastJson(高性能JSON开发包)
这是关于FastJson的一个使用Demo,在Java环境下验证的 [java] view plaincopy class User{ private int id; private String name; public int getId() { return id; } public ...原创 2018-04-01 08:05:11 · 288 阅读 · 0 评论 -
Java编程思想
高精度数字Java提供了两个用于高精度技术的类:BigInteger和BigDecimal。虽然它们大体上属于"包装器类"的范畴,但二者都没有对应的基本类型。这两个类包含的方法,提供的操作与对基本类型所能执行的操作相似。也就是说,能作用于int或float的操作,也同样能作用于BigInteger和BigDecimal。只不过必须以方法调用的方式取代运算符方式来实现。由于这么做复杂了许多,所以运算...原创 2018-04-07 11:11:18 · 727 阅读 · 0 评论 -
面向对象总结
1. 面向对象的思想1.1. 开发软件的设计思路:1.1.1. 面向过程:解决复杂业务是按照业务操作的自然顺序,从前到后,依次按照步骤完成1.1.2. 面向对象:解决复杂业务是将业务拆分成若干个环节,在每个环节上找到可以完成任务的对象,调用业务方法,完成整个业务2. 封装:将数据私有化,提供公共的方法给外界程序调用2.1. 封装的原因:根据业务需要将外界的数据进行业务处理时,用...原创 2018-04-07 11:07:22 · 173 阅读 · 0 评论 -
深入理解Java的接口和抽象类
一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激。 一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为...原创 2018-04-06 23:28:43 · 101 阅读 · 0 评论 -
最长回文字符串-Java实现
一、问题描述回文字符串定义:如果一个字符串正着读和反着读是一样的,那它就是回文串例如:aba 、 abcba 。 要求: 给出一个字符串:asdsaasa 返回一个最长的回文字符串:asdsa二、解法(回文字符串为奇数)public class Test { public static void main(String[] args) { String ...原创 2018-04-14 10:06:11 · 1903 阅读 · 0 评论 -
对象与内存控制——实例变量与类变量
1、Java程序的变量大体可分为成员变量和局部变量。 类体内定义的变量被称为成员变量。如果定义该成员变量时没有使用static修饰,该成员变量又称为非静态变量或实例变量;如果使用了static修饰,则该成员变量又可被成为静态变量或类变量。局部变量:包括如下三类1、形参 2、方法内的局部变量 3、代码块内的局部变量 ; 局部变量的作用时间很短,它们都被存储在方法的栈内存中。 2、J...原创 2018-04-14 10:04:49 · 96 阅读 · 0 评论 -
static关键字
在Java语言中,static表示“静态”的意思,static在java语言中使用有四种,变量,方法,代码块,内部类。1、static变量static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响...原创 2018-04-14 10:04:07 · 76 阅读 · 0 评论