您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页黑马程序员视频总结

黑马程序员视频总结

来源:爱go旅游网
面向对象:面向对象是相对于面向过程而言的。面向过程强调的是功能,面向对象将功能封装进对象,强调的是具有功能的对象。

类是对现实生活的描述。对象是一类事物实实在在存在的个体。

堆内存和栈内存:基本类型的变量和对象的引用存储在栈内存;用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 keyset,将Map集合中的键存入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 ListNumberMachine类:号码管理器,采用单例设计模式 private NumberManager commonManager;用get()返回对象。 private NumberManager expressManager;用get()访问。 private NumberManager vipManager;用get()访问。 Enum CustomerType COMMON,EXPRESS,VIP; ServiceWindow类:窗口 private int windowId;窗口号码 enum CustomerType type; public void start(){Executors。newSingleThreadExcutor().execute(new Runnable(){public void run(){}})};根据type启动相应的窗口服务。

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务