java从入门到精通(韩顺平视频)笔记整理.doc

上传人:scccc 文档编号:11182208 上传时间:2021-07-10 格式:DOC 页数:25 大小:32.27KB
返回 下载 相关 举报
java从入门到精通(韩顺平视频)笔记整理.doc_第1页
第1页 / 共25页
java从入门到精通(韩顺平视频)笔记整理.doc_第2页
第2页 / 共25页
java从入门到精通(韩顺平视频)笔记整理.doc_第3页
第3页 / 共25页
java从入门到精通(韩顺平视频)笔记整理.doc_第4页
第4页 / 共25页
java从入门到精通(韩顺平视频)笔记整理.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《java从入门到精通(韩顺平视频)笔记整理.doc》由会员分享,可在线阅读,更多相关《java从入门到精通(韩顺平视频)笔记整理.doc(25页珍藏版)》请在三一文库上搜索。

1、java从入门到精通(韩顺平视频)笔记整理 Java从入门到精通笔记 第2讲 1. 2.变量.数据类型在java里面int占4个字节,long占8个字节Java基本数据类型: int四个字节:-2147483648-+2147483647 long八个字节:)整数:(byte一个字节:-128-127short两个字节:-32768-+32767 小数(浮点):float 布尔:booleandouble 字符:char(两个字节,可以存放汉字,chartest1=中;) (类)引申到字符串 3. 4.在java中对char进行运算的时候,直接是当做ASCII码对应的整数数据不能从高精度到低精

2、度的转换Byte<short<int<long<float<doublefloata=3.4;是过不去的,在java中小数默认是double(双精度)的 应该写成是floata=3.4f; 不过可以强制转换:inta=(int)1.2;intb=(int)1.9 a先是往高精度转换,然后赋给b,就报错改成inta=1;doubleb=a+1.2;或者inta=1;floatb=a+1.2f;就解决了 第4讲 1. 2.流程控制switchcase语句中,switch条件表达式的数据类型应该和后面case的类型一致switchcase语句中,可用的数据类型主要是:b

3、yteshortintcharenum 第5讲 1.类与对象面向对象编程-类与对象 类名首字母大写 类里面的元素叫类的成员变量/属性 2.类的定义 package包名; class类名extends父类implements 接口名 成员变量; 构造方法; 成员方法; 3.如何创建对象: Cat(); Cat();先声明再创建Catcat1;cat1=new一步到位Catcat1=new 4.引用传递类似于指针一样 第8讲this类变量 1. 2. 3.this属于类的对象的而不是属于类的5this不能在类的外部使用,只能在类定义时候使用!可以用类名直接访问静态变量第9讲类方法封装 1.类变量是

4、该类的所有对象共享的对象,一改全改了 2.定义语法:访问修饰符static数据类型变量名3. staticinti=1; static System.out.println(zhixingyicile); i+; /会自动执行一次,也只有一次publicclassDemo9 publicDemo9() System.out.println(ffffffff); i+; publicstaticvoidmain(Stringargs) Demo9t1=newDemo9(); System.out.println(Demo9.i); Demo9t2=newDemo9(); System.out.p

5、rintln(i); 4.类方法(静态方法、静态函数):属于所有对象实例的 5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量) 使用:类名.类方法名对象名.类方法名 6.非类变量就是实例变量,属于每个对象自己的 7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象) 8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象 9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法

6、),才能对数据进行操作。 10.封装的访问控制修饰符 11.四种访问控制符: 公开级别:public 受保护级别:对子类和同一个包中的类公开 默认级别:没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的私有级别:用private修饰,只有类本身才能访问 公开>受保护>默认>私有 12. 13.包的三大作用:区分相同名字的类 14.包的打包命令:package 15.引包命令:improt包名当类很多的时候可以很好的管理类控制访问范围一般放在文件的开始的地方com.xiaoming 第10讲访问修饰符重载覆盖 1.一个文家中如果只有public类,那么这个pub

7、lic类可以不用主函数 2.不想被继承就设为protected 3.子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C+却可以,如Java中一定要呢,就用接口吧 4.Java的所有类都是Object的子类,继承层次数没有限制 7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数 8.方法重载注意事项: 方法名相同 方法的参数类型,个数,顺序至少有一项不同 方法的修饰符可以不同 方法的返回类型可以不同 另外: 只是返回类型不一样并不构成重载 只是控制访问修饰符不一样不构成重载 第11讲约瑟夫问题(丢手帕问题) 1.方法覆盖的:子类有一个方法和父类的某个方法名称、返

