《郝斌开发经验(java)》_第1页
《郝斌开发经验(java)》_第2页
《郝斌开发经验(java)》_第3页
《郝斌开发经验(java)》_第4页
《郝斌开发经验(java)》_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、序本视频假定读者已经掌握了C语言!所以有关变量,数据类型,运算符, 流程控制,函数,指针等知识本视频中是没有讲的,因为这些知识我已经在C语言中讲过了C语言视频我暂时还没有录制, 没有C语言基础的同学看本Java视频会有不小的难度!当然如果你已经学习了其他语言,掌握了有关变量,数据类型,运算符, 流程控制,函数,指针等知识,看此视频应该没什么难度吧!没有学过C语言的推荐看谭浩强先生的书籍!本人的qq只希望接受您对我视频教学错误的指正,对于您学习中出现的问题,对不起,我没有时间通过qq来帮您解决!实在是抱歉! 2009年7月17日郝斌注意:本资源郝斌Java自学视频教程共107集郝斌,现在瑞德学校

2、担任教学组长,曾在雅博等公司担任项目总监。6年开发经验,擅长C/C+ 、Java、 数据结构、数据库。具有四年培训经验。郝斌:自学好辛苦, 不过好在最后我还是学出来了, 教学好几年了, 感触颇多, 如今录制了一些教学视频, 把自己的心得发布出来, 希望对那些没钱培训的朋友有所帮助视频目录1_Java概述_1 2_Java概述_2 3_Java概述_3 4_Java的卸载 5_Java的安装 6_环境变量的设置 7_常见dos命令 文件名和类名不同时编译运行的问题 9_复习上节课 10_类和对象 8_ 变量命名规则 数据类型 运算符 格式化输出 流程控制 11_内存分配 12_访问控制符_1 1

3、3_访问控制符_2 14_构造函数 15_UltraEdit的使用 16_复习 17_函数的重载 18_构造函数 19_this 20_static 21_复习 22_static两示例_求个数_只生成一个对象_1 23_static两示例_求个数_只生成一个对象_2 24_继承的由来 和 继承的访问控制权限_1 25_继承的由来 和 继承的访问控制权限_2 26_面向对象的继承反映的是现实中的一般到特殊的关系 27_Java为什么没有多继承 28_复习+super_1 29_复习+super_2 30_重写父类方法_1 31_重写方法示例 32_多态的语法知识 33_复习 34_多态注意事项

4、和 实际应用示例 36_接口_1 35_抽象类 和 final 37_接口_2 38_面向对象复习 39_编译运行含有包层的类_1 40_编译运行含有包层的类_2 41_同包和不同包类的相互访问 42_复习 和 不同包之间的相互访问_1 43_复习 和 不同包之间的相互访问_2 44_jar包的生成 45_如何使用Jar包 和 包的总回顾 46_异常概述_1 47_异常概述_2 48_复习 49_为什么需要异常 50_printStackTrace方法的介绍 51_ 可处理可不处理的异常 和 必须得进行处理的异常 52_处理异常的两种方式 53_finally 54_ 自定义异常 和 thro

5、ws常见错误解析_1 55_ 自定义异常 和 throws常见错误解析_2 56_异常复习 57_异常 58_ToString()方法介绍_1 59_ToString()方法介绍_2 60_equals_1 61_equals_2 62_复习 63_String类的 equals=常量字符串的用法 64_String类的常用方法介绍 字符串和整数的相互转化 67_复习 65_String常用方法举例 66_printf和println的区别 68_StringBuffer 69_数组 70_线程_1 71_复习 72_创建线程的第二种方式 73_线程常用方法的介绍 java自学视频 源代码 7

6、4_线程的控制 75_线程同步问题的产生原因 76_复习 78_闲聊 79_复习 77_买票程序讲解 80_生产消费程序演示_1 82_awt展望 81_生产消费程序演示_2 84_布局管理器 86_复习 83_gui 85_事件处理 87_十个按钮的设计 90_计算器 可运行jar包的生成 89_复习 内部类 匿名类 92_复习 91_什么叫流 流的分类 四大基本抽象流 88_三个文本框的相加运算示例 93字节流 字符流的使用和它们的区别 94_缓冲流的使用 95_将一个长整型数写入字节数组再从字节数组读出程序讲解96_print流 Object流 97_容器的介绍和使用 99_ 复习 98

