本文共 7359 字,大约阅读时间需要 24 分钟。
this():当前类的对象,super父类对象。
super():在子类访问父类成员和行为,必须承受继承规则的约束,而this代表当前对象,所有的资源都可以访问。在构造函数中,如果第一行没有写super(),编译器会自动插入,但是如果弗雷没有无参构造函数,或这个函数被私有化了,此时必须加入对父类的实例化构造。而this没有此类要求,它本身就进行了实例化的构造。
public:不同包、同一包、类内都可用
private:类内 protected:不同的子类、同一包、类内都可用 不写时:同一包内、类内
java事件委托机制,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方法中,监听器简单的等待,直到它收到一个时间。一旦事件被接受,监听器将处理这个事件,然后返回。
垃圾回收机制(GC),垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,JVM的垃圾回收机制就会自动对此对象进行垃圾回收。
序列化:
可以将一个对象保存到一个文件,通过流的方式在网络上传输,可以将文件的内容读取,转化为一个对象。处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后 的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现: 将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法, implements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如: FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用 ObjectOutputStream 对象的 writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输入流。
可以。如果这个类的修饰符是public,其类名与文件名必须相同。
overload(重载),一个类多个方法,名称相同,参数个数类型不同
override(重写),子类覆盖父类的方法,将子类传与父类的引用调用的还是子类的方法。
coleection框架中实现compareble接口和comparator接口
public class Mysplit { public static void main(String[] args) throws Exception{ String source = "abc卫门agag"; split(source, 5); } public static void split(String source,int num) throws Exception{ int k = 0; String temp = ""; for (int i = 0;i < source.length() ;i++ ) { byte[] b = (source.charAt(i)+"").getBytes(); k += b.length; if (k > num) { break; } temp += source.charAt(i); } System.out.println(temp); }}
(1)接口可以被多重 implements,抽象类只能被单一 extends
(2)接口只有定义,抽象类可以有定义和实现 (3)接口的字段定义默认为:public static final, 抽象类字段默认是”friendly”(本包可见) 当功能需要累积时用抽象类,不需要累积时用接口。
通过类(Class 对象),可以得出当前类的 fields、 method、 construtor、 interface、superClass、 modified 等,同时可以通过类实例化一个实例、设置属性、唤醒方法。 Spring 中一切都是返射、 struts、 hibernate 都是通过类的反射进行开发的
java.lang.Classjava.lang.refrection.Methodjava.lang.refrection.Fieldjava.lang.refrection.Constructorjava.lang.refrection.Modifierjava.lang.refrection.Interface
Integer.parseInt("1234");Double.parseDouble("0.12");
SimpleDateFormate sdf = new SimpleDateFormate("yyyy-MM-dd hh:mm:ss");Date date = new Date();String str = sdf.format(date);Java.util.Date d1 = sdf.parse("yyyy-mm-dd");
会。int类型的数值有一定的范围,如果超出数值范围,结果就是内存泄漏。
Try:执行部分,产生异常
Catch:捕捉异常 Finally:不管有没有异常都执行 Throws:在方法声明处声明要抛出的异常,调用者必须对其进行处理。 Throw:抛出一个异常,在 try 中可以抛出异常, 一般与声明的异常相同。自定义异常要继承于 Exception 或 Exception 的子类
String:长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,速度慢。
StringBuffer:长度可变,可以将多个字符串值直接联合,效率高
public class Stacks { static String[] months = { "Jan","Feb","Mar","Apr","May", "June","Aug","Sep","Oct","Nov","Dec"}; public static void main(String[] args) { Stack stack = new Stack(); //进栈,先进元素压入栈底,最后的元素在栈顶 for (int i = 0; i < months.length; i++) { stack.push(months[i]+""); } System.out.println("stk = " + stack); stack.addElement("************"); System.out.println("element 5 = " + stack.elementAt(5)); System.out.println("popping elements: "); //出栈后进先出,栈顶元素最先被输出 while (!stack.empty()) { System.out.println(stack.pop()); } }}
集合 List 的遍历方法有: Iterator: Enumeration For Get setCollection 的通用方法有: Iterator() Add() Clear(); remove()
Collection 是集合的根接口, 其下有 set 及 list
Collections 是集合的算法。
在比较时先调用 hashCode 方法,如果不相同,证明不相等。
如果相同,再调用 equals 方法,如果 equals 方法相同,证明相等,不相同, 证明不相等。 ==:主要用在基本数据类型及引用 Equals:主要是对象或对象引用的比较。 集合中是否包含某一个元素用 contains 来判断。
List,set 继承于 Collection
Map 没有继承于 Collection,其相对是独立的。 属于 Collection 类型的对象, 可以通过构造函数将一个集合构造成另外一个集合。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。 finalize 是* Object* 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
栈(stack)是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。
堆(heap)是栈的一个组成元素
short s1 = 1; s1 = s1 + 1; ( s1+1 运算结果是 int 型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)
String 类是final类,不能被继承
会执行,在return前执行
Cookie Session Hidden url 重写
//1.饿汉式单例,线程安全//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { //私有的默认构造子 private Singleton1() {} //已经自行实例化 private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; }}//2.懒汉式单例,线程不安全//懒汉式单例类.在第一次调用的时候实例化 public class Singleton2 { //私有的默认构造子 private Singleton2() {} //注意,这里没有final private static Singleton2 single=null; //静态工厂方法 public synchronized static Singleton2 getInstance() { if (single == null) { single = new Singleton2(); } return single; }}//3.登记式单例(忽略,一般不用)//登记式单例类.//类似Spring里面的方法,将类名注册,下次从里面直接获取。public class Singleton3 { private static Mapmap = new HashMap (); static{ Singleton3 single = new Singleton3(); map.put(single.getClass().getName(), single); } //保护的默认构造子 protected Singleton3(){} //静态工厂方法,返还此类惟一的实例 public static Singleton3 getInstance(String name) { if(name == null) { name = Singleton3.class.getName(); System.out.println("name == null"+"--->name="+name); } if(map.get(name) == null) { try { map.put(name, (Singleton3) Class.forName(name).newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return map.get(name); } //一个示意性的商业方法 public String about() { return "Hello, I am RegSingleton."; } public static void main(String[] args) { Singleton3 single3 = Singleton3.getInstance(null); System.out.println(single3.about()); }}
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件的类。