8、回类型、参数一样 2.方法覆盖注意: 子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错 子类方法不能缩小父类方法的访问权限,但是扩大是可以的,子类抛出比父类更少的异常第十二讲多态 1.多态性:访问子类可以通过访问父类: Animalcat=newCat(); Animaldog=newDog(); 2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。 3.多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活 4.java允许父类的引用变量引用它子类的实例,是自动完成的 第十三讲抽象类接口(难点重点) 1.父类方法的不确

9、定性,用抽象类修饰这个方法,abstract。 2.抽象类还是可以一样被继承 3.当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现 4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法 5.在使用中不多,公司笔试的时候考很多 6.抽象类不能被实例化,只有被继承以后再去实例化 7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它 8.一旦类包含了abstract方法,这个类必须声明为abstract 9.抽象方法不能有主体“ 11.接口不能被实例化 12.接口中的所有方法都不能有主体 13.抽象类里面是可以有实现了的方法的

10、 14.接口中的所有方法都不能有主体,即都不能被实现 15.接口是更加抽象的抽象类! 16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法 17.一个类可以实现多个接口 18.接口中可以有变量(但是不能用private,protected修饰) 19.接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名 20.在java开发中,经常把常用的变量定义在接口中作为全局变量使用 访问形式:接口名.变量名 21.一个接口不能继承其它的类,但是可以继承别的接口 22.接口体现了程序设计的多态和高内聚低耦合的思想 第十四课final作业评讲

11、1.实现接口和继承父类的区别: 2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C+的多继承机制简洁 3.实现接口可以看做是对单继承的一种补充 4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用 5.用接口体现多态: 6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式final的 7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方

12、法都属于后期绑定 9.final概念:final可以修饰变量和方法 当不希望父类的某些方法被子类覆盖的时,可以用final修饰 当不希望类的某个变量的值被修改,可以用final修饰 当不希望类被继承时,可以用final修饰 10.final修饰的变量一般用下划线书写 11.如果一个变量是final的,那么定义时候必须赋初值 12.final修饰的变量又叫常量,一般用XX_XX_XX命名 13.final什么时候用: 处于安全的考虑,类的某个方法不允许修改 类不会被其它的类继承 某些变量值是固定不变的,比如pi 第15讲讲题目 1.switch只能对int、short、byte以及枚举类型进行判

13、断,case后面只能是常量表达是 2.猜拳的java程序设计: 有个人Tom设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机数0,1,2,0表示石头,1表示剪刀,2表示布。请实现: 第16讲数组 1.数组是可以存放多个同一类型的数据 2.用法: 程序员用法:数组定义:数据类型数组名=new数据类型大小; 如:int 或者是intarr=newint5; 或者是int 数组引用:数组名下标 没事找事用法:数组定义:int 或者是int 或者是intarr;arr=newint5;arr;arr=newint5;arr=newint5;arr=newint5;arr;arr=newi

14、nt5; 数组引用:数组名下标 古板用法:inta=1,2,3,4,5,6,7,8,9,0; 数组引用:数组名下标 3.知道数组的大小:arr.length(成员属性) 4.引用在栈里面,对象在堆里面 5.对象数组: 4.对象、字符串的很多不能用”=”,用的话是表示地址相等,比较字符串的内容是否相等是用equals方法 5.数组可存放同一类型数据 简单数据类型(int,float)数组,可以直接赋值 对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是:new对象】数组大小必须事先指定,如:intx;inta=newintx;是可以的 数组名可以理解为指向数组首地址的引用 数组的下标是从

15、0开始标号的 第十九讲多维数组 1.多维数组,定义: 语法:类型数组名=new类型大小大小inta=newint23 第二十讲二进制位运算移位计算 1.0的反码和补码都是0 2.我们只会针对有符号的数才讲反码补码 3.java没有无符号数,换言之,java中的数都是有符号的 4.在计算机运算的时候,都是以补码的方式运算的 5.按位与&或|异或取反 6.-2=-3(00000010->11111101->11111100->10000011) 7.2&3=000000102|3=00000011-5=(10000101->11111010->1111

16、1011(补码)->00000100)4 8.有3个移位运算符: >>算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位 <<算术左移:符号位不变,地位补0 >>>逻辑右移: 9.记住:对负数操作就要先找补码!正数也是,只不过不边罢了。得到的结果如果是正数就结束,如果是负数就再折腾一下,转变成原码才行。 10.-1移动任意位都是-1 11.1<<2(相当于是*4)=4,-1<<2(相当于是*4)=-4 12.而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移