7、_Comparable 接口 Set接口 101_Iterator接口 100_equals和hashCode方法的使用(难点) 103_泛型 102_Map接口的使用 104_网络编程基础知识 UDP编程 105_TCP编程 和 TCP下的WEB服务器程序的讲解 106_JavaSE复习大纲_上 107_JavaSE复习大纲_下Java概述Java特点Java虚拟机(JVM)每台计算机上都有独特的java虚拟机;一次编译到处运行;Java应用领域 J2SE J2ME J2EEJava基础知识Dos命令Java中的注释标识符关键字数据类型常量 整型常量、浮点常量、字符常量不同类型变量的存储范围

8、数据类型转化运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 位运算符运算符的优先级流程控制 顺序 选择 循环函数的重载面向对象编程(上)面向过程的设计思想/面向对象的设计思想类的定义:静态属性(成员变量); 动态可执行的操作(成员方法);对象的定义程序的执行过程(执行过程的内存管理:堆栈等)内存Code segment(代码段)存放代码Data segment(数据段)存放静态变量,字符串常量Stack(栈)存放对象Heap(堆)存放对象引用(一个类的new出多个对象,成员变量放在内存的不同区域,但是方法只有一个且放在代码段)访问控制符 public 可以通过外部访问方式访问类内部的p

9、ublic成员 Protect 默认 Private 不可以通过外部访问方式访问类内部的private成员分三个层次掌握访问控制符:(1)、类的内部访问在一个类的内部,所有的成员可以相互访问,访问控制符是透明的;访问控制符是针对类外部访问而言的;=类内/类外=(2)、同一个包中外部访问(同包不同类/同包不同类-继承)通过类的对象名访问类的内部成员通过类名访问类的内部成员=包内/包外=(3)、包函数调用的过程:压栈过程构造函数构造函数的定义和作用:类创建对象构造函数的返回值问题(构造函数没有返回值)构造函数数据成员的赋值-对象被创建时会对其中各种类型的成员变量自动初始化赋值多个构造函数可能带来的

10、冲突(如果不定义程序就会默认提供,定义后就不再提供)关键字this(理解成当前对象的引用或指针)一个类的new出多个对象,成员变量放在内存的不同区域,但是方法只有一个且放在代码段-成员方法如何区别是哪一个对象掉用自己?-每一个非静态方法中都隐含一个this指针关键字static(成员属于类)非私有静态属性或方法可以直接用类名访问,类的对象也可以直接访问;静态方法不可以访问非静态成员;非静态方法可以访问静态成员;Static应用:创建对象计数;单态模式-只能创建一个对象(见例子 TestStatic_2.java);面向对象编程(下)继承(extends)(1)子类内部可以访问父类非私有的成员;

11、(2)子类的外部(子类new出来的对象),通过子类对象名只能访问从父类继承过来的非私有成员(反过来父类对象访问子类的成员同理,子类把public等修饰符也继承过来了)(3)通过子类的类名访问父类的成员总之-私有不能被继承(私有成员逻辑上已经被继承过来的,只是不能访问,因此继承要慎重否则浪费内存空间)不同包的继承问题继承原则:区别汽车和车轮的关系(包含关系)父类/基类-子类/派生类superjava只允许单继承(C+允许多继承)接口可以一定程度上解决单继承的缺陷Super的使用(见TestSuper_1.java/TestSuper_2.java/TestSuper_3.java)Super的应

12、用-情景:父类有很多很多属性,子类继承过来如果一个个进行初始化就会太麻烦,可以使用Super调用父类的构造器进行初始化总结:1、每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。2、如果显示的写出super();语句,则必须保证该语句是第一条语句,否则会出错3、super();如果不写,则编译器会自动添加,所以此时如果父类没有无参的构造函数就会出错4、既可以显示写super();前提是父类必须有无参的构造函数也可以显示写super(实参); 前提是父类必须有带参的构造函数5、调用父类的构造函数的语句必须借助于super,不能直

