![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Core Java
文章平均质量分 54
wanghao191996155
这个作者很懒,什么都没留下…
展开
-
自定义异常
内置异常不可能始终足以捕获所有错误,因此需要用户自定义的异常类用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类创建的任何用户自定义的异常类都可以获得Throwable类定义的方法例如:public class MyException extends Exception{ public MyException(){} public My...原创 2010-12-10 12:09:57 · 78 阅读 · 0 评论 -
Java中newString(abc)创建几个对象的解释
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分...原创 2010-11-02 10:04:45 · 86 阅读 · 0 评论 -
Java日期处理
1.有关日期时间的类 1.java.util.Date 构造方法 Date() :无参数的构造方法,将构建一个保持当前日期.时间的Date对象。 Date(long time) :参数为1970年1月1日00时00分00秒起所经过的毫秒数,将构建一个保持该日期.时间的精确到毫秒的Date对象。 方法 String toString():把此 D...原创 2010-10-19 17:17:32 · 89 阅读 · 0 评论 -
线程同步
一个方法被synchronized修饰:当程序执行此方法时,当前对象被锁定。其他线程能够访问没被锁定的方法。原创 2010-10-17 21:17:43 · 66 阅读 · 0 评论 -
线程的状态及生命周期
线程共有6种状态;在某一时刻只能是这6种状态之一。这些状态由Thread.State这个枚举类型表示,并且可以通过getState()方法获得当前具体的状态类型。 NEW 至今尚未启动的线程的状态。 当使用new一个新线程时,如new Thread(r),但还没有执行start(),线程还没有开始运行,这时线程的状态就是NEW。 RUNNABLE 可运行线程...原创 2010-10-17 20:29:27 · 91 阅读 · 0 评论 -
sleep()、wait()、yield()、join()方法 浅析
线程退出最好自己实现,在运行状态中一直检验一个状态,如果这个状态为真,就一直运行,如果外界更改了这个状态变量,那么线程就停止运行。1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。 sleep()使当前线程进入阻塞状态,在指定时间内不会执行。 2.wait()方法 在其他线程调用对象的notify或...2010-10-17 18:54:54 · 66 阅读 · 0 评论 -
RandomAccessFile类的应用
文件存取通常是顺序的,每在文件中存取一次,文件的读取位置就会相对于目前的位置前进一次。然而有时必须指定文件的某个区段进行读取或写入的动作,也就是进行随机存取(Random Access),即要能在文件中随意地移动读取位置。这时可以使用RandomAccessFile,使用它的seek()方法来指定文件存取的位置,指定的单位是字节。 为了移动存取位置时的方便,通常在随...原创 2010-10-17 10:39:38 · 144 阅读 · 0 评论 -
利用Externalizable接口实现对象的自定义序列化
SerializedUser.javaimport java.io.Externalizable;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java....原创 2010-10-17 10:12:15 · 163 阅读 · 0 评论 -
管道流 PiperStream 的应用--------多线程
TestPiperStream.javaimport java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;import java.util.logging.Level;import java.util.logging.Logger;/** *管道流P...原创 2010-10-17 10:10:16 · 141 阅读 · 0 评论 -
Java Socket 初步详解
网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置。并去建立两者之间的联系,然后完成数据的通讯就可以了,这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端,基于这个简单的模型,就可以进入网络编程啦。 Java对这个模型的支持有很多种Api,而这里我只想介绍有关Socket的编程接口,对于Ja...原创 2010-11-08 09:05:55 · 75 阅读 · 0 评论 -
Java集合类
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 ...原创 2010-12-03 14:26:30 · 66 阅读 · 0 评论 -
编写异常的规范
错误的编码:OutputStreamWriter out = new OutputStreamWriter();Connection conn = DriverManager.getConnection(url,user,pwd);try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.execu...原创 2010-12-10 11:35:09 · 117 阅读 · 0 评论 -
内部类
内部类详解 1、定义 一个类的定义放在另一个类的内部,这个类就叫做内部类。Java代码 public class First { public class Contents{ public void f(){ System.out.println("In Class First's inner Class Content...原创 2010-12-06 16:51:57 · 71 阅读 · 0 评论 -
抽象类和接口的区别
含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不必是抽象的,抽象来中定义抽象方法必须放在具体子类中实现,所以呀,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有方法,那么,子类也必须定义为抽象类。 接口(inter...原创 2010-12-06 16:47:51 · 69 阅读 · 0 评论 -
人工抛出异常
Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要人工创建并抛出首先要生成异常对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 IOException e =new IOException(); throw e;可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误 throw new String("w...原创 2010-12-06 16:35:03 · 247 阅读 · 0 评论 -
Java异常处理机制
1.Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 2.当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 3.如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 ...原创 2010-12-06 16:30:11 · 61 阅读 · 0 评论 -
Java的垃圾回收原理与机制
JAVA中的对象是在堆上分配,而在堆上分配存储空间的方式是昂贵的.正是由于GC才使java在堆上的空间分配速度得以于其他语言在堆栈上分配速度相媲美.java对象也不再有作用域的概念.作用域是对于引用而言的.垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收.程序可...原创 2010-12-06 16:12:48 · 77 阅读 · 0 评论 -
Comparable和Comparator接口
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序 Comparable是一个对象本身就已经支持自比较所需要实现的接口(如String Integer自己就可以完成比较大小操作) 而Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大...原创 2010-12-06 15:13:47 · 75 阅读 · 0 评论 -
手工打包JAR
1.把准备打包的.java文件集中到一个目录中例如c:\source 2.建立一个存放.class文件的目录例如c:\class 3.在C盘根目录下使用命令javac -d class source\*.java 编译所有.java源文件,生成的.class字节码文件放在class目录中 4.在class目录下执行jar cvf abc.jar *.* 把所有的文件...原创 2010-12-06 12:57:05 · 269 阅读 · 0 评论 -
Java IO:byte[]、char[]、String三种对象的转换
String与byte[]对象进行转换时应指定编码格式,否则有潜在的乱码问题。byte[] b = s.getBytes("utf-8"); String s = new String(b,"utf-8"); Java的IO库提供了专门的管道来对这3个对象进行读写,他们是StringReader/Writer CharArrayReader/Writer ByteAyyay...原创 2010-10-17 09:55:39 · 342 阅读 · 0 评论 -
Java IO流 分类 概述
文件流 实现对文件的读取操作:FileInputStream FileReader 实现对文件的写入操作:FileOutputStream FileWriter 缓冲流 ByteArrayInputStream、ByteArrayOutputStream: 在内存中创建一个字节缓冲区实现信息的读取、写入。关闭此流后,...原创 2010-10-17 09:40:45 · 106 阅读 · 0 评论 -
关键字transient
1、 java的serialization提供了一个非常棒的存储对象状态的机制,说白了serialization就是把对象的状态存储到硬盘上去,等需要的时候就可以再把它读出来使用。但是在存储对象状态时,我们有时候会需要特定的对象数据在serialization时不进行存储。这时候 transient关键字就派上用场了。要关掉类的特定的数据域,可以使用transient关键字进行定义,...原创 2010-10-15 16:14:58 · 64 阅读 · 0 评论 -
Java图形程序设(一):框架定位
JFrame类本身只包含若干个改变外观的方法。然而,继承了各个超类中许多处理框架大小和位置的方法。如:dispose方法用于关闭窗口,并回收创建窗口所使用的全部系统资源。setIconImage方法用于将窗口极小化时的图标设置为Image对象。setTitle方法用于改变标题栏中的文本。setResizable方法利用一个boolean值确定框架的大小是否允许用户改变。set...原创 2010-08-09 14:37:06 · 168 阅读 · 0 评论 -
Java的多线程(一)
Java的多线程(一) 1.Java多线程机制 由于Java是纯面向对象语言,因此,Java的线程模型也是面向对象的。Java通过Thread类将线程所必须的功能都封装了起来。要想建立一个线程,必须要有一个线程执行函数,这个线程执行函数对应Thread类的run方法。Thread类还有一个start方法,这个方法负责建立线程,相当于调用Windows的建立线程函数CreateTh...原创 2010-08-06 11:58:11 · 73 阅读 · 0 评论 -
单例模式(Singleton)一【转载】
看到很多朋友在写单例,也来凑个热闹,虽然很简单,但是也有很多知识点在单例里面,看看是否能写出点不一样来。 单例模式(Singleton) 1 场景问题1.1 读取配置文件的内容 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相关的配置文件,这些配置文件多是由项目开发人员自定义的,在里面定义一些应用需要的参数数据。...原创 2010-08-05 14:37:59 · 89 阅读 · 0 评论 -
equals()方法的重写
来自http://www.iteye.com/topic/269601的文章 一、为什么equals()方法要重写?判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要...原创 2010-08-04 17:12:01 · 109 阅读 · 0 评论 -
操作符==与对象的equals()方法
一、 操作符“==” 用来比较两个操作元是否相等,这两个操作元可以是基本类型,也可以是引用类型。 当操作元是引用类型变量时,这两个引用变量必须都引用同一个对象,结果才为true。Integer int1 = new Integer(1);Integer int2 = new Integer(1);Integer int 3 = int1; //int3和in...2010-08-04 14:42:27 · 96 阅读 · 0 评论 -
深拷贝
1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的...原创 2010-08-03 11:38:31 · 68 阅读 · 0 评论 -
方法覆盖和方法重载的异同
1. 相同点:都要求方法同名。都可以用于抽象方法和非抽象方法之间。 2. 不同点:方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致。方法覆盖要求返回类型必须一致,而方法重载对此不做限制。方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)。方法覆盖对方法的访问权限和抛出...2010-08-03 09:49:48 · 299 阅读 · 0 评论 -
方法覆盖(Override)的约束(一)
1. 子类方法的名称、参数签名和返回类型必须和父类方法的名称、参数签名和返回类型一致。 public class Base { public void method() {… …}}public class Sub extends Base { public void method() {… …} public int method(in...2010-08-03 09:01:57 · 252 阅读 · 0 评论 -
Java IO(一):
我们经常需要读写文本文件,FileWriter和FileReader类可以用于从文件中写入/读取数据。但是该类只能按照本地平台的字符编码来处理数据,用户不能指定其他字符编码类型。 它们的构造方法如下:FileReader(File file):参数file指定需要读取的文件。FileReader(String name):参数name指定需要读取的文件的路径。...原创 2010-08-10 17:25:57 · 85 阅读 · 0 评论 -
Java图形程序设(二):在面板中显示信息
在Java中,框架被设计为放置组件的容器,所以并不直接将信息绘制在里面,而是把信息绘制在一个面板中,再将这个面板添加到框架中。 JFrame中,有四层面板:根窗格、层级窗格、玻璃窗格和内容窗格。前三个用来组织菜单栏和内容窗格以及实现观感,内容窗格则用来放置组件。Container contentPane = frame.getContentPane();Compo...原创 2010-08-12 16:34:54 · 1547 阅读 · 2 评论 -
对象序列化与反序列化
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。 把Java对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为Java对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列...原创 2010-10-15 15:37:50 · 72 阅读 · 0 评论 -
ThreadLocal类
ThreadLocal的核心思想很简单:为每个独立的线程提供一个变量的副本。Java提供的synchronized关键字使用了“同步锁”的机制来阻止线程的竞争访问,即“以时间换空间”。: " 10pt; FONT-SIZE:> ThreadLocal则使用了“拷贝副本”的方式,人人有份,你用你的,我用我的,大家互不影响,是“以空间换时间”。每个线程修改变量时,实际上修改的是变量的...原创 2010-10-15 12:14:27 · 68 阅读 · 0 评论 -
生产者与消费者问题
wait()和notify()&notifyAll()必须工作在加锁(synchronized)的代码块中。抢占的锁和释放的锁要是同一对象的锁,否则抛出IllegalMonitorStateException。 ...原创 2010-10-13 13:38:28 · 156 阅读 · 0 评论 -
线程的停止
既然stop()是不被推荐的,那么我们如何停止一个线程呢?直接kill吗?在这里,笔者总结一种比较通用也比较稳定的方法:class threadtest extend Thread{ //skip some code.. boolean runflag=true; public synchronized void stopthread() { runflag=false...原创 2010-12-24 00:30:34 · 113 阅读 · 0 评论 -
JDK环境变量的配置
JDK环境变量的配置 (1)JAVA_HOME C:\Program Files\Java\jdk1.6 (2)CLASSPATH 为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\Tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib.rt.jar (3)Path 其实Path已经在环境变量里面存在了这时候我们只要加上...原创 2010-12-19 11:03:32 · 62 阅读 · 0 评论 -
StringBuffer和String类的区别、StringBuffer类用法
String与StringBuffer的区别简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。 StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果...2010-08-20 11:43:22 · 339 阅读 · 0 评论 -
静态代码块和静态方法区别
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候就已经加载了,可以用类名直接调用。比如main方法就必须是静态的 这是程序入口 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 静...原创 2010-08-20 11:40:15 · 195 阅读 · 0 评论 -
Java中的细节问题(一)
Java作为一门优秀的面向对象的程序设计语言,正在被越来越多的人使用。本文试图列出作者在实际开发中碰到的一些Java语言的容易被人忽视的细节,希望能给正在学习Java语言的人有所帮助。 1.位移运算越界怎么处理考察下面的代码输出结果是多少? int a=5; System.out.println(a<<33);按照常理推测,把a左移33位应该将a的所有有效位都移出去...原创 2010-08-19 10:26:51 · 138 阅读 · 0 评论