17、和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0) 第21讲集合 1.集合类泛型异常的处理 2.解决方法:链表或者集合类(可以动态的改变),请熟悉常用的集合类 3.集合类分类: List结构的集合类: ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类 HashMap类,HashTable类 Set结构的集合类 HashSet类,TreeSet类 Queue结构的集合类 Queue接口 4.Java中所有的对象都是从Object继承下来的 5.子类交给父类,可以自动转换,

18、反过来就要强制转换 6.ArrayList中可以多次存放同样的人,ArrayList本质是存放引用 7.从ArryList中删除对象 第22讲集合 1.字符串相等是地址相等而不是内容相等! 2.雇员管理系统程序的编写(自己改进了一点,不完全,继续改进) 3.LinkedList addFirst表示把元素加在链表的最前面(类似于栈一样) addLast表示把元素加在链表的最后面(类似于队列一样) getFirst getLast remove removeFirst removeLast 4.Vector: 5.Stack用法:(加的时候是在前加的) 第二十三讲 1.HashMap HashM

19、aphm=newHashMap(); Empemp=newEmp(“s001”,”aaa”,3.4f); 2.HashMap可以存放空置但是HashTable不能存放空值。 3.Hashtable是基于陈旧的Dictionary的,HashMap是Java1.2引进的Map接口的一个实现集合 4.Hashtable是线程同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap是异步的,因而HapMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步而带来的不必要的

20、性能开销,从而提高效率。 5.值:HashMap可以让你将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null) 6.HashTable由于是同步的,有锁,因此是存在等待的,HashMap允许 7.ArrayList和Vector区别: Vector是同步的,是线程安全的,更安全 ArrayList是异步的,不是线程安全的,没有Vector安全 数据增长:Vector缺省情况下是自动增长原来一倍的数组长度,适合保存大量的数据;ArrayList是原来的50% 8.如果要求线程安全,使用Vector、Hashtable,否则ArrayList、LinkedL

21、ist、HashMap 9.如果要求键值对,使用HashMap、Hashtable 10.如果数据量大又考虑线程安全,使用Vector 第二十四讲集合补充 HashMap和Hashtable都是实现Map的接口的,ArrayList和LinkedList都是实现List的接口的 10.泛型可以更安全和提高代码重用率,泛型可以利用反射机制拿到类的一系列信息,从而提高代码的优越性。 第二十七讲作业讲评 跳水成绩打分系统 第二十八讲作业讲评 1.静态变量不给初值也是可以的,默认为0,如果前面有final就一定要赋值了 2.布尔值之间可以用”=”号 3.if(i=1&j=2)/由于”i=1”返

22、回了布尔值,所以就可以过去,否则就不行,但是c中就没有这样的顾虑,c会自动转换成boolen 4.继承中不能缩减被继承的父类中函数的范围(针对函数的参数的范围) 5.Math.floor->取一个比某数小的最大整数 Math.round->四舍五入 Math.ceil->取一个比某数大的最小整数 Math.min->需要两个数被操作/ceil:天花板 6.substring(beginIndex,endIndex)>起始索引包括,结束索引不包括 7.字符串的序数也是从0开始计数 8.Java的内存区分为:代码区、栈区和堆区 9.普通变量定义和初始化的时候直接放在栈

23、区,不是普通变量的引用在栈区,对象在堆区 10.类中含有静态变量(函数)时候:直接在数据区(申请空间) 11.堆区中有字符串引用池(stringpool),它存放字符串的引用,当字符池发现有字符时就指向字符,字符是存放在堆区中的。相同的字符串指向相同的地址,但是如果要用new来初始化,地址就不一样了,因为new是直接去开辟堆区的空间的。 12.对于对象来讲,=是比较地址 13.a.equals(b)区分大小写,a.equalsIgnoreCase(b)就不区分大小写 14.如果希望在子类中调用父类的构造函数,那么一般要求在子类的构造函数中调用 15.super表示当前正要调用该类它父类的变量或