13、接写父类的类名,这与C+不同,6、一个构造函数中不能写多个super(参数列表)语句;Super.f();方法的重写-子类要比父类的权限大(否则多态无法实现)TestStudent.java多态(一个父类的引用类型变量既可以指向父类对象也可以指向子类对象,它可以根据当前时刻指向的不同,自动调用不同对象的方法,这就是多态)多态的作用:同一段代码做不同的事情(TestPoly_1.java)通过父类的引用只能指向子类从父类继承过来的成员;父类的引用永远不可能直接赋给子类的引用;只有当在父类引用本身指向的就是一个子类对象时,才可以把父类引用强制转换为子类引用抽象类(abstract 美æb

14、strækt)的由来:比如“植物”抽象词abstract class A abstract public void f();/没有方法体的方法叫做抽象方法,抽象方法没有方法体 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法;可以定义一个抽象类的引用(多态抽象类),但不可以创建一个抽象类对象Final: 修饰 整个类:表示不能被继承 成员属性:表示属性必须被赋值,且只能被赋值一次,通过两种方式 成员方法:可以继承但不可以重写 接口interface(特殊的抽象类)抽象方法和常量属性的集合接口和抽象类的区别:抽象类是一个类可以被继承,接口不能被继承只能被实现用关键字implement

15、s(实现)接口内的方法没有 ,不允许有非抽象方法包:Javac -d . TestPackage.javaJava myPackage.cy.TestPackagePath: exe的路径Classpath: class的路径DOS命令:设置类的路径:set classpath=c:Documents and setting.同包不同类的访问:启动类Javac a.java b.java 两个一起编译同包非私有成员都可以不同包的访问:共有的类的共有成员才可以被另外一个包的类访问Import公有类保证可以在另一个类中创建对象,公有方法除了内部类 普通类只能用public 或者什么都不修饰如何生成

16、jar包放在一个文件夹中DOS下 jar cvf xxx.jar *(进入当前目录)如何使用jar包Import zhangsan.lidi.A;Set classpath=c:documents and settting.t.jar;面向对象的特点:封装: 访问控制符:只有private This:一个对象只含有属性的空间 private继承:java只允许单继承,私有成员无法被继承 重写:方法名和参数列表和返回值必须一样多态:放在java.lang包中的类不需要引入,其他的类都需要手动引入Object类的方法-toString()方法一个类默认继承Object该方法返回“类名哈希码-该对象

17、在内存堆中的地址”System.out.println(类的对象名)-实际输出的是该对象的toString()方法所返回的字符串重写toString方法的意义:为了实际需要String和StringBuffer:JAVA的StringBuffer类:    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。       

18、  所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。         在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。         

19、另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。         1、StringBuffer对象的初始化StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。例如:         StringBuffer s = new Strin

20、gBuffer();这样初始化出的StringBuffer对象是一个空的对象。如果需要创建带有内容的StringBuffer对象,则可以使用:         StringBuffer s = new StringBuffer(“abc”);这样初始化出的StringBuffer对象的内容就是字符串”abc”。需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:       

21、60; StringBuffer s = “abc”;               /赋值类型不匹配         StringBuffer s = (StringBuffer)”abc”;    /不存在继承关系,无法进行强转StringBuffer对象和String对象之间的互转的代码如下:    &#

22、160;    String s = “abc”;         StringBuffer sb1 = new StringBuffer(“123”);         StringBuffer sb2 = new StringBuffer(s);   /String转换为StringBuffer       

23、60; String s1 = sb1.toString();              /StringBuffer转换为String         2、StringBuffer的常用方法StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。a、append方法   

24、;      public StringBuffer append(boolean b)该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:                  StringBuffer sb = new StringBuffer(“abc”);  

