
java面试
barryCaizx
野蛮生长的一枚程序员
展开
-
public、private、protected、Friendly的区别与作用域
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。 1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 2、private:private表示私有,私有的意思就是除了cla...转载 2019-02-08 21:21:57 · 199 阅读 · 0 评论 -
Java中常见的几种RuntimeException
总结了一下JAVA中常见的几种RuntimeException,大约有如下几种:NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常。IllegalArgumentException - 传递非法参数异常。ArithmeticException - 算术运算异常ArrayStoreException - 向数组中存放与声明...转载 2019-02-12 16:43:35 · 436 阅读 · 0 评论 -
Java中的异常处理机制的简单原理和应用。
异常指Java程序运行时(非编译)所发生的非正常情况或错误。java对异常进行了分类,不同类型的异常使用了不同的java类,所有异常的根类为java.lang.Throwable.Throwable派生了2个子类:Error和Exception.Error表示程序本身无法克服和恢复的一种严重错误,程序只有死的份,如内存溢出和死锁问题等系统问题。Exception表示还能克服和恢复,...转载 2019-02-12 16:51:25 · 407 阅读 · 0 评论 -
Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别代表什么意义?在try块中可以抛出异常吗?
try块表示程序正常的业务执行代码。如果程序在执行try块的代码时出现了“非预期”情况,JVM将会生成一个异常对象,这个异常对象将会被后面相应的catch块捕获。catch块表示一个异常捕获块。当程序执行try块引发异常时,这个异常对象将会被后面相应的catch块捕获。throw用于手动地抛出异常对象。throw后面需要一个异常对象。throws用于在方法签名中声明抛出一个或多个异常类...转载 2019-02-12 17:09:39 · 747 阅读 · 0 评论 -
两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对
答:不对,有相同的 hash code这是java语言的定义:1) 对象相等则hashCode一定相等;2) hashCode相等对象未必相等1.如果是基本变量,没有hashcode和equals方法,基本变量的比较方式就只有==;2.如果是变量,由于在java中所有变量定义都是一个指向实际存储的一个句柄(你可以理解为c++中的指针),在这里==是比较句柄的地址(你可以理解...转载 2019-02-13 12:57:07 · 388 阅读 · 0 评论 -
mysql常用语句
MySQL常用语句 一、连接MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysql bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: ...转载 2019-02-13 12:57:18 · 507 阅读 · 0 评论 -
MySQL数据库优化的八种方式(经典必看)
1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样...转载 2019-02-13 12:57:27 · 161 阅读 · 0 评论 -
Java 中会存在内存泄漏吗,请简单描述。
理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生。例如Hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flus...转载 2019-02-13 13:28:48 · 409 阅读 · 0 评论 -
JAVA 内存泄露详解(原因、例子及解决)
Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理 要了解Java中的内存泄露,首先就得知道Java中的内存是如何管理的。 在Java程序中,我们通常使用new为对象分配内...转载 2019-02-13 13:30:55 · 291 阅读 · 0 评论 -
Java提高篇——JVM加载class文件的原理机制
在面试java工程师的时候,这道题经常被问到,故需特别注意。回到顶部1、JVM 简介 JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从“Hello World ”开始的,然后会写个复杂点class ,然后再找一些开源框架,比如Spring ,Hibernate 等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发...转载 2019-02-13 13:50:26 · 149 阅读 · 0 评论 -
描述一下JVM加载class文件的原理机制?
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中...转载 2019-02-13 14:08:23 · 131 阅读 · 0 评论 -
什么是Java序列化,如何实现java序列化
简要解释: 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。 序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用...转载 2019-02-13 14:21:11 · 235 阅读 · 0 评论 -
Java 如何跳出多重嵌套循环体?
1. 在最外层循环语句前定义一个标号,循环体内任意位置都可以使用带有标号的break语句跳出外层循环,结束整个循环。 System.out.println("MainClass1 Start..."); ko: for (int i = 0; i < 10; i++) { for (int j ...转载 2019-02-13 14:25:36 · 185 阅读 · 0 评论 -
JAVA中跳出多重嵌套循环的几种方法
一、标号方式 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号break语句,即可跳出外层循环。例如:ok:for(int i=0;i<10;i++) {for(int j=0;j<10;j++) {System.out.println(“i=” + i + “,j=” + j);if(j == 5) break o...转载 2019-02-13 14:32:37 · 1833 阅读 · 1 评论 -
java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类的实例对象, 子类加上 run 方法后的代码如下:new Thread(){ public void run(){ } }.start();第二种:new T...转载 2019-02-23 21:38:36 · 1032 阅读 · 0 评论 -
Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。本文探讨synchronized关键字。synchronized关键字可以修饰方法,可以修饰代码块,但不能修饰构造器、属性等。对synchronized(this)的一些理解当两个并发线程访问同一个对象object中的这个synchr...转载 2019-02-23 21:38:25 · 261 阅读 · 0 评论 -
java中同步和异步有什么异同?
Java中交互方式分为同步和异步两种,异同情况如下:同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒...转载 2019-02-23 21:38:12 · 792 阅读 · 0 评论 -
运行时异常与一般异常有何异同?
相同点:两种异常同属于Exception父类。不同点:(1)运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等。(2)一般异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。1、Java异常机制:Java把异常当做对象来处理,并...转载 2019-02-12 16:40:56 · 939 阅读 · 0 评论 -
Java异常的分类和类结构图
转载 2019-02-12 14:32:18 · 805 阅读 · 1 评论 -
Java中Collection和Collections的区别
1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。 Collection ├List │├LinkedList │├Array...转载 2019-02-09 17:17:09 · 209 阅读 · 0 评论 -
overloading和overriding,两者有什么区别和联系?
方法重载(Overloading)和方法重写(Overriding)都是多态性的表现(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)(3)方法重载是一个类的多态性表现,...转载 2019-02-09 17:32:39 · 210 阅读 · 0 评论 -
Java中是否可以继承String类
Java中,是否可以继承String类?为什么?答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。public final class String implements java.io.Serializable, Comparable<String>, CharSequence 根据程序上下文环境,Java关键...转载 2019-02-10 12:32:55 · 502 阅读 · 0 评论 -
什么事字符串常亮值
字符串常量池是java堆内存中一个特殊的存储区域,当我们建立一个String对象时,假设常量池不存在该字符串,则创建一个,若存在则直接引用已经存在的字符串。当我们对String对象值改变的时候,例如 String a="A"; a="B" 。a是String对象的一个引用(我们这里所说的String对象其实是指字符串常量),当a=“B”执行时,并不是原本String对象("A")发生改变,而是...原创 2019-02-10 14:14:32 · 448 阅读 · 0 评论 -
final、finally与finalize的区别
1. final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。1.2 修饰方法使用final方法的原因主要有两个: ...转载 2019-02-10 20:11:59 · 136 阅读 · 0 评论 -
String是基本的数据类型吗?
String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个,它们分别为:1 字符类型:byte,char2 基本整型:short,int,long3 浮点型:float,double4 布尔类型:boolean...转载 2019-02-10 20:18:43 · 503 阅读 · 0 评论 -
什么是字符串常量池?
字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价。JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化。为 了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中, 就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。Java能够进行这样的优化是因为字符串是...转载 2019-02-10 20:26:34 · 677 阅读 · 0 评论 -
String与StringBuffer的区别
串与StringBuffer的区别的简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改;而字符串对象一旦产生后就不可以被修改,重新赋值其实是两个对象的StringBuffer的内部实现方式和字符串不同,StringBuffer的在进行字符串处理时,不生成新的对象,在内存使用上要优于串类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入,删除等操作,使用S...转载 2019-02-10 20:45:14 · 164 阅读 · 0 评论 -
String字符串的常用方法
一、String 的含义 String 是定义一个字符串对象(内存中的字符串都是一个对象。) String 一旦被初始化就不能被改变(可以改变变量指向,但是不能改变对象内容) 定义方式: String s1 = “abc”; //在内存中存在一个对象。 String s2 = new String("abc"); //在内存中存在两个对象。 ...转载 2019-02-10 21:45:05 · 1514 阅读 · 0 评论 -
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
JDK1.7之前switch(expre1)函数中,expre1是一个整数表达式,因此传递给switch和case语句的参数是int、short、char或者byte。 注意,对于精度比int大的类型,比如long、float、double,不会自动转换为int,如果想使用,就必须强转为int,如(int)float。 jdk1.7后,整型,枚举类型,boolea...转载 2019-02-10 21:56:29 · 2303 阅读 · 0 评论 -
一些常用的 集合类和方法
转载 2019-02-10 22:02:07 · 762 阅读 · 0 评论 -
你所知道的集合类都有哪些?主要方法?
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtabl...转载 2019-02-12 13:48:00 · 626 阅读 · 0 评论 -
try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
会在return中间执行!try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说 return 语句先执行,finally 语句后执行,但 return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回!但此时会出现两种情况:①、如果finally中也...转载 2019-02-12 13:49:12 · 3780 阅读 · 1 评论 -
Error与Exception的区别
首先,Error类和Exception类都是继承Throwable类Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception(异常)表示程...转载 2019-02-12 13:58:54 · 126 阅读 · 0 评论 -
运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。...转载 2019-02-12 14:22:01 · 170 阅读 · 0 评论 -
请写出你最常见到的5个runtime exception
ArithmeticException——由于除数为0引起的异常; ArrayStoreException——由于数组存储空间不够引起的异常; ClassCastException—一当把一个对象归为某个类,但实际上此对象并不是由这个类 创建的,也不是其子类创建的,则会引起异常; IllegalMonitorStateException——监控器状态出错引起的异常; NegativeArr...转载 2019-02-12 14:28:50 · 3880 阅读 · 1 评论 -
java中线程同步的几种方法
方法一:使用synchronized关键字 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。 注:同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronize...转载 2019-02-23 21:38:02 · 279 阅读 · 0 评论