24、方法。 第三十八讲线程坦克大战6 1.线程有:新建、就绪、运行、阻塞、死亡状态 2.运行中若资源突然不够用了,就阻塞,等待,一旦又满足条件了就进入就绪状态,如果还是可以满足条件,就再次进入运行状态;运行结束就死亡。 3.在java中,一个类要当作线程来使用有两种方法: 继承Thread类,并重写run函数 实现Runnable接口,并重写run函数(如果已经继承了别人的话,在不能多重继承的情况下使用接口) 6.字节流:以字节方式读写的流,可以读取二进制文件和任何类型的文件byte(InputStream,OutputStream) 字符流:可以用于读写文本文件,不能操作二进制文件(Reader

25、,Writer) 7.常见io流文件对象 4.常用IO流缓冲字符流,直接操作String BufferedReaderStreamReader 5.总结: FileInputStream文件字节流: FileReader文件字符流:Filef=newFile(d:test.txt);FileInputStreamfis=null;fr=newFileReader(c:ttt.txt); fw=newFileWriter(d:ccc.txt); BufferedReader缓冲字符流: (读行)fr=newFileReader(c:ttt.txt);br=newBufferedReader(fr

26、); 第五十二讲试题评讲 主要是复习以前的东西: 1.在try里面抛出异常和发生一般的异常是一样的,都会被catch住 2.final修饰的类不能被继承了 final修饰方法,该方法不能被覆盖 final用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承3. 4.包的声明必须是源文件的第一句话 5.类的成员变量可以不赋初值,就是不初始化,但是如果是局部变量就需要给初值 6.字符串相比是比地址,如果字符串一样的话就是一样的地址 第五十三讲数据库概念 4.数据库的基本结构 物理数据层:数据库的最内层 概念数据层:数据库的中间层,数据库的整体逻辑表示 逻辑数据层:用户所看到和使用的

27、数据库 9.SQL语言包括: 数据定义语言(DDL):create、drop、alter 数据操作语言(DML):insert、update、delete 数据查询语言(DQL):select语句 数据控制语言(DCL):grant、revoke、commit、rollback等 10.-如何显示平均工资和最高工资GROUPBY selectavg(sal), selectavg(sal),max(sal),deptnofromempgroupbydeptno 11.having往往和groupby结合使用,可以实现对分组查询到的结果进行筛选,并可以排序selectavg(sal),deptn

28、ofromempgroupbydeptnohavingavg(sal)<2000 orderbyavg(sal)desc 12.显示平均工资低于2000的部门号和它的平均工资 selectavg(sal),deptnofromempgroupbydeptnohavingavg(sal)<2000 13.总结: 分组函数只能出现在选择列表、having、orderby子句中 顺序:groupby、having、orderby 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则报错,反过来groupby中的字段也一定要出现在前面的select

29、列表中第六十一讲复杂查询(多表查询) 1.多表查询是指基于两个或者两个以上的表或是视图的查询 2.笛卡尔积:select*fromemp,dept 3.如果两张表有相同的字段,就需要带上表名或者用别名 selectename,sal,loc,e.deptnofromempe,deptdwhered.deptno=e.deptno 4.凯文米特尼克:黑客 5. select自连接:同一张表上的连接查询enamefromempwhereempno=(selectmgrfromempwhereename=blue)显示某个员工的上级和他的上级名字 6对于自连接可以考虑将表分开的意思,看成两张表 se

30、lectworker.ename雇员,boss.ename老板fromempworker,empbosswhere worker.mgr=boss.empno 7.子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询 8.单行子查询:返回单行数据的子查询。select*fromempwheredeptno=(selectdeptnofromempwhereename=lucy) 9.多行子查询:返回多行数据的子查询 -查询和部门10的工作相同的雇员的名字岗位工资部门号 select*fromempwherejobin(selectdistinctjobfromempwheredep

31、tno=10) 排除10号部门的: select*fromempwherejobin(selectdistinctjobfromempwheredeptno=10)anddeptno!=10 10.在from子句中使用子查询? 第六十二讲复杂查询 1.,相当于是:1.首先知道各个部门的平均工资-将1的结果当做一个临时的表 selectemp.ename,emp.sal,tmp.myavgfromemp,(selectavg(sal)myavg,deptnofromemp groupbydeptno)tmpwhereemp.deptno=tmp.deptnoandemp.sal>tmp.m

