java基础
alinshen
这个作者很懒,什么都没留下…
展开
-
父类中不存在无参数构造函数会出错吗?
java中只要调用子类的构造函数就要调用父类无参数的构造函数吗?若父类中不存在无参数构造函数会出错吗? 答:Java中只要调用子类的构造函数就一定会调用父类的构造函数,这是毋庸置疑的!有时我们并没有在父类中写有参和无参的构造方法,但是这样我们在定义子类对象时调用子类构造函数时,其实也调用父类的构造函数,这是系统自动为我们添加的“public Pen(){}”。但是如果我们在父类中已经转载 2017-05-22 22:05:23 · 1081 阅读 · 0 评论 -
如何实现字符串的反转及替换?
public static String reverse(String originStr) {if(originStr == null || originStr.length() return originStr;return reverse(originStr.substring(1)) + originStr.charAt(0);}转载 2017-05-22 22:24:21 · 1093 阅读 · 0 评论 -
Java面试题全集(中)
这部分主要是与Java Web和Web Service相关的面试题。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充:Sun Micros转载 2017-05-22 22:40:01 · 1036 阅读 · 0 评论 -
Java面试题全集(下)
这部分主要是开源Java EE框架方面的内容,包括hibernate、MyBatis、spring、Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章《Java面试题集(86-115)》。此外,这篇文章还对企业应用架构、大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助。转载 2017-05-22 22:49:15 · 552 阅读 · 0 评论 -
Java面试题全集(上)
1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的转载 2017-05-22 22:33:01 · 538 阅读 · 0 评论 -
值传递和引用传递
值传递:传递的是实际参数的一个副本,这个值可能是基本类型,也可能是引用类型的地址.引用传递:传递的是实际参数的地址的一个副本.在java中,只有值传递.一.值传递1.基本类型 1 public class ValueTest { 2 3 public static void main(String[] args) { 4 int转载 2017-05-23 17:34:35 · 264 阅读 · 0 评论 -
什么情况下用+运算符进行字符串连接比调用StringBuilder对象的append方法连接字符串性能更好?
经常在网上看到或者在周围听到有人说字符串拼接不要直接用 String 相加, StringBuilder 的效率要比 String 直接相加拼接要高。还有人常说, StringBuffer 是同步的(线程安全的), StringBuilder 不是线程安全的,同步带来了性能消耗,那么 String 、 StringBuilder 、 StringBuffer 这三者的效率到底有多大的差距呢?T转载 2017-05-23 18:05:55 · 15130 阅读 · 2 评论 -
凡是属性中有Set的都直接声明中直接new出来
凡是属性中有Set的都直接声明中直接new出来,避免后面出现空指针异常,比如:public class Department { private Long id; private String name; private String description; private Department parent; private Set children = new HashSet(原创 2017-05-19 11:08:40 · 527 阅读 · 0 评论 -
父类使用<T>泛型 并通过注入方式 获取到实体类型
通过空参构造获取真正的实体类型public BaseDaoImpl() { //获得实体类型 ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();//获得真正的父类 Type[] types = genericSuperclass.getAc原创 2017-05-19 09:18:23 · 1418 阅读 · 0 评论 -
怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?
public int compareTo(Student o) { return this.age - o.age; // 比较年龄(年龄的升序) }应该理解成return (-1)×(this.age-o.age)计算机没有所谓的正序和逆序,他只管大还是小,你给他小的放前面,大的放后面,然后乘负一,整个顺序就反过来了比如:this.ag转载 2017-05-24 08:09:02 · 12113 阅读 · 4 评论 -
常用正则匹配符号
1、字母:匹配单个字母(1)A:表示匹配字母A;(2)\\:匹配转义字符“\”;(3)\t:匹配转义字符“\t”;(4)\n:匹配转义字符“\n”;2、一组字符:任意匹配里面的一个单个字符:(1)[abc]:表示可能是字母a,可能是字母b或者是字母c;(2)[^abc]:表示不是字母a,字母b,字母c的任意一个;(3)[a-zA-Z]:表示全部字母中的任意一个;转载 2017-05-24 18:26:27 · 1267 阅读 · 0 评论 -
Java 异步机制与同步机制的区别
所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回。所以异步的同义语是非阻塞(None Blocking)。 网上有很多网友用很通俗的比喻 把同步和异步讲解的很透彻 转过来 举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事转载 2017-05-25 16:56:58 · 352 阅读 · 0 评论 -
抽象类和接口的区别以及使用场景
1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。 2 如果许多类实现了某个接口,那么每个都要用代码实现那些方法 3 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。 所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你的类完全可以自己实转载 2017-05-31 07:19:12 · 404 阅读 · 0 评论 -
泛型与通配符详解
1回顾泛型类 泛型类:具有一个或多个泛型变量的类被称之为泛型类。class ClassGenericity { //在类里面可以直接使用T的类型 T aa; public void test11(T bb) { //................ } //静态方法 在类上面定义的泛型,不能再静态方法里面使用 p转载 2017-06-15 22:12:15 · 210 阅读 · 0 评论 -
BaseServiceImpl中的实现关键点
抽取BaseService由于在每个业务service中都存放了同样的基类方法,如增删改查;应写一个BaseService来实现这些基础方法并用BaseServiceImpl来实现其操作。这样具体业务Service可以直接继承这些内容。在BaseServiceImpl中只需要操作基础方法,所以在与数据库的操作交互中,只要能够获取到BaseDao对象即可。这个BaseDao可以从具体的业务Ser转载 2017-06-15 22:47:09 · 4289 阅读 · 0 评论 -
post和get请求相关知识点
1.什么情况下属于get请求、post请求一般情况,(1)在浏览器中直接输入网址访问的,(2)通过a标签的链接访问的,都属于get请求。一般情况,(1)使用Form表单提交(指定了post的),(2)ajax(指定了post的),为post请求。原创 2017-06-16 14:14:15 · 334 阅读 · 0 评论 -
Java中a=a+b 与 a+=b区别 以及和类型转换的关系
比较这两种运算符的区别,可以有以下两个方面的比较: 执行效率和类型转换。首先说一下执行效率问题就单纯的执行这两条语句,不考虑编译器的优化的话,a=a+b的执行效率是低于a+=b的,因为它多进行了一步中间变量的操作,而且会多占用一个变量的空间。而Java编译器默认对其进行了优化,优化之后两条语句都当做 a+=b来执行了,所以实际上是没有任何却别的。其次说一下有关类型转换的区别。相信大转载 2017-05-22 13:27:00 · 482 阅读 · 0 评论 -
Java接口和Java抽象类的存在价值
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了。 1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。 如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这转载 2017-05-22 16:50:23 · 322 阅读 · 0 评论 -
javabean规范中要求实现Serializable接口,有什么作用?
一直都清楚JavaBean要实现Java.io.Serializable接口实现序列化,但是一直都没有深究为什么需要序列化?通过查看资料现在简单的描述如下以方便自己理解。Serialize 是什么?这是IO存储中的一个概念。计算机中所有的内容都是0或者1的数字。这些数字按顺序排列,便可以表示计算机中的万事万物,当然Java的对象也不例外。在内存中,无论如何表示,对我们的操作都没有影转载 2017-05-22 17:46:27 · 377 阅读 · 0 评论 -
String常见面试题
Java代码String s = new String("abc"); String s1 = "abc"; String s2 = new String("abc"); System.out.println(s == s1); System.out.println(s == s2); System.out.println(s1 == s2); String转载 2017-06-02 22:16:24 · 353 阅读 · 0 评论 -
Java中的IO流
Java的I/O功能通过java.io包下的类和接口来支持,在java.io包下主要包括输入/输出两种IO流,每种输入/输出流又可分为字节流和字符流两大类.字节流支持以字节(8位)为单位的IO操作,而字符流则以字符(16位-Java中)为单位进行IO操作. 除此之外,Java的IO流还使用装饰者模式,将IO流分成底层节点流和上层处理流,节点流直接和底层的物理存储节点关联,虽然不同的物理节点获取转载 2017-06-18 22:55:09 · 350 阅读 · 0 评论 -
java中的关键字
Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现break 一个Java的关键字,用来改变程序执行流程,立刻从当前语句的下一句开始执行从。如果后面跟有一个标签,则从标签对应的地方开始执行case Java语言的关键字,用来定义一组转载 2017-06-20 14:03:51 · 380 阅读 · 0 评论 -
如果某个方法是静态的,它的行为就不具有多态性
下面这段代码输出的结果是:public class Test { public static void main(String args[]) { Sub sub = new Sub(); System.out.println(sub.x); // 1 System.out.println(sub.n); // 2 System.out.println(sub.method1转载 2017-06-20 14:44:21 · 298 阅读 · 0 评论 -
Java 8系列之重新认识HashMap
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.转载 2017-06-20 15:41:27 · 252 阅读 · 0 评论 -
HashMap 、 ArrayList、String 重写了equals方法 而Object类(比如User)没有重写
没有重写的,使用equals进行比较时,相当于==,比较的是对象的地址值。而重写过的则比较的是对象里面的东西。所以:public class Test1{ public String name="abc"; public static void main(String[] args){ Test1 test=new Test1();原创 2017-06-20 16:10:03 · 531 阅读 · 0 评论 -
Servlet的生命周期
Servlet的生命周期 1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet 2.创建:通过调用Servlet的构造函数来创建一个Servlet实例3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端转载 2017-06-21 07:50:25 · 164 阅读 · 0 评论 -
Object中的getClass()返回的是当前运行的类
package com.dusixing.test;import java.util.Date;public class SuperTest extends Date { private static final long serialVersionUID = 1L; private void test(){ System.out.println(super.getClass()原创 2017-06-21 08:18:01 · 1257 阅读 · 0 评论 -
关于try finally 中的return语句的问题
在try的括号里面有return一个值,那在哪里执行finally里的代码? 对于try中的return语句,return执行到中间的时候发现finally,则先不返回,而是把值先暂存到本地栈,等finally运行之后再返回,如果finally里也有返回语句,那么以finally为主,否则才把本地栈里的返回值真的返回。比如: public static vo原创 2017-06-16 18:17:51 · 335 阅读 · 0 评论 -
加载驱动程序的方法
加载驱动方法1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver")转载 2017-06-21 10:55:03 · 1807 阅读 · 0 评论 -
jvm 堆内存 栈内存 大小设置 查看堆大小
4种方式配置不同作用域的jvm的堆栈内存!1、Eclise 中设置jvm内存: 修改eclipse的配置文件,对所有工程都起作用 修改eclipse根目录下的eclipse.ini文件 -vmargs //虚拟机设置 -Xms40m //初始内存 -Xmx256m //最大内存 -Xmn16m //最小内存转载 2017-07-10 20:28:15 · 22181 阅读 · 2 评论 -
object类的基本方法
getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。Object类位于转载 2017-06-21 14:52:38 · 6840 阅读 · 1 评论 -
在线预览Word,Excel~
今天有个需求, 直接支持web端预览word,excel等文件, 查了一下很多写的比较麻烦, 这里找到一种简单的方式:http://view.officeapps.live.com/op/view.aspx?src=src后面填写你上传的文件地址, 例如:https://view.officeapps.live.com/op/view.aspx?src=http://opd9w8mwo.b转载 2017-06-30 17:51:05 · 4365 阅读 · 1 评论 -
关于文件拷贝效率问题
1.不采用缓存,读一次写一次[java] view plain copypublic static void copy1(String input,String output){ FileInputStream fis = null; FileOutputStream fos = null; tr转载 2017-07-02 08:10:28 · 255 阅读 · 0 评论 -
java中字符串数组和字符串之间的转换
字符串数组转为字符串:1.如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法 String[] str = {"abc", "bcd", "def"};StringBuffer sb = new StringBuffer();for(int i = 0; i sb. append(str[i]);}String s = sb.toString();2.如果是 “字符数组” 转转载 2017-07-12 06:38:30 · 368 阅读 · 0 评论 -
webservice面试题
一 什么是webservice(用你的话描述webservice)?在什么时候用webservice(webservice能给我们解决什么样的问题)?一句话概括:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用Java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同转载 2017-07-12 07:38:47 · 4597 阅读 · 0 评论 -
Java 中 final、finally 和 finalize 使用总结
1. final1.1 final 修饰变量final 用于修饰变量时表示该变量一旦被初始化就不可以再改变,这里的不可以再改变指的是,对于基本类型它们的值不能改变,对于对象变量它们的引用不可以改变,对于后者需要注意的是,只是引用不能改变,即指向初始化时的那个对象,对象中的属性等是可以改变的,例如我们有个 final 修饰的 ArrayList,那么这个变量只能是指向最开始初始化时的转载 2017-07-02 23:06:05 · 298 阅读 · 0 评论 -
两年Java开发工作经验面试总结
看面试题正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下:Java面试题全集(上) 很多基础的东西,建议先看。各大公司Java后端开发面试题总结面试心得与总结—-BAT、网易、蘑菇街关于Java面试,你应该准备这些知识点深入学习在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例转载 2017-06-23 06:40:05 · 19608 阅读 · 5 评论 -
作为Java面试官--谈谈一年来的面试总结
自过完年到现在,作为一名中小型(200-500)人的互联网公司的小Java技术面试官.目前已经面试了将近200个求职者,作为一名技术深度不怎么样的程序员.我还是被雷了个外焦里嫩...面试者我就不多说了,林子大了什么鸟都有,大家都懂.简单谈一谈我常问的一些问题,以及目的吧:ps:本人也不是大牛,就是接触的面广了一点,多少都能唠上两句~另外本人面的大多是3年以内工作经验的.心情转载 2017-06-23 06:55:48 · 20942 阅读 · 19 评论 -
volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解转载 2017-07-03 11:17:07 · 122 阅读 · 0 评论 -
两年Java程序员面试经
工作两年有余,本人第一份工作是在一家外包公司,第二份工作是在一家做SAAS平台的公司,第一家公司让我入门,进入了软件开发的行业,了解了一些基础的东西;第二家公司由于规模不大,很多活儿都是一个人来做,从产品到开发、测试、运维我都了解了,对于整体的软件开发流程有了很大的了解。但是,为了自己的更好发展,决定去一家大公司,于5月初提出了离职,虽然领导挽留,但是我还是离职了,然后我自己面试了很多家公司,大公转载 2017-06-24 00:07:43 · 709 阅读 · 0 评论