类是对现实生活的描述。对象是一类事物实实在在存在的个体。
堆内存和栈内存:基本类型的变量和对象的引用存储在栈内存;用new创建的对象和数组存储在堆内存。
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方法。原则:将不需要对外提供的内容都隐藏起来,将属性都隐藏,提供公共方法对其访问。好处:提高安全性,便于使用,提高重用性。
什么时候使用静态?成员变量:当对象中有共享数据时。成员函数:函数内部没有访问到非静态数据(对象的特有数据)。
帮助文档制作:/***/@author作者;@version 版本;@param 参数;@return 返回结果 命令:javadoc —d 文件夹 -author —version xxx.java 。将生成一系列网页. 静态代码块:static{}。用于给类进行初始化,只执行一次,优先于主函数. Person p=new Person():1、找到Person.class加载到内存。2、执行static代码块。3、在栈内存中开辟main()方法空间,并分配一个 变量p。4、在堆内存中开辟实体空间.5、进行属性的空间分配,并进行默认初始化。6、对空间属性进行显示初始化。7、实体的构造代码初始化。8、调用对应的构造函数,进行构造函数初始化。9、将实体空间首地址赋给p。 单例:
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //静态方法要访问它,所以也要静态化。静态方法不能访问非静态的方法和属性.创建私有并静态的本类对象。
public static Single getInstance(){ //无法通过对象调用,只能是静态。定义公有并静态的方法,返回该对象。
return s; } }
//懒汉式:延迟加载方式. class Single2{
private Single2(){}
private static Single2 s = null;
public static synchronized Single2 getInstance(){ if(s==null)
s = new Single2(); return s; } }
继承:提高代码复用性,并为多态打下基础.Java只支持单继承.多继承隐患:多个父类定义相同功能时,子类对象不确定要运行哪一个.
重载:方法名相同,但参数不同的多个同名函数;
覆盖:子类重写父类的方法,要求方法名和参数类型完全一样 (参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同
隐藏:父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.
内部类:内部类可以直接访问外部类的成员,包括私有。外部类必须建立内部类对象才能访问内部类成员。
异常体系:error和exception
==和equals()的区别:”==\"和\"!=”比较的是”栈”中的内容(对象的地址),而equals()比较的是\"堆\"中的内容(对象的内容)。
多线程:建立线程两种方法:1、继承Thread类;2、实现Runnable接口。继承接口避免了单继承的局限性.
线程对象。setDaemon(true)设置守护线程。线程启动前调用,当正在运行的线程只有守护线程时,java虚拟机退出。
当a线程执行b线程的。join()方法时,a会等待b线程执行完才会执行。 线程对象。setPriority()设置线程优先级。
StringBuilder不是线程安全的,速度快;StringBuffer线程安全,慢.
泛型是一个类型安全机制,用于解决安全问题。
集合:
为方便存储和操作对象,出现集合类。数组可以存储对象,但长度固定,集合长度可变;数组可以存储基本数据类型,集合只能存储对象。 Collection:List和Set
List:有序,元素可以重复,有索引。
ArrayList,底层数据结构是数组。查找速度快。删除元素用equals()判断 LinkList,链表,增删速度快.
Vector.线程同步,数组,查找速度快。 Set:无序。元素唯一。
HashSet:底层数据结构式哈希表。通过hashCode()和equals()方法保持唯一性. 如果元素hashCode值相同才会判断equals是否为true;
TreeSet:底层是二叉树。可以对元素进行排序。按自然顺序就是compareTo()。
实现排序的两种方法:
1、实现Comparable接口,覆盖comapreTo(Object obj)方法.
2、实现Comparator接口,覆盖compare(Object ,Object)方法。
Map:
Hashtable,底层哈希表,不可以存储null值或键。线程同步。效率低。 HashMap,哈希表,允许使用null值或键。不同步,效率高。 TreeMap.底层是二叉树,线程不同步。可以给键进行排序。 获取Map元素的两种方法:
1、Set 2、Set〈Map.Entry〈k,v>〉 mapEntry,将Map集合中的映射关系存入Set集合. Collections:java集合的工具类,用于操作集合类。 Arrays集合:用于操作数组的工具类。 1.5新特性:可变参数,int..。arr 静态导入:import static java.lang。System。*;用于导入静态方法;import java.lang。*;用于导入类文件。 System类:getProperties()方法获得返回系统属性Properties(Map集合子类)对象。 Runtime类:运行时操作类。单例设计模式。 Calendar类:抽象类,用getInstance()获得对象。 Math类。 IO流: 常用基类:派生子类用父类名做后缀 字节流:InputStream,OutputStream 字符流:Reader,Writer 字符流:FileWriter,FileReader,需要flush(); 字符流缓冲区:BufferedReader,BufferedWriter;要结合流才能使用。需要flush(),关闭缓冲区就是关闭缓冲区的流对象。 LineNumberReader(FileReader)类,getLineNumber()方法可以获得行号 字节流:FileOutputStream,FileInputStream。操作多媒体文件. 转换流:InputStreamReader,OutputStreamWriter。属于字符流的子类。In(System。in),out返回字节流。 System。setIn(InputStream),System.setOut(PrintStream);改变标准输入输出。 File类: 合并流:SequenceInnputStream.用vector的elements()得到Enumeration。 切割文件:循环里边创建流、关闭流.讲一个文件分部分存储在几个文件中。 java.Awt:需要调用本地系统方法实现功能。 javax。Swing:完全由java实现,增强移植性。 Component:1、Container:Window,Panel 布局管理器:1、FlowLayout,Panel默认布局;2、BorderLayout,Fram默认。 TCP和UDP:TCP要经过三次握手建立连接,传输大量数据,可靠协议,效率低.UDP不需要建立连接,不可靠协议,速度快。 Socket:网络服务的一种机制,网络通信就是Socket间的通信,数据在两个Socket间通信。 TCP:Socket,ServerSocket UDP:DatagramSocket,DatagramPacket 加强: overload:重载,存在于父类和子类、同类中。只能通过不同参数样式重载。 override:重写,存在于父类和子类之间。方法名、参数、返回值相同.子类方法不能缩小父类方法访问权限。不能抛出更多异常。 可变参数:int..。arr For循环增强:for(int i:int[]) 枚举:让某个变量的取值只能为若干个固定值中的一个. 反射:在运行状态能够知道类的所有属性和方法,并调用对象的任意一个方法。获取类信息以及调用对象的方法. 类加载器:负责加载java类的字节码到虚拟机中。每个类加载器加载类时先委托给其上级加载器,当所有祖宗类加载器都没有加载到类,回到发起者类加载器时,还没加载到类,抛出ClassNotFoundException异常。 JavaBean:有set和get方法获得类属性的特殊java类.用于传递数据信息。 内省:IntroSpector,java语言对Javabean属性、事件的一些缺省处理方法。 Beanutils工具包 注解:@Override 表示当前方法是覆盖父类的方法。 @Deprecated 表示当前元素是不赞成使用的. @SuppressWarnings 表示关闭一些不当的编译器警告信息。 Java系统默认三个类加载器:BootStrap,ExtClassLoader,AppClassLoader 创建动态类的实例对象:1、通过实现的接口告诉要实现的动态类要实现哪些方法.2、产生的类的字节码要有一个关联的类加载器对象。3、执行代码的对象InvocationHandler。 代理:用Proxy类的getProxyClass(classLoader,interface)获得动态类的字节码文件.用反射获得构造器。用构造器的newInstance()InvocationHandler接口的对象做参数获得一个类对象。InvocationHandler对象重写pubic Object invoke(Object proxy,Method method,Object [] args)方法返回method.invoke(target,args). 创建动态代理对象步骤: 1、实现InvocationHandler 接口创建自己的调用处理器。重写invoke方法。 2、用Proxy.newProxyInstance(classLoader,new Class[]{Interface.class},handler}方法获得代理类实例。 Bank: NumberManager类:产生客户 Private int lastNumber; Private List MainClass:main()函数类 开启5个普通窗口. 一个快速 一个vip Executors.newScheduledThreadPool(1).scheduleAtFixedRate( New Runnable(){重写run},0,1,TimeUnit.SECONDS)。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务