java基础
文章平均质量分 65
wwty1314
这个作者很懒,什么都没留下…
展开
-
内部类使用场景一:只被外部类所使用
我们说这个内部类依附于它的外部类而存在,可能的原因有:1、不可能为其他的类使用;2、出于某种原因,不能被其他类引用,可能会引起错误。3、当前的类过大,比如某个方法,里面写了非常多的代码,需要重构,如果你想抽象到另外一个类里面,那么不妨考虑一下内部类,因为,这些代码是从当前类抽象出来的,只被当前类所使用,那么用内部类实现也是很好的。下面我们以一个大家熟悉的例子来说明。这段时间做电...2009-02-25 14:39:39 · 232 阅读 · 0 评论 -
关于java当中的父类和子类
在java当中,父类对象不能强转为子类对象,子类可以转为父类。道理是这样的: 从哲学角度来说:一个男人肯定是人,一个人却不一定是男人。人是一个父类,一个男人继承自人;结论1:男人是人结论2:人是男人显然结论1是正确的。所以从技术的角度来说:java当中子类可以强转为父类,但是父类不能强转为子类也就是符合这个基本的自然道理。 其次,当下结论男人是人的时候,...原创 2010-05-16 15:07:22 · 203 阅读 · 0 评论 -
字符,字节和编码
转自http://www.regexlab.com/zh/encoding.htm 级别:中级摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。举例说明了一些实际应用中,编码的实现方法。然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的办法。本文的内容涵盖了“中文问题”,“乱码问题”。掌握编码问题的关键是正确地理解相关概念,编码...原创 2010-06-08 15:48:32 · 97 阅读 · 0 评论 -
java当中的关于乱码的测试
测试环境编码GBK 代码:public class CharsetTest { public static void main(String[] args) throws Exception{ String str = "中国123"; byte[] bytes = str.getBytes("unicode"); str = new St...原创 2010-06-08 16:16:56 · 119 阅读 · 0 评论 -
ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream的精髓是将一个字节数组包装到流中有这样一个场景:客户端和服务器端交互,当连接建立之后,如果只是根据协议用DataInputStream的readInt() 或者readByte() 等固定方法一个一个的读,那是相当消耗资源的,如果一次将所需要的数据读取完毕,然后剩下的就是本地解析,那就省了不少交互资源 int packetlen = din.read...原创 2010-06-08 16:56:19 · 124 阅读 · 0 评论 -
java线程模型
Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行。注意线程一般都是靠操作系统调度完成的,但是java实现了自己的线程调度模型,即抢占式调度模型 抢占式调度模型在java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的CPU时间的进程)。抢占式调度模型就是许多线程处于可以运行状态(等待状态),但实际上只有一个线程在...原创 2010-07-03 21:50:44 · 138 阅读 · 0 评论 -
关于对线程的两种实现方式的选择
如果不需要修改除了run方法之外的其他方法的话,那么最好去实现Runnable接口1、如果当前类已经继承了一个类,由于java当中单继承的限制,那么最好实现Runnable接口2、可以很好的使用全局变量:class MyThread implements RunnableMyThread mt = new MyThread();new Thread(mt).start();new ...原创 2010-07-03 22:56:29 · 96 阅读 · 0 评论 -
线程的死锁
关于线程的同步,http://buaawhl.iteye.com/blog/164905这篇文章讲的非常好! 线程的死锁:线程1锁住了对象A的监视器,等待对象B的监视器,线程2锁住了对象B的监视器,等待对象A的监视器,就造成了死锁。 代码示例:class TicketsSystem{ public static void main(String[] args) ...原创 2010-07-04 00:41:06 · 80 阅读 · 0 评论 -
生产者消费者模型
每一个对象除了有一个锁之外,还有一个等待队列(wait set),当一个对象刚创建的时候,它的对待队列是空的。我们应该在当前线程锁住对象的锁后,去调用该对象的wait方法。当调用对象的notify方法时,将从该对象的等待队列中删除一个任意选择的线程,这个线程将再次成为可运行的线程。当调用对象的notifyAll方法时,将从该对象的等待队列中删除所有等待的线程,这些线程将成为可运行的线程。wait和...原创 2010-07-04 00:46:33 · 89 阅读 · 0 评论 -
线程的关闭
线程的关闭:针对Thread类的stop方法:该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。 当前可以采取的线程终止模型如下:class Tes...原创 2010-07-04 00:51:24 · 116 阅读 · 0 评论 -
使用ConcurrentLinkedQueue惨痛的教训
文章来源:http://blog.csdn.net/Kanepan/archive/2010/07/01/5706488.aspx 前两天写了个生产消费的程序,根据需求用了ConcurrentLinkedQueue,然后又用到了其size方法,所以转载此篇文章。 服务端原本有个定时任务对一个集合ArrayList 中的消息做处理。 因为考虑到处理消息是先进先出原则,所以优化...原创 2011-05-24 11:54:26 · 393 阅读 · 0 评论 -
java当中float以及double数据类型的掌握
* java当中默认声明的小数是double类型的; * double d=4.0 * 如果声明: * float x = 4.0则会报错,需要如下写法: * float x = 4.0f或者float x = (float)4.0 * 其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义 * * float 内存分配4个字节,占32位,有效...原创 2010-11-08 14:07:00 · 151 阅读 · 0 评论 -
字符串和三元运算符字符串相加优先级的问题
周杨 10:25:37我犯了一个非技术错误。logger_monitor.debug("abc : " + abc !+ null ? abc.toString() : "return null");瓦屋 10:27:47abc != null ? abc.toString() : "return null"瓦屋 10:27:53是这句么?周杨 10:28...原创 2011-03-17 10:33:45 · 2427 阅读 · 0 评论 -
java当中的continue
代码:public class CountiueTest{ public static void main(String args[]) { int a = 0; for(;;) { a++; if(a<10) { System.out.println(a); continue; } tr...2009-08-19 16:57:13 · 585 阅读 · 0 评论 -
java向上转型
问题的由来:首先是方法的参数是父类对象,传入子类对象是否可行然后引出Parent p = new Children();这句代码不是很理解,google的过程中引出向上转型要理解向上转型又引出了动态绑定从动态绑定又引出了静态绑定 程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定 静态绑...原创 2010-07-29 18:23:55 · 278 阅读 · 0 评论 -
内部类使用场景二:实现回调函数
首先我们得了解一下什么叫做回调函数:精妙比喻:回调函数还真有点像您随身带的BP机:告诉别人号码,在它有事情时Call您回调用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。其实回调和API非常接近,他...2009-02-25 16:32:49 · 161 阅读 · 0 评论 -
关于java1.5之后的泛型
java是强类型的语言,不通类型之间是需要转换的----但也并不是所有的类型之间都可以相互转换。 1.4的时候:针对hashtable class Hashtable { Object put(Object key, Object value) {...} Object get(Object key) {...} ... } 而1.5的时候,是这样的:class Has...2009-03-03 16:03:52 · 280 阅读 · 0 评论 -
java当中的串行化与反串行化
1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫对象的串行化(Serialization-连续) 。串行化的主要任务是写出对象实例变量的数值。如果变量是另一对...原创 2009-03-04 09:52:22 · 332 阅读 · 0 评论 -
IO中BufferedReader-BufferedWriter的指针问题
最近写了个程序,两个文本文件按行的比较,文本文件只有一列。一个文件20万行,另外一个8万行。最初我是在两个for循环嵌套中,每次读取来进行比对的,后来有人说频繁的IO操作在性能上是很大的问题,于是我将那个小的文件读取集合,大的文件还是采用io读取操作。问题就发生在这个过程中,当我将其中的一行和IO读取进行比对时,问题出来了readLine方法一直读到文件的末尾但是没有回退,当再次循环过来时...2009-11-02 16:47:58 · 296 阅读 · 0 评论 -
OutputStream的writeUTF函数
writeUTF public void writeUTF(String str) throws IOExceptionWrites two bytes of length information to the output stream, followed by the Java modified UTF representation of ...2010-03-25 10:33:58 · 244 阅读 · 0 评论 -
java当中的参数传递
在java中:基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的在Java中对象作为参数传递时,传递的是引用的拷贝,既不是引用本身,更不是对象。 总结: 1:对于值类型的参数来说,传递的是值的拷贝. 2:对于引用类型的参数来说,传递的是引用本身的拷贝. 所以关键要看你如何理解传值中的这个“值”了。 实例: pub...2009-01-15 17:10:23 · 104 阅读 · 0 评论 -
线程资源释放CPU
这段时间发现自己写的一个线程程序有问题,服务器CPU使用率达到99%往上,然后将自己的程序翻出来看了一下,写了一个和自己程序模式非常相同的例子:发现CPU使用量也是相当可观的;然后想到了有可能是资源释放的问题,google了一下找到如下结论:Thread.sleep()----释放cpu,在它睡觉的这段时间里,不加入线程的运行竞争当中,当然,内存是不会释放的,因为它没有...原创 2009-06-29 18:01:21 · 389 阅读 · 0 评论 -
API之socket类
Socket类的构造函数:Socket () 通过系统默认类型的 SocketImpl 创建未连接套接字Socket (InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。Socket (String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。Socket (InetAddre...2009-02-16 23:24:21 · 108 阅读 · 0 评论 -
ServerSocket的学习总结
此类的构造方法有:1、ServerSocket() 创建非绑定服务器套接字。此空的构造函数创建了一个没有绑定到任何端口的ServerSocket。之所以会这样,是因为有许多的设置项在绑定了端口之后就没法使用了。如果先创建没有绑定任何端口的连接,然后使用bind(SocketAddress endpoint) 将 ServerSocket 绑定到特定地址(IP 地址和端口号)。 ...2009-02-23 15:16:39 · 153 阅读 · 0 评论 -
java当中内部类的使用规则
1、一个内部类的对象能够访问创建它的外部类对象的所有属性及方法(包括私有部分)。//可以闭上眼镜,把这个内部类等同于一个类的一个方法,当然就可以访问这个外部类的//所有方法和属性,私有方法和属性是属于外部类的,当然也就等同于内部类的. //Inner Class 可以访问容器类的任何成员,不管是public、private或protected的成员全是透明的。反之则不然,容器//类只能访问I...2009-02-24 15:44:59 · 165 阅读 · 0 评论 -
javac编译带包的java文件
新建一个HelloWorld.java的文件package test;public class HelloWorld{public static void main(String[] args) { System.out.println("Hello World!");}}正确的编译应该是:javac HelloWorld.java -d .编译成功之后:系统会在HelloWo...2009-08-03 14:16:10 · 670 阅读 · 0 评论 -
JDK(SDK) JRE JVM的说明
SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。 Java SDK最早叫Java ...原创 2010-07-09 11:26:17 · 148 阅读 · 0 评论 -
java抽象类和抽象方法
文章来源:http://blog.zol.com.cn/818/article_817164.html 抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。...原创 2011-07-26 16:27:45 · 243 阅读 · 0 评论