《郝斌Java笔记自己根据视频整理的》由会员分享,可在线阅读,更多相关《郝斌Java笔记自己根据视频整理的(193页珍藏版)》请在金锄头文库上搜索。
1、第六讲环境变量的设置 不设置环境变量,软件装了也用不了是启动类的类名即是启动类的类名即 main 函数所在的类函数所在的类第八讲变量的命名规则必须写一个能判断真假的值Java 是要跨平台的, 故类型变量的所占用字节数必须是固定的, Java 中一个数据所占字节数 是死的,这样才能做到跨平台Char 类型两个字节基本能把全世界通用的字符表达出来了,但还是不够用的。非字符串相加把它们的值相加, 字符串与非字符串相加把它们本身的信息加起来。 两个是不 一样的。运算符,除是一样的,取余是不一样的记得常用的二进制C/C+中右移想补什么就补什么第 10 讲话 类和对象所以 函数是 C 语言的基本单位在而不
2、是语句无论是堆还是栈,本质上都是硬件内存,模拟出来而已面向对象中把*号去掉了,因为容易出错aa 本身的内存中没有 i、j,aa 保存的是对象的首地址,永远只占 4 个字节面向对象中堆与栈的区别已经没那么大了,但 C/C+中堆中的内存必须手动释放第 12 讲访问控制符 面向过程简单直接 面向对象非得绕个弯 接口相当于按钮接口相当于按钮 通过按钮对事物进行操作 面向对象中一般只提供几个按钮对事物进行操作很少能直接进行操作 整个程序都很安全,就像一个黑匣子,内部的东西不需要知道也不能知道第 13 讲访问控制符 递归是会使程序变慢但很多问题太难了解决不了必须用递归才能解决访问控制符有 4 种但默认 d
3、efault 一般不用第 14 讲构造函数第 15 讲UltraEdit 的使用第 17 讲函数的重载:函数名一样,形参 C 语言认定函数不能重名 从 C+开始就开始可以了第 18 讲构造函数 局部变量编译器是不会自动进行初始化的, Java 要求所有的局部变量在使用之前都必须初始 化,即这个值在使用之前必须知道它的值不允许是垃圾值 局部变量指的是函数中的而类中的是属性不属于局部变量局部变量指的是函数中的而类中的是属性不属于局部变量输出 0局部变量输出错误输出 2 和 true,若构造函数修改了则按构造函数的输出第 19 讲 this 只为属性在堆中分配内存,方法是不分配的。方法是共用一块内存
4、的。第 20 讲 static第 22 讲static 的两个示例这种用法很少第 23 讲 static 示例只生成一个对象只生成一个对象第 24 讲继承的由来 利用继承更好地模拟现实世界事物之间的关系第 25 讲继承的访问权限27讲Java为什么没有多继承第二 28 讲第 29 讲复习 super第 30 讲重写父类方法调用时不知调用的是哪个,父类的还是子类的 f()所以会报错Protected 与 public 对调的话就会出错,也可以自己试试 private,public,default 之间的区别, 但还是访问权限之间的大小的问题。低于的话多态实现不了。第 31 讲重写方法第 32 讲
5、多态的语法知识狗与动物 动物是父类 aa=bb 把把 bb 当成当成 aa,即狗是动物是可以的,但对调即动物是狗是错的,即狗是动物是可以的,但对调即动物是狗是错的第 34 讲多态注意事项和实际应用实例aa=bb;不能理解为把不能理解为把 bb 的值赋给的值赋给 aa,而是要理解成地址赋予而是要理解成地址赋予bb=(B)aa;语法没有错但没有实际意义故运行错误,有了那一行,aa 实际上已经指向 B 类的 double a=66.6; int b=(int)a; a 的值并没有变成 66,强制转换只是转换一个临时值给 b 上面的 bb=(B)aa 去掉(B)报错父类的引用只能调用子类重写父类的第
6、35 讲抽象类和 final没有方法体的方法叫抽象方法,抽象方法要求末尾必须加分号,前面必须得加 abstract抽象类不一定有抽象方法,有抽象方法的类一定是抽象类通过抽象类也实现了多态的知识有些人能击中靶但不是靶心第 36 讲接口 类似抽象类静态类必须是内部类类的自我复制就是调用类中的某个方法可以造出一个对象跟它一模一样第 38 讲面向对象复习第 39 讲 编译运行含有包层的类 类较多,类似操作系统中的文件夹把下面的类全部打包到 zhangsan.lisi 的中,只有先建 zhangsan 的一个 文件夹再建立一个 lisi 文件夹第 40 讲 编译运行含有包层的类-2第 41 讲 同包和不
7、同包的相互访问 没有定义包的话,类默认在同一个包里面青春是用来挥霍,不是让你来奋斗的,四、五十岁终于有钱了,有啥用啊都老了 我们之所以要奋斗是因为我们起点较低但也不能整天在这学习。青春都浪费光了。 要么不做要么做好导入包层太多了就只导入一个类第 42 讲 复习和不同包之间的相互访问 同一个包里面非私有的可以相互访问 内部类才可以加 private、protected,外部类不可以加第 43 讲 复习和不同包之间的相互访问第 45 讲 如何使用 jar 包和包的总回顾 如何设置 jar 包的路径在 doc 命令下设置的 classpath 是临时的,窗口一关闭则没有了,若想长久则必须手动设置第
8、46 讲 异常概述_1输出 Java 虚拟机的异常信息 第 47 讲 异常概 第 48 讲 复习 第 49 讲为什么需要异常 Scanner为什么不用 if/else 来处理异常:因为有些无法用 if/else 表示,就只能用 try/catch 来处理了类放在 lang 包里面的会自动导入,其他的必须手动导入第 50 讲printStackce 方法的介绍printStackTrace 产品设计好后要屏蔽这个方法,用户看不懂第 51 讲 可处理可不处理的异常和必须得进行处理的异常C 语言里面没 string 类型有些异常必须捕获否则程序崩溃第 52 讲 处理异常的两种方式 throws 内部
9、不处理,留给被调用者处理若 main 函数不写 throws 的话,则编译编译时就会报错了为什么要抛异常?层次问题,有些解决不了异常就抛给上一层处理第 53 讲 finally(最终的)Java 虚拟机先输出 finally 里面的内容再处理异常,那么我们为什么要使用 finally第 54 讲 自定义异常和 throws 常见错误分析所以的异常都是 Throwable 的子类,普通类不能被抛异常,必须继承 Throwable/Exception, 写 Throwable 不太好自第一异常很少用因为没有什么实际意义,不是很重要,一般不自己定义异常,一般使用别 人定义好的方法。书上说 throw
10、s 不处理异常是给被调用者处理异常这样说是不对的即不合适,因为 f()可能 抛出异常而已,也可能是不必须处理的异常例如第 56 讲异常复习Exception 里面有许多方法但较多用到的是 printStackTrace,输出错误的信息和路径,用于调 试程序第 57 讲 异常子类抛异常范围不可以比父类大,是为了多态的实现是为了多态的实现,否则语法设计起来就有冲突第 58 讲ToString ()方法介绍 Aaa=new a(); Println(aa); Println(aa.toString(); 都是输出类名和类在堆中的 16 进制地址(若 ToString 方法没有重写) 基本上都会重写父
11、类的 ToString()方法,因为父类的无什么实际含义第 60 讲equals String 和StringBuffer:带缓冲的字符串 下一字节放一个字节到硬盘,硬盘启动较慢 List 可以放任何对象第 61 讲 Set 是个容器 父类的 equals()返回的是假,故要子类重写这个方法 通过父类的引用不能调用子类的特有成员第 62 讲复习 编译时大小写无所谓,但运行时区分编译时大小写无所谓,但运行时区分第 63 讲第 64 讲String 类的常用方法介绍字符串和整数的相互转化第 65 讲String 常用方法举例3 种方法第 66 讲printf 和 println 的区别第 67 讲
12、 复习第 68 讲 StringBuffer String 类中没有改变字符串本身的方法第 69 讲数组 写前面后面都可以 数组的长度 length 是属性不是方法故不需加括号第 70 讲线程什么叫程序线程的定义线程比较难,面试的时候可能会问但一般用不到,除非是做系统开发创建线程的第一种方法第一个一直执行,检测不到第二个故没有抛异常创建线程的第二种方法第 71 讲复习第 72 讲创建进程的第二种方式第 73 讲线程常用方法的介绍第 74 讲 线程的控制Sleep( )是让出 CPU,下次是就绪状态 Yield( )是时刻准备着,下次是立即运行线程交换执行是因为时间轮片算法,每个线程最多获得 C
13、PU 多少秒是固定的 ,而优先级别只是体现了在 1 秒内可能你切换过来的概率高一点而已。过了 5 秒不一定进入运行状态,因为进入的是阻塞状态而不是就绪状态有局限性很多线程不加很多线程不加 while 的的第 75 讲线程同步问题的产生原因第 77 讲 买票程序讲解Start()代表建立一个线程创建进程尽量用第二种方式public void synchronized run()会导致只有一个程序在卖票其他线程也新建一个 str 但每人都有一个第 78 讲 闲聊王爽写的汇编非常好第 79复习 第 80 讲 生产消费 同步概念可以通过这种方式实现线程我们快乐是源自于别人痛苦第 81 讲生产消费下面的
14、下面的 println 都改成都改成 printf while 是为了继续测试下一次,表示时刻判断是否满是为了继续测试下一次,表示时刻判断是否满运行应该在程序在 TestPC.java 里最终停止 s 哪里是由什么决定的?可以通过控制时间来测试生产与消费的速度synchronized 是为了控制执行 pop( )的时候就不能执行 push() ;谁调用谁就霸占了调用的 对象若不写()则结果为乱了this.notify();叫醒因为执行 this.wait()的,但如果对方没有因为 wait()而阻塞就没有效果即不 需要叫醒suspend()也是陷入阻塞但不会释放对 aa 的锁定this.not
15、ify();叫醒说你赶紧生产吧,但已经被我锁定你也用不了先背会这程序再自己写先背会这程序再自己写线程不是我们的重点但起码知道什么是线程什么是同步,面试的时候可能会考第 82 讲awt 展望TestCom.java 用户图形界面也不是重点,我们的重点是流我们的重点是流这东西看起来很爽但其实没啥意思因为基本将来用不到 Java 的目的是跨平台,C#只是针对 windows以后我们做得基本都是 BS 的,但面试的时候要知道第 83 讲GUI(图形化用户界面) 没学生,对面是墙,墙上贴了个美女,不知道效果怎么样。 一般人没观众气场就上不来图形化用户界面/接口 组件真正的组件要比这个复杂,但这样理解也没
16、啥问题B/S 架构简单地理解为只需要网页就可以了,即浏览器界面容器运行结果是啥都没有,因为没有容器,Frame 是容器按 Ctrl+c 关掉300 个像素,指的是距离整个显示器屏幕有一个综合的Testpanel_83_1.java也可以自己用 setLocation 来设置组件的排列和组合但很麻烦、太辛苦,不可移植 Java 是用布局管理器类来控制的,所以要学布局管理器 布局管理器注释掉 f.setLayout(null);的话Testpanel_83_2.javaCENTER 改为小写则出错第 84 讲 BorderLayout 布局管理器已默认一般用这个GridLayout 布局管理器(重要重要)f.pack();注释掉的话另外一种方法是通过 set.来设置列数是根据行数自动计算出来的 这里不要写错了,写错了也要知道怎么改第 85 讲事件处理 以后想做桌面应用程序,学 swingActionListener 监听器单击等事件在这个包里面添加一个鼠标单击监听器因为 (1) 中有许多方法而我们只需要一个方法, 若采用 (1) 则需要重写