随笔分类 -  学习——Java

摘要:一般来说比起功能有限的String类,我们更愿意构造功能强大的正则表达式。我们可以通过Pattern 与 Matcher 来构建功能强大的正则表达式import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public cl 阅读全文
posted @ 2013-11-19 22:00 E_star 阅读(514) 评论(0) 推荐(0)
摘要:首先正则表达式在处理字符串问题时,真的非常强大。正则可以帮助我们处理字符串的: 匹配, 选择, 编辑, 验证等问题。正则中"\\"表示插入一个"\"这里仅是记录String 与 正则的结合:1:验证:import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in 阅读全文
posted @ 2013-11-19 19:06 E_star 阅读(458) 评论(0) 推荐(0)
摘要:来自: Java编程思想P287public class Main { /** * @param args */ @Override public String toString() { return "Main" + this; // 这里我们调用this的话,就默认调用了toString() 无限递归了 } public static void main(String[] args) { // TODO Auto-generated method stub Main a = new Main(); System.out.println(a); }} 阅读全文
posted @ 2013-11-19 17:09 E_star 阅读(332) 评论(0) 推荐(0)
摘要:如果在一个构造器的内部调用正在构造的的对象的某个动态绑定的方法,会发生什么情况?我们来看一个例子:class Glyph{ public void draw() { System.out.println("Glyph draw"); } Glyph() { System.out.println("Glyph before draw"); draw(); //调用动态绑定的方法 System.out.println("Glyph after draw"); }}class RoundGlyph extends Glyph{ privat 阅读全文
posted @ 2013-11-16 10:03 E_star 阅读(342) 评论(0) 推荐(0)
摘要:一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承,重载。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。1、final类 final类不能被继承,因此final类的成员方法没有机会 阅读全文
posted @ 2013-11-15 11:39 E_star 阅读(319) 评论(0) 推荐(0)
摘要:1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的 阅读全文
posted @ 2013-11-14 18:23 E_star 阅读(420) 评论(0) 推荐(0)
摘要:System.gc :告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的。只是建议进行回收System.runFinalization():网上搜了一下很多人都说强制调用已经失去引用的对象的finalize方法。但是我用下边的程序测试了一下class Chair{ public int i; public static int created = 0; public Chair() { i = ++created; } @Override protected void finalize() throws Throwable { System.out.println(" 阅读全文
posted @ 2013-11-14 18:16 E_star 阅读(2283) 评论(1) 推荐(1)
摘要:首先this作为关键字其实是随着对象的创建而产生的,当我们调用对象的一个方法的时候:例如:A a = new A();a.f(1) 其实我们可以理解为a.f(a,1) 编译器默默的把所操作的对象的引用作为第一个参数传递给了f()。 而this就代表了这个引用。 this只能在方法内部使用,表示“调用该方法的那个对象的引用”this调用类中的属性就不多说了,就表示传进来的对象调用属性。重点记录一下this语句, 如果想在构造函数里面调用构造函数的话就必须用到了this语句。给出一个例子来说明this语句的用法import java.math.BigInteger;import java.util 阅读全文
posted @ 2013-11-13 17:08 E_star 阅读(456) 评论(0) 推荐(0)
摘要:首先不带标签的break,continue 就不介绍了。大家平时用的最多的也就是这样的情况了。首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转。首先来看一个例子: label: for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { System.out.println(j); continue label; } } label: for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++... 阅读全文
posted @ 2013-11-13 10:38 E_star 阅读(515) 评论(0) 推荐(0)
摘要:1:实现Comparable接口import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;class User implements Comparable{ private Integer id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { ... 阅读全文
posted @ 2013-10-30 10:19 E_star 阅读(577) 评论(0) 推荐(0)
摘要:1:序列化技术:序列化的过程就是将对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,可以通过管道或线程读取,或通过网络连接将对象数据发送到另一主机。对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。一:对象序列化可以实现分布式对象。 主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。二: java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可... 阅读全文
posted @ 2013-10-27 10:40 E_star 阅读(6010) 评论(0) 推荐(0)
摘要:class Bowl{ Bowl(int marker){ System.out.println("Bowl(" + marker + ")" ); } void f1(int marker){ System.out.println("f1(" + marker + ")"); }}class Table{ //首先是静态变量 static Bowl bow1 = new Bowl(1);//2 Table(){ System.out.println("Table()");//4 bowl2.f 阅读全文
posted @ 2013-07-19 11:40 E_star 阅读(466) 评论(0) 推荐(0)
摘要:原址:http://wangle.iteye.com/blog/196972工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些。其他的模式我找了一下,都列出来了。======================Java常用的设计模式创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。 阅读全文
posted @ 2013-07-18 17:42 E_star 阅读(8265) 评论(0) 推荐(2)
摘要:字符 x 字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 ?@[\]^_`{|}~ \p{Graph} 可见字符:[\p{Alnum}\p{Punct}] \p{Print} 可打印字符:[\p{Graph}\x20] \p{Blank} 空格或制表符:[ \t] \p{Cntrl} 控制字符:[\x00-\x1F\x7F] \p{XDigit} 十六进制数字:[0-9a-fA-F] \p{Space} 空白字符:[ \t\n\x0B\f\r] java.lang.Character 类(简单的 java 字符类型) \p{javaLowerCase} 等效于 ja.. 阅读全文
posted @ 2013-07-17 19:27 E_star 阅读(379) 评论(0) 推荐(0)
摘要:组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。现实生活中:人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。可以说聚合是一种强组合的关系class Hand{}class Computer{}组合:class Person{ private Hand hand; public Person(){//在类的构造函数中初始化组合 hand = n. 阅读全文
posted @ 2013-07-14 21:05 E_star 阅读(2066) 评论(1) 推荐(0)
摘要:class Insec{ private int i = 9; protected int j; Insec(){ System.out.println("i = " + i + ", " + "j = " + j); j = 39; } private static int x1 = printInt("static Insec.x1 init"); static int printInt(String s){ System.out.println(s); return 47; } pri... 阅读全文
posted @ 2013-04-06 19:37 E_star 阅读(500) 评论(0) 推荐(0)
摘要:C++ :关键字public,private,protected被称为 访问权限修饰符 或 访问控制修饰符 分别表示 公有,私有,保护 属性。(访问属性 又称 访问权限)private是类的默认访问属性JAVA:关键字public,private,protected,默认访问属性 为包访问权限。 阅读全文
posted @ 2013-04-02 10:00 E_star 阅读(444) 评论(0) 推荐(0)
摘要:import java.math.BigInteger;import java.util.Scanner;class windos{ windos(int mk){ System.out.println("windos (" + mk + ")"); }}class house{ //变量的初始化顺序取决于它定义的顺序 windos w1 = new windos(1); house(){ System.out.println("house"); w3 = new windos(33); } windos w2 = new windo 阅读全文
posted @ 2013-04-01 19:58 E_star 阅读(228) 评论(0) 推荐(0)
摘要:左移操作符<<, 右移又叫做“有符号”右移-》符号若为正,则在最高位插入0,符号若为符则在最高位插入1;不论对于正数还是负数<<i 就等于该数乘以2^i (这里保证不超数据类型)而对于右移操作来说就有些奇葩复杂了:首先右移不会改变符号位:正数右移就是对他的二进制原码右移然后补零的操作;而负数就麻烦了,首先负数的右移是对其补码的右移然后补1的过程:例如-3>>1源码:1(符号位)0000000000000000000000000000011反码:1(符号位)1111111111111111111111111111100补码:1(符号位)111111111111 阅读全文
posted @ 2013-03-29 09:56 E_star 阅读(777) 评论(0) 推荐(0)
摘要:值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true;API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义 阅读全文
posted @ 2013-03-29 09:46 E_star 阅读(309) 评论(0) 推荐(0)