Java韩顺平笔记
第1讲内容介绍.项目演示.原理剖析
1. 课程包括:java面向对象编程,java图形界面,java数据库编
程,java文件i/o流,java网络编程,java的多线程
2. Java历史:1990 sun 启动绿色计划 1992 创建 oak语言—
> java
1994 gosling 参加硅谷大会演示java功能震惊世界 1995 sun 正
式发布java第一个版本,目前最新的是jdk7.0
3. java开发工具:记事本,jcreator,jbuilder,netbean,eclipse
4. jdk包括:jre(java运行环境)
java的工具:编译器javac.exe解释执行器java.exe java的类库:
3600多个,常用的150多个
5. 第一个程序:
//功能:显示―HelloWorld‖
//public:表示类是公共的,一个文件中只有一个public类 //class:表
示这个是一个类
//HelloWorld:类名(公共类的类名,必须和文件名一样)
public class HelloWorld {
//一个主函数,程序的入口 public static void main (String args[]) {
//执行语句
System.out.println("helloWorld!"); } }
6. Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行
l,average); } }
第2讲变量.数据类型
1. 在java里面int占4个字节,long占8个字节
2. Java基本数据类型:
整数:(byte一个字节:-128---127 int四个字节:-2147483648-
--+2147483647
short两个字节:-32768---+32767 long八个字节:)
接口名
{
成员变量;
构造方法;
成员方法;
}
3. 如何创建对象:
先声明再创建Cat cat1;cat1=new Cat();
一步到位Cat cat1 =new Cat();
4. 引用传递类似于指针一样
第8讲this 类变量
1. this属于类的对象的而不是属于类的
2. 5this不能在类的外部使用,只能在类定义时候使用!
3. 可以用类名直接访问静态变量
第9讲类方法封装
1.类变量是该类的所有对象共享的对象,一改全改了
2.定义语法:访问修饰符static 数据类型变量名
3. public class Demo9
{
static int i=1;
static
{
System.out.println("zhixingyicile");
i++;
}//会自动执行一次,也只有一次
public Demo9()
{
System.out.println("ffffffff");
i++;
}
public static void main(String args[])
{
Demo9 t1=new Demo9();
System.out.println(Demo9.i);
Demo9 t2=new Demo9();
System.out.println(i);
}
}
4.类方法(静态方法、静态函数):属于所有对象实例的
5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量
,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)
使用:类名.类方法名对象名.类方法名
6.非类变量就是实例变量,属于每个对象自己的
7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)
8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象
9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
10.封装的访问控制修饰符
11.四种访问控制符:
公开级别:public
受保护级别:对子类和同一个包中的类公开
默认级别:没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的
私有级别:用private修饰,只有类本身才能访问
公开>受保护>默认>私有
12.
13.包的三大作用:区分相同名字的类当类很多的时候可以很好的管理类控制访问范围
子类方法不能缩小父类方法的访问权限,但是扩大是可以的,子类抛出比父类更少的异常
第十二讲多态
1.多态性:访问子类可以通过访问父类:
Animal cat =new Cat();
Animal dog =new Dog();
2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。
3. 多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活
4.java允许父类的引用变量引用它子类的实例,是自动完成的
第十三讲抽象类接口(难点重点)
1.父类方法的不确定性,用抽象类修饰这个方法,abstract。
2.抽象类还是可以一样被继承
3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现
4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法
5.在使用中不多,公司笔试的时候考很多
6.抽象类不能被实例化,只有被继承以后再去实例化
7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它
8.一旦类包含了abstract方法,这个类必须声明为abstract
9.抽象方法不能有主体“{}“
11.接口不能被实例化
12.接口中的所有方法都不能有主体
13.抽象类里面是可以有实现了的方法的
14.接口中的所有方法都不能有主体,即都不能被实现
15.接口是更加抽象的抽象类!!!!
16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法
17.一个类可以实现多个接口
18.接口中可以有变量(但是不能用private,protected修饰)
19.接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名
20.在java开发中,经常把常用的变量定义在接口中作为全局变量使用
访问形式:接口名.变量名
21.一个接口不能继承其它的类,但是可以继承别的接口
22.接口体现了程序设计的多态和高内聚低耦合的思想
第十四课final 作业评讲
1.实现接口和继承父类的区别:
2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C++的多继承机制简洁
3.实现接口可以看做是对单继承的一种补充
4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用
5.用接口体现多态:
6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式fi nal的
7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外
的所有方法都属于后期绑定
9.final概念:final可以修饰变量和方法
3.java没有无符号数,换言之,java中的数都是有符号的
4.在计算机运算的时候,都是以补码的方式运算的
5.按位与& 或| 异或^ 取反~
6.~-2=-3(00000010->11111101->11111100->10000011)
7.2&3=00000010 2|3=00000011 ~-5=(1000 0101->11111010-
>11111011(补码)->00000100)4
8.有3个移位运算符:
>>算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位
<<算术左移:符号位不变,地位补0
>>>逻辑右移:
9.记住:对负数操作就要先找补码!!!正数也是,只不过不边罢了。得到的结果如果是正数就结束,如果是负数就再折腾一下,转变成原码才行。
10.-1移动任意位都是-1
11.1<<2(相当于是*4)=4,-1<<2(相当于是*4)=-4
12. 而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)
第21讲集合
1.集合类泛型异常的处理
2.解决方法:链表或者集合类(可以动态的改变),请熟悉常用的集合类
3.集合类分类:
List结构的集合类:
ArrayList类,LinkedList类,Vector类,Stack类
Map结构的集合类
HashMap类,HashTable类
Set结构的集合类
HashSet类,TreeSet类
Queue结构的集合类
Queue接口
4.Java中所有的对象都是从Object继承下来的
5.子类交给父类,可以自动转换,反过来就要强制转换
6.ArrayList中可以多次存放同样的人,ArrayList本质是存放引用
7.从ArryList中删除对象
第22讲集合
1.字符串相等是地址相等而不是内容相等!
2.雇员管理系统程序的编写(自己改进了一点,不完全,继续改进……)
3.LinkedList
addFirst表示把元素加在链表的最前面(类似于栈一样)
addLast表示把元素加在链表的最后面(类似于队列一样)getFirst
getLast
remove
removeFirst
removeLast
4.Vector:
5.Stack用法:(加的时候是在前加的)
第二十三讲集合
1.HashMap
HashMap hm=new HashMap();
Emp emp=new Emp(“s001”,”aaa”,3.4f);
2. HashMap可以存放空置但是HashTable不能存放空值。
3.Hashtable是基于陈旧的Dictionary的,HashMap是Java1.2引进的Map接口的一个实现
4.Hashtable是线程同步的,这个类中的一些方法保证了Hashtable 中的对象是线程安全的。而HashMap是异步的,因而HapMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步而带来的不必要的性能开销,从而提高效率。
5.值:HashMap可以让你将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null)
6.HashTable由于是同步的,有锁,因此是存在等待的,HashMap 允许
7.ArrayList和Vector区别:
Vector是同步的,是线程安全的,更安全
ArrayList是异步的,不是线程安全的,没有Vector安全
数据增长:Vector缺省情况下是自动增长原来一倍的数组长度,适合保存大量的数据;ArrayList是原来的50%
8.如果要求线程安全,使用Vector、Hashtable,否则ArrayList、LinkedList、HashMap
9.如果要求键值对,使用HashMap、Hashtable
10.如果数据量大又考虑线程安全,使用Vector
第二十四讲集合补充
HashMap和Hashtable都是实现Map的接口的,ArrayList和LinkedList都是实现List的接口的
12.对于对象来讲,==是比较地址
13.a.equals(b)区分大小写,a.equalsIgnoreCase(b)就不区分大小写
14.如果希望在子类中调用父类的构造函数,那么一般要求在子类的构造函数中调用
15. super表示当前正要调用该类它父类的变量或方法。
第三十八讲线程坦克大战6
1.线程有:新建、就绪、运行、阻塞、死亡状态
2.运行中若资源突然不够用了,就阻塞,等待,一旦又满足条件了就进入就绪状态,如果还是可以满足条件,就再次进入运行状态;运行结束就死亡。
3.在java中,一个类要当作线程来使用有两种方法:
继承Thread类,并重写run函数
实现Runnable接口,并重写run函数(如果已经继承了别人的话,在不能多重继承的情况下使用接口)
6.字节流:以字节方式读写的流,可以读取二进制文件和任何类型的文件byte(InputStream,OutputStream)
字符流:可以用于读写文本文件,不能操作二进制文件(Reader,Writer)
7.常见io流——文件对象
4.常用IO流——缓冲字符流,直接操作String
BufferedReader StreamReader
5.总结:
FileInputStream文件字节流:File f=new File("d:\\test.txt");
FileInputStream fis=null;
FileReader文件字符流:fr=new
FileReader("c:\\ttt.txt");
fw=new
FileWriter("d:\\ccc.txt");
BufferedReader缓冲字符流:fr = new
FileReader("c:\\ttt.txt");
(读行)br=new BufferedReader(fr);
第五十二讲试题评讲
主要是复习以前的东西:
1.在try里面抛出异常和发生一般的异常是一样的,都会被catch 住
2.final修饰的类不能被继承了
final修饰方法,该方法不能被覆盖
final用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承
3.
4.包的声明必须是源文件的第一句话
5.类的成员变量可以不赋初值,就是不初始化,但是如果是局部变量就需要给初值
6.字符串相比是比地址,如果字符串一样的话就是一样的地址
第五十三讲数据库概念
4.数据库的基本结构
物理数据层:数据库的最内层
概念数据层:数据库的中间层,数据库的整体逻辑表示
逻辑数据层:用户所看到和使用的数据库
9.SQL语言包括:
数据定义语言(DDL):create、drop、alter
数据操作语言(DML):insert、update、delete
数据查询语言(DQL):select语句
数据控制语言(DCL):grant、revoke、commit、rollback等10. --如何显示平均工资和最高工资GROUP BY
select avg(sal),
select avg(sal),max(sal),deptno from emp group by deptno
11.having往往和group by结合使用,可以实现对分组查询到的结果进行筛选,并可以排序
select avg(sal),deptno from emp group by deptno having avg(sal)<2000 order by avg(sal) desc
12.显示平均工资低于2000的部门号和它的平均工资
select avg(sal),deptno from emp group by deptno having avg(sal)<2000 13.总结:
·分组函数只能出现在选择列表、having、order by子句中
·顺序:group by 、having、order by
·在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子句中,否则报错,反过来group by中的字段也一定要出现在前面的select列表中
第六十一讲复杂查询(多表查询)
1.多表查询是指基于两个或者两个以上的表或是视图的查询
2.笛卡尔积:select * from emp,dept
3.如果两张表有相同的字段,就需要带上表名或者用别名
select ename,sal,loc,e.deptno from emp e,dept d where
d.deptno=
e.deptno
4.凯文·米特尼克:黑客
5. 自连接:同一张表上的连接查询
显示某个员工的上级和他的上级名字
②PreparedStatement:它先预编译了一下再传送到数据库中,PreparedStatemen还t带有缓存机制,缓解数据库的压力,效率高,适合使用batch,比较好的解决系统本地化问题,而且能有效防止危险字符的注入,解决sql的注入漏洞问题。
韩顺平java坦克大战1.0版本_源代码
/**画坦克1.0 */ import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JPanel; public class MyTankGame extends JFrame { MyPanel mp=null; public static void main(String[] args) { MyTankGame mtk=new MyTankGame(); } public MyTankGame() { mp=new MyPanel(); this.add(mp);//把面板加入窗体 //注册监听 this.addMouseListener(mp); this.addKeyListener(mp); this.addMouseMotionListener(mp); this.addWindowListener(mp); this.setTitle("坦克大战");//窗体标题 this.setSize(600,400);//大小,宽,高(像素) this.setLocation(300,300);//显示位置。左边距,上边距 //禁止用户改变窗口大小 this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//显示 } } //我的面板 class MyPanel extends JPanel implements
韩顺平html笔记
HTML 一、HTML有关知识点 1.html介绍 html是一种标记语言,主要的用途是开发网页,使用html可以展现文字、图片、视频、声音,html是我们web开发(网站开发)。 2.html可以做什么 ?html可以编写静态网页 ?该静态网页可以包括文字、图像、动画、声音、表格、链接。从而构成一个个漂亮的网页 3.Html发展历史 4.Html的基本结构 5.是标记(也叫元素),标记的一般格式: <元素名[属性=“属性值”]>元素内容标签> 如果没有内容可以用:<元素名[属性=“属性值”]/> 6.Html实体标记 7.Html常用标记
?html超链接 ●_blank 新的窗口 ●_self 本窗口 ●_parent 父窗口 ●_top整个浏览器窗口 ?html图像元素 ?html表格
?无序列表
?有序列表
?框架
?表单元素
文本框: 密码框: 单选框: 复选框:checked是指默认选中的 隐藏域: 图片按钮: ?文本域:
?下拉菜单: