随笔分类 -  Java SE

摘要:栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈ic 阅读全文
posted @ 2018-06-13 23:58 水之原 阅读(883) 评论(0) 推荐(0) 编辑
摘要:原文作者的观点是Lambda表达式一定会包含在JDK 7中,而全文也着重介绍了这方面的知识,作者认为函数式编程的概念也将出现在JDK 7中.Lambda表达式Lambda表达式并不是什么新概念,自Alonzo Church提出Lambda微积分的概念以来,已经有30个年头了,从那时开始,它们就成为许多函数式编程语言的重要特性,最突出的可能要算Lisp,现在Lambda表达式已经跻身于函数式编程语言的一等公民。Lambda表达式是一个匿名函数,为了演示,这里有一个段你可能经常看到的Python代码段:list=[1,2,3,6,8,] printfilter(Lambdax:x*2>10, 阅读全文
posted @ 2013-06-27 22:36 水之原 阅读(523) 评论(0) 推荐(0) 编辑
摘要:自己封装一个类package com.anllin.utils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ScheduledThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ScheduleUtil{ private static DateFormat for... 阅读全文
posted @ 2011-12-30 21:51 水之原 阅读(1610) 评论(2) 推荐(3) 编辑
摘要:Properties代表了一个属性的持久化集合。它可以被保存为一个流,或者从一个流中加载。在属性列表中每个键和对应的值都是字符串。一个属性列表能包含另外一个属性列表作为它的默认值。如果属性中键不能在原属性列表中找到的话,它就会去另一个属性列表中搜索。因为Properties继承自Hashtable,所以put和putAll方法能用于一个Properties对象。如果一个Properties对象是损坏的,save和store方法不能调用,并且propertyName和list方法会调用失败。load(InputStream)方法可以实现从一个*.properties中读取数据为Propertie 阅读全文
posted @ 2011-08-22 23:52 水之原 阅读(4888) 评论(2) 推荐(1) 编辑
摘要:所有对于正则表达式的操作位于java.util.regex包下。两个重要的类:Matcher Patternpackage com.anllin.regex;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Matches{ public static void main(String[] args) { Matcher matcher = Pattern.compile("\\w+").matcher( "this is a regex test, the fis 阅读全文
posted @ 2011-08-17 23:01 水之原 阅读(257) 评论(0) 推荐(0) 编辑
摘要:Collections◆所以的集合类都实现了collection接口。ArrayList◆集合中存放的是对象的引用而不是对象本身。◆ArrayList是一个动态增长的数组,当我们调用无参构造函数时,默认会分配一个长度为10的数组,当空间不足时会动态增长为原来的1.5倍加1,然后将旧的数组复制到新的数组当中,当新的数组无法容纳更多的元素时,重复该过程。◆可以用ArrayList(intinitialCapacity)来初始化数组的容量,容量过大时,可以用trimToSize()方法挤压到刚好适合的大小,也可以用ensureCapacity(intminCapacity)来调整大小。◆ArrayL 阅读全文
posted @ 2011-08-17 22:52 水之原 阅读(251) 评论(0) 推荐(0) 编辑
摘要:泛型(Genrics)所谓泛型就是变量类型的参数化泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptons的可能。在jdk1.5中,你可以声明一个集合将接收/返回的对象的类型。泛型的ArrayListpublic class GenericTest1{ public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("aaa"); list.add(& 阅读全文
posted @ 2011-08-17 22:46 水之原 阅读(268) 评论(0) 推荐(0) 编辑
摘要:★策略模式中体现了两个非常基本的面向对象设计的原则:--封装变化的概念--编程中使用接口,而不是对接口的实现★面向接口的编程,实现类之间的弱耦合★策略模式的定义--定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。--策略模式使这些算法在客户端调用它们的时候能够互不影响变化。★策略模式的组成--抽象策略角色:策略类,通常由一个接口或者抽象类实现--具体角色:包装了相关的算法和行为。--环境角色:持有一个策略类的引用,最终给客户端调用。★策略模式的实现:--策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。--策略模式使得算法可以在不影 阅读全文
posted @ 2011-08-17 22:38 水之原 阅读(236) 评论(0) 推荐(0) 编辑
摘要:使用反射经常要用到的类,位于java.lang.reflect包中。--Class类:代表一个类--Field类:代表类的成员变量--Method类:代表类的方法--Constructor类:代表类的构造方法--Array类:提供一个动态创建的数组,以及访问数组元素的静态方法。使用Method类public class RefletTest{ public static void main(String[] args) throws Exception { Class<?> classType = Class.forName("java.lang.String" 阅读全文
posted @ 2011-08-17 22:36 水之原 阅读(217) 评论(0) 推荐(0) 编辑
摘要:代理模式的作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理一般涉及到的角色:--抽象角色:声明真实对象和代理对象的共同接口--代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他操作,相当于对真实对象进行封装。--真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。抽象角色public abstract class Subject{ publ 阅读全文
posted @ 2011-08-17 22:29 水之原 阅读(167) 评论(0) 推荐(0) 编辑
摘要:三个常用的注解@Overridepublic class OverrideTest{ //@Override表示子类要重写基类对应的方法,可以防止出现写错方法名的错误。 @Override public String toString() { return "OverrideTest [toString()=" + super.toString() + "]"; } public static void main(String[] args) { OverrideTest test = new OverrideTest(); System.out.pri 阅读全文
posted @ 2011-08-17 22:28 水之原 阅读(265) 评论(0) 推荐(0) 编辑
摘要:GUI(GraphicalUser Interface),图形用户界面。AWT(Abstract Window Toolkit),抽象窗口工具集,第一代的java GUI组件,是重量级的Swing,不依赖于底层细节,轻量级的组件。Window有两种形式,一种是Frame ,一种是DialogFrame是一个顶级窗口,缺省为BorderLayout布局管理器Panel无法单独显示,必须添加到某个容器中,缺省为FlowLayout布局管理器。Frame的使用public class FrameTest{ public static void main(String[] args) { Frame 阅读全文
posted @ 2011-08-17 22:15 水之原 阅读(586) 评论(0) 推荐(0) 编辑
摘要:共有四种:1.静态内部类编译生成StaticInnerClass$InnerClass.class文件示例1public class StaticInnerClassTest{ public static void main(String[] args) { //声明静态内部类的方式。 StaticInnerClass.InnerClass inner = new StaticInnerClass.InnerClass(); inner.output(); }}class StaticInnerClass{ private static int a = 4; //静态内部类只能访问外部类的静态 阅读全文
posted @ 2011-08-17 22:05 水之原 阅读(2176) 评论(0) 推荐(0) 编辑
摘要:File类用于对磁盘上的文件或目录进行操作直接父类是Object创建一个文件public class FileTest{ public static void main(String[] args) throws IOException { File file = new File("C:/text.txt"); System.out.println(file.createNewFile()); }}在一个目录下创建文件public class FileTest2{ public static void main(String[] args) throws IOExcept 阅读全文
posted @ 2011-08-17 22:04 水之原 阅读(269) 评论(0) 推荐(0) 编辑
摘要:将对象转换为字节流保存起来,并在以后还原这个对象,这种机制叫做序列化。将一个对象保存到永久存储设备上称为持久化。一个对象要想能够实现序列化,必须实现java.io.Serializable接口或Externalizable接口Serializable接口没有定义任何方法,是一个标识性接口(Marker Interface),当一个类实现了该接口,就表示这个类的对象是可以序列化的。序列化的特点:1.当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态变量。2.如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。3.如果一个可序列化的对象包含对某个不可序列 阅读全文
posted @ 2011-08-17 21:59 水之原 阅读(321) 评论(0) 推荐(0) 编辑
摘要:线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。线程是程序内的顺序控制流,只能使用分配给程序的资源和环境。多线程编程的目的,就是最大限度地利用CPU资源。多线程:指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。进程:运行一个程序就会启动一个进程,本质是一个执行的程序。(程序是静态的,而进程是动态的)单线程:当程序启动时,就自动产生一个线程,主方法main就在这个主线程上运行。多线程:一个进程可以包含一个或多个线程一个程序实现多个代码同时交替运行就需要产生多个线程CPU随机的抽出时间,让我们的程序一会做这件事情,一会做另外一件事情。进程与线程的区别:进程是重量级的 阅读全文
posted @ 2011-08-17 21:58 水之原 阅读(264) 评论(0) 推荐(0) 编辑
摘要:浅复制(浅克隆):被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(深克隆):被复制对象的所有变量都含有与原来对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制的新对象,而不再是原有的那些被引用的对象。换言之,深复制把复制的对象所引用的对象都复制了一遍。Object的clone()方法将对象复制一份并返回给调用者。一般而言,clone方法满足:1.对任何的x,都有x.clone() != x克隆对象与原对象不是同个对象。2.对任何的对象x,都有x.clone() 阅读全文
posted @ 2011-08-17 21:54 水之原 阅读(2340) 评论(0) 推荐(0) 编辑
摘要:public class UDPTest1{ public static void main(String[] args) throws Exception { //接收数据报 DatagramSocket socket = new DatagramSocket(7000); byte[] buffer = new byte[1000]; DatagramPacket packet = new DatagramPacket(buffer,1000); socket.receive(packet); System.out.println(new String(buffer, 0 , packet 阅读全文
posted @ 2011-08-17 21:47 水之原 阅读(393) 评论(0) 推荐(0) 编辑
摘要:服务器端public class TcpServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(5000); while(true) { Socket socket = ss.accept(); new ServerInputThread(socket).start(); new ServerOutputThread(socket).start(); } }}客户端public class TcpClient{ public static void 阅读全文
posted @ 2011-08-17 21:46 水之原 阅读(363) 评论(0) 推荐(0) 编辑
摘要:public class URLTest{ public static void main(String[] args) throws Exception { URL url = new URL( "http://java.sun.com:80/docs/books/tutorial/index.html#DOWN"); String protocal = url.getProtocol(); String path = url.getPath(); String host = url.getHost(); String file = url.getFile(); int 阅读全文
posted @ 2011-08-17 21:43 水之原 阅读(639) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示