Java基础
barryCaizx
野蛮生长的一枚程序员
展开
-
try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
会在return中间执行!try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说 return 语句先执行,finally 语句后执行,但 return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回!但此时会出现两种情况:①、如果finally中也...转载 2019-02-12 13:49:12 · 3760 阅读 · 1 评论 -
JAVA 内存泄露详解(原因、例子及解决)
Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理 要了解Java中的内存泄露,首先就得知道Java中的内存是如何管理的。 在Java程序中,我们通常使用new为对象分配内...转载 2019-02-13 13:30:55 · 283 阅读 · 0 评论 -
Java提高篇——JVM加载class文件的原理机制
在面试java工程师的时候,这道题经常被问到,故需特别注意。回到顶部1、JVM 简介 JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从“Hello World ”开始的,然后会写个复杂点class ,然后再找一些开源框架,比如Spring ,Hibernate 等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发...转载 2019-02-13 13:50:26 · 136 阅读 · 0 评论 -
描述一下JVM加载class文件的原理机制?
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中...转载 2019-02-13 14:08:23 · 121 阅读 · 0 评论 -
什么是Java序列化,如何实现java序列化
简要解释: 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。 序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用...转载 2019-02-13 14:21:11 · 227 阅读 · 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 · 174 阅读 · 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 · 1773 阅读 · 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 · 1016 阅读 · 0 评论 -
Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。本文探讨synchronized关键字。synchronized关键字可以修饰方法,可以修饰代码块,但不能修饰构造器、属性等。对synchronized(this)的一些理解当两个并发线程访问同一个对象object中的这个synchr...转载 2019-02-23 21:38:25 · 250 阅读 · 0 评论 -
java中同步和异步有什么异同?
Java中交互方式分为同步和异步两种,异同情况如下:同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒...转载 2019-02-23 21:38:12 · 780 阅读 · 0 评论 -
Java 中会存在内存泄漏吗,请简单描述。
理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生。例如Hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flus...转载 2019-02-13 13:28:48 · 399 阅读 · 0 评论 -
MySQL数据库优化的八种方式(经典必看)
1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样...转载 2019-02-13 12:57:27 · 151 阅读 · 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 · 483 阅读 · 0 评论 -
Error与Exception的区别
首先,Error类和Exception类都是继承Throwable类Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception(异常)表示程...转载 2019-02-12 13:58:54 · 117 阅读 · 0 评论 -
运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。...转载 2019-02-12 14:22:01 · 160 阅读 · 0 评论 -
请写出你最常见到的5个runtime exception
ArithmeticException——由于除数为0引起的异常; ArrayStoreException——由于数组存储空间不够引起的异常; ClassCastException—一当把一个对象归为某个类,但实际上此对象并不是由这个类 创建的,也不是其子类创建的,则会引起异常; IllegalMonitorStateException——监控器状态出错引起的异常; NegativeArr...转载 2019-02-12 14:28:50 · 3857 阅读 · 1 评论 -
Java异常的分类和类结构图
转载 2019-02-12 14:32:18 · 784 阅读 · 1 评论 -
运行时异常与一般异常有何异同?
相同点:两种异常同属于Exception父类。不同点:(1)运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等。(2)一般异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。1、Java异常机制:Java把异常当做对象来处理,并...转载 2019-02-12 16:40:56 · 893 阅读 · 0 评论 -
Java中常见的几种RuntimeException
总结了一下JAVA中常见的几种RuntimeException,大约有如下几种:NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常。IllegalArgumentException - 传递非法参数异常。ArithmeticException - 算术运算异常ArrayStoreException - 向数组中存放与声明...转载 2019-02-12 16:43:35 · 420 阅读 · 0 评论 -
Java中的异常处理机制的简单原理和应用。
异常指Java程序运行时(非编译)所发生的非正常情况或错误。java对异常进行了分类,不同类型的异常使用了不同的java类,所有异常的根类为java.lang.Throwable.Throwable派生了2个子类:Error和Exception.Error表示程序本身无法克服和恢复的一种严重错误,程序只有死的份,如内存溢出和死锁问题等系统问题。Exception表示还能克服和恢复,...转载 2019-02-12 16:51:25 · 392 阅读 · 0 评论 -
Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别代表什么意义?在try块中可以抛出异常吗?
try块表示程序正常的业务执行代码。如果程序在执行try块的代码时出现了“非预期”情况,JVM将会生成一个异常对象,这个异常对象将会被后面相应的catch块捕获。catch块表示一个异常捕获块。当程序执行try块引发异常时,这个异常对象将会被后面相应的catch块捕获。throw用于手动地抛出异常对象。throw后面需要一个异常对象。throws用于在方法签名中声明抛出一个或多个异常类...转载 2019-02-12 17:09:39 · 736 阅读 · 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 · 374 阅读 · 0 评论 -
java中线程同步的几种方法
方法一:使用synchronized关键字 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。 注:同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronize...转载 2019-02-23 21:38:02 · 266 阅读 · 0 评论