32、yavg 当在from子句中使用子查询时候,该子查询会被作为一个临时表来对待,当在from子句中使用子查询时候必须给予查询指定别名 2.分页查询,按照雇员id号升序取出 3.-请显示第2个到第4个入职的雇员,按照时间的先后顺序,如下: -top后面的数代表要取出几条记录 selecttop3*fromempwhereempnonotin(selecttop1empnofromemporderbyhiredate)orderbyhiredate 7.左外连接、右外连接左外连接(leftjoin):左边的表的记录全部要出现如果没有匹配的记录就用空来填 selectw.enameb.enamefro

33、mempwleftjoinempwherew.mgr=b.empno 右外连接(rightjoin):右边的表的记录全部要出现,右边表的元素全部要出现,如果没有匹配的记录就用空来填 内连接(innerjoin):显示所有匹配的,不匹配的就不显示了 第六十三讲约束 1.sqlserver2000约束包括: notnull: null意思是什么都没有,就像房子没有建起来,但是代表占空间了,就像房子建了但是里面没有什么东西 unique:表示不允许重复,是唯一的,但是可以是空值,不过只能是放一个空值,两 个空值代表是一样的值。同一个表中,主键只有一个,但是unique可以有多个。 第六十五讲sqls

34、erverjdbc 1.sqlserver里面都用单引号没问题的 2.显示ResultSet结果集,可以理解为表行的结果集,理解为游标,定义ResultSetrs,此时rs指向结果集的第一行的前一行,rs.getInt(1),括号里面的数字是列,会报空指针,取出第一行的第一列用rs.next(),rs是按照行循环取出的,现在我们就循环取出,rs.next()。 3.Statement和PreparedStatement区别: Statement:直接将程序送到数据库 PreparedStatement:它先预编译了一下再传送到数据库中,PreparedStatemen还t带有缓存机制,缓解数据

35、库的压力,效率高,适合使用batch,比较好的解决系统本地化问题,而且能有效防止危险字符的注入,解决sql的注入漏洞问题。 第六十七讲作业讲评 1.找出早于12年前受雇的员工 select*fromempwheredatediff(year,hiredate,getdate()>12 2.以首字母大写的方式显示所有的员工姓名 Selectupper(substring(cname,1,1)+lower(substring(cname,2,len(cname)fromemp /len()后面减不减1牵涉到字符串后面的/0 3.修改查询分析器打开时候的默认数据库:execsp_default

36、db账号名,默认数据库 2.项目开发流程:(中国目前无统一规范,但是总体的流程差不多) .需求分析:充分理解客户对项目的要求(项目经理或者是专门写需求分析的人)设计阶段:形成需求分析文档,决定用什么技术或者是什么框架,用什么操作系统,数据库,设计文档,形成开发小团队(项目经理或者是架构师) 编码阶段:程序员 测试阶段:测试人员,测试工程师 实施阶段:实施工程师,顺利做好环境 第七十二讲学生管理系统4Model2模式 1.以上我们用的是model1模式(仅用于早期九几年): 最大特点:界面和和操作放在一起 优点:开发简单、方便 缺点:代码复用性差、可读性不好、可维护性不好 2.Model2模式:

37、要达到界面和操作分离(一种程序的思想),将model1模式改成model2模式 优点:代码复用性好、可读性好、可维护性好 缺点:复杂性高 第七十三讲学生管理系统5daosqlhelper 1.DAO:DataAccessObject(对数据库的操作) 2. 第七十四讲满汉楼系统1项目分析 1.原型开发:用户需求分析师界面设计师(网页设计师、桌面设计师) 2.需求文档 3.设计文档:根据界面设计数据库和表技术、操作系统、模式、UML图 4.系统设计文档: 一设计概要 1,设计目的 2性能要求 环境要求 Word的使用 二 三界面设计系统木块分析 画图面板类 数据库连接类 音乐控制类 四 五数据库设计功能模块设计 六具体模块设计(这里详细说明字非常多详细说明每个Button的功能) 6.1管理界面设计 6.1.1主界面内容 6.1.2主界面功能 6.2人事管理 模块功能 模块界面说明 各个功能详细说明 添加功能 收款界面:等等新员工登记修改功能删除功能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1