25、60;                sb.append(true);         则对象sb的值将变成”abctrue”。使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:           &

26、#160;       StringBuffer sb = new StringBuffer();                   String user = “test”;               &

27、#160;   String pwd = “123”;                   sb.append(“select * from userInfo where username=“)                 &

28、#160;  .append(user)                    .append(“ and pwd=”)                    .append(pwd);  

29、       这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。b、deleteCharAt方法         public StringBuffer deleteCharAt(int index)该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:       &#

30、160; StringBuffer sb = new StringBuffer(“Test”);         sb. deleteCharAt(1);该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。还存在一个功能类似的delete方法:         public StringBuffer delete(int start,int end)该方法

31、的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:         StringBuffer sb = new StringBuffer(“TestString”);         sb. delete (1,4);该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。    

32、0;              c、insert方法                            public StringBuffer insert(int offset, boolean

33、 b)                            该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:              

34、0;                      StringBuffer sb = new StringBuffer(“TestString”);                    &#

35、160;                sb.insert(4,false);该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。                   d、revers

36、e方法                            public StringBuffer reverse()该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:         StringBuffer s

37、b = new StringBuffer(“abc”);         sb.reverse();经过反转以后,对象sb中的内容将变为”cba”。                   e、setCharAt方法          

38、0;                 public void setCharAt(int index, char ch)                          

39、0; 该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:                                     StringBuffer sb = new StringBuffer(“ab

40、c”);                                     sb.setCharAt(1,D);          &

41、#160;                 则对象sb的值将变成”aDc”。                   f、trimToSize方法         

42、                   public void trimToSize()该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。         总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。S

43、tring中的equals方法线程:进程:一个程序加载数据后的一次运行线程:TestThread_1.java 一个程序的 不同的执行路径单线程:程序一步步执行,执行完上一步才执行下一步,多线程(thread):创建线程后,多个线程之间交替执行时间片轮转算法创建线程的方法一:继承Thread【注意】1、Thread中的start()方法的功能就是创建一个新的线程,并自动调用该线程的run()方法,直接调用run()方法是不会创建一个新的线程的;2、执行一个线程实际就是执行该线程run方法中的代码;3、执行完aa.start();后并不表示aa所对应的线程就一定会立即得到执行,aa.start(

44、);执行完后只是表示aa线程具有了可以立即被cpu执行的资格,但是由于想抢占cpu执行的线程很多,cpu并不一定会立即去执行aa所对应的线程。4、一个Thread对象能且只能代表一个线程,一个Thread对象不能调用两次start()方法,否则会抛出java.lang.lllegalThreadStateException异常创建线程的方法二:实现Runnable接口Class A implements Runnable/使类A具有了run()A aa=new A();Thread t=new Thread(aa);/创建一个线程,将aa作为运行对象T.start();Thread的常用方法:

45、Public final void setName()/设置当前线程的名字Public static Thread currentThread()/返回当前正在执行的线程对象的引用Public final String getName()/返回当前线程的名字线程的状态切换:线程控制:线程控制的基本方法:isAlive() 判断线程是否还活着getPriority() 获取优先级Thread.sleep() 线程休眠Join() 等待另一个线程运行完自己再运行(一个线程用到另一个线程的结果)线程的串行化Yield() 线程让步,让出CPU,当前线程进入就绪队列Wait() 线程等待Notify(

46、)/NotifyAll() 唤醒一个/所有线程优先级(1-10 小-大,默认5)线程的休眠:线程的挂起和恢复 线程的结束线程的同步:卖票(本质就是多个线程访问一个资源,线程同步就是保证资源多个线程处理资源过程中不出现错误)问题:线程没处理完,语句没有执行完,就切换到另外一个线程,If(票数大于0)/必须只有一个线程访问 买一张票; 票数减一;ABC三个售票点;Synchronized(str) /Synchronized同步修饰一个方法-霸占正在调用该方法的对象修饰一个方法内部的某个代码块引入Synchronized的目的就是让售票代码和-tickets;代码,能要么都执行要么都不执行;生产和消费(本质就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论