admin管理员组

文章数量:1530846

2024年1月7日发(作者:)

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

韩顺平 笔记

第1讲 内容介绍.项目演示.原理剖析

1. 课程包括:面向对象编程,图形界面,数据库编程,文件流,网络编程,的多线程

2. 历史:1990 启动 绿色计划 1992 创建 语言—>

1994 参加 硅谷大会 演示功能 震惊世界 1995 正式发布第一个版本,目前最新的是7.0

3. 开发工具:记事本,,,,

4. 包括:(运行环境)

的工具:编译器解释执行器 的类库:3600多个,常用的150多个

5. 第一个程序:

功能:显示―‖

:表示类是公共的,一个文件中只有一个类 :表示这个是一个类

:类名(公共类的类名,必须和文件名一样)

{

一个主函数,程序的入口 ( []) {

执行语句

("!"); } }

6. 源程序(文件)——>字节码文件(文件)——>由解释执行

器() 将字节码文件加载到虚拟机()——>字节码文件()就会在虚拟机中执行); } }

第2讲 变量.数据类型

1. 在里面占4个字节,占8个字节

2. 基本数据类型:

整数 :(一个字节 :-128127 四个字节:-247483647

两个字节:-3276832767 八个字节: )

小数(浮点):

布尔 :

1 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

字符:(两个字节,可以存放汉字, 1 ='中';)

引申到 字符串(类)

3.在中对进行运算的时候,直接是当做码对应的整数

4.数据不能从高精度到低精度的转换 <<<<<

3.4;是过不去的,在中小数默认是(双精度)的

应该写成是 3.4f;不过可以强制转换: ()1.2; ()1.9

5. 1 1.2; a先是往高精度转换,然后赋给b,就报错 改成 1

1.2; 或者 1 1.2f; 就解决了

第4讲 流程控制

1. 语句中,条件表达式的数据类型应该和后面的类型一致

2. 语句中,可用的数据类型主要是:

第5讲 类与对象

1. 面向对象编程-类与对象

类名首字母大写

类里面的元素叫类的成员变量/属性

2. 类的定义

包名;

类名 父类

接口名

{

成员变量;

构造方法;

成员方法;

}

2 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

3. 如何创建对象:

先声明再创建 1;1 ();

一步到位 1 ();

4. 引用传递类似于指针一样

第8讲 类变量

1. 属于类的对象的而不是属于类的

2. 5不能在类的外部使用,只能在类定义时候使用!

3. 可以用类名直接访问静态变量

第9讲 类方法 封装

1.类变量是该类的所有对象共享的对象,一改全改了

2.定义语法:访问修饰符 数据类型 变量名

3. 9

{

1;

{

("");

;

}会自动执行一次,也只有一次

9()

{

("");

;

}

3 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

( [])

{

9 t1 9();

(9);

9 t2 9();

(i);

}

}

4.类方法(静态方法、静态函数):属于所有对象实例的

5中:类变量()原则上用类方法()去访问;类方法中不能访问非静态变量

,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)

使用:类名.类方法名 对象名.类方法名

6.非类变量就是实例变量,属于每个对象自己的

7面向对象编程的三(四)大特征:封装、继承、多态(、抽象)

8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象

9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。

10.封装的访问控制修饰符

11.四种访问控制符:

公开级别:

受保护级别:对子类和同一个包中的类公开

默认级别: 没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的

4 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

私有级别:用修饰,只有类本身才能访问

公开>受保护>默认>私有

12.

13.包的三大作用:区分相同名字的类 当类很多的时候可以很好的管理类 控制访问范围

14.包的打包命令: 一般放在文件的开始的地方

15.引包命令: 包名

第10讲 访问修饰符 重载 覆盖

1.一个文家中如果只有类,那么这个类可以不用主函数

2. 不想被继承就设为

3.子类最多只能继承一个父类,里面不允许一个子类继承多个父类,却可以,如中一定要呢,就用接口吧

5 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

4的所有类都是 的子类,继承层次数没有限制

7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数

8.方法重载注意事项:

方法名相同

方法的参数类型,个数,顺序至少有一项不同

方法的修饰符可以不同

方法的返回类型可以不同

另外:

只是返回类型不一样并不构成重载

只是控制访问修饰符不一样不构成重载

第11讲 约瑟夫问题(丢手帕问题)

1.方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样

2.方法覆盖注意:

子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错

子类方法不能缩小父类方法的访问权限,但是扩大是可以的,子类抛出比父类更少的异常

第十二讲 多态

1.多态性:访问子类可以通过访问父类:

();

();

2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。

3. 多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活

6 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

4允许父类的引用变量引用它子类的实例,是自动完成的

第十三讲 抽象类接口 (难点重点)

1.父类方法的不确定性,用抽象类修饰这个方法,。

2.抽象类还是可以一样被继承

3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现

4.用关键词来修饰的时候,一定是抽象类和抽象方法

5.在使用中不多,公司笔试的时候考很多

6.抽象类不能被实例化,只有被继承以后再去实例化

7.抽象类不一定要包含方法,就算没有方法,也不能实例化它

8.一旦类包含了方法,这个类必须声明为

9.抽象方法不能有主体“{}“

11.接口不能被实例化

12.接口中的所有方法都不能有主体

13.抽象类里面是可以有实现了的方法的

14.接口中的所有方法都不能有主体,即都不能被实现

15.接口是更加抽象的抽象类!!!!

16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法

17.一个类可以实现多个接口

18.接口中可以有变量(但是不能用,修饰)

19.接口中的变量本质上都是静态的,而且是,不管你加不加,所以可以直接使用:接口名.变量名

20.在 开发中,经常把常用的变量定义在接口中作为全局变量使用

访问形式:接口名.变量名

21.一个接口不能继承其它的类,但是可以继承别的接口

7 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

22.接口体现了程序设计的多态和高内聚低耦合的思想

第十四课 作业评讲

1.实现接口和继承父类的区别:

2是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比的多继承机制简洁

3.实现接口可以看做是对单继承的一种补充

4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用

5.用接口体现多态:

6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如方法和方法,包括方法,它是隐式 的

7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定

9概念:可以修饰变量和方法

当不希望父类的某些方法被子类覆盖的时,可以用修饰

当不希望类的某个变量的值被修改,可以用修饰

当不希望类被继承时,可以用修饰

10修饰的变量一般用下划线书写

11.如果一个变量是的,那么定义时候必须赋初值

12修饰的变量又叫常量,一般用命名

13什么时候用:

处于安全的考虑,类的某个方法不允许修改

类不会被其它的类继承

某些变量值是固定不变的,比如

第15讲 讲题目

1只能对、、以及枚举类型进行判断,后面只能是常量表达是

8 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

2.猜拳的程序设计:

有个人设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机数0,1,2,0表示石头,1表示剪刀,2表示布。请实现:

第16讲 数组

1.数组是可以存放多个同一类型的数据

2.用法:

程序员用法:数组定义:数据类型 数组名[] 数据类型[大小];

如: [] [5];

或者是[] [5];

或者是 [] [5];

数组引用:数组名[下标]

没事找事用法:数组定义: []; [5];

或者是[] ; [5];

或者是 []; [5];

数组引用:数组名[下标]

古板用法: a[]={1,2,3,4,5,6,7,8,9,0};

数组引用:数组名[下标]

3.知道数组的大小:(成员属性)

4.引用在栈里面,对象在堆里面

5.对象数组:

4.对象、字符串的很多不能用””,用的话是表示地址相等,比较字符串的内容是否相等是用方法

5. 数组可存放同一类型数据

9 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

简单数据类型()数组,可以直接赋值

对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是: 对象】

数组大小必须事先指定,如: a[] [x];是可以的

数组名可以理解为指向数组首地址的引用

数组的下标是从0开始标号的

第十九讲 多维数组

1.多维数组,定义:

语法:类型 数组名[][] 类型[大小][大小] a[][] [2][3]

第二十讲 二进制 位运算 移位计算

1.0的反码和补码都是0

2.我们只会针对有符号的数才讲反码补码

3没有无符号数,换言之,中的数都是有符号的

4.在计算机运算的时候,都是以补码的方式运算的

5.按位 与& 或| 异或^ 取反~

623(00000010->11111101->11111100->10000011)

7.2&3=00000010 2|3=00000011 5=(1000 0101->11111010->11111011(补码)->00000100)4

8.有3个移位运算符:

>>算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位

<<算术左移:符号位不变,地位补0

>>>逻辑右移:

9.记住:对负数操作就要先找补码!!!正数也是,只不过不边罢了。得到的结果如果是正数就结束,如果是负数就再折腾一下,转变成原码才行。

101移动任意位都是-1

11.1<<2(相当于是*4)=4,-1<<2(相当于是*4)4

10 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

12. 而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)

第21讲 集合

1.集合类 泛型 异常的处理

2.解决方法:链表或者集合类(可以动态的改变),请熟悉常用的集合类

3.集合类分类:

结构的集合类:

类,类,类,类

结构的集合类

类,类

结构的集合类

类,类

结构的集合类

接口

4中所有的对象都是从继承下来的

5.子类交给父类,可以自动转换,反过来就要强制转换

6中可以多次存放同样的人,本质是存放引用

7.从中删除对象

第22讲 集合

1.字符串相等是地址相等而不是内容相等!

2.雇员管理系统程序的编写(自己改进了一点,不完全,继续改进……)

3

11 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

表示把元素加在链表的最前面(类似于栈一样)

表示把元素加在链表的最后面(类似于队列一样)

4:

5用法:(加的时候是在前加的)

第二十三讲 集合

1

();

(“s001”,””,3.4f);

2. 可以存放空置但是不能存放空值。

3是基于陈旧的的,是1.2引进的接口的一个实现

4是线程同步的,这个类中的一些方法保证了中的对象是线程安全的。而是异步的,因而中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用是一个很好的选择,这样可以避免由于同步而带来的不必要的性能开销,从而提高效率。

5.值:可以让你将空值作为一个表的条目的或,但是是不能放入空值的()

6由于是同步的,有锁,因此是存在等待的,允许

7和区别:

是同步的,是线程安全的,更安全

是异步的,不是线程安全的,没有安全

12 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

数据增长:缺省情况下是自动增长原来一倍的数组长度,适合保存大量的数据;是原来的50%

8.如果要求线程安全,使用、,否则、、

9.如果要求键值对,使用、

10.如果数据量大又考虑线程安全,使用

第二十四讲 集合补充

和都是实现的接口的,和都是实现的接口的

10.泛型可以更安全和提高代码重用率,泛型可以利用反射机制拿到类的一系列信息,从而提高代码的优越性。

第二十七讲 作业讲评

跳水成绩打分系统

第二十八讲 作业讲评

1.静态变量不给初值也是可以的,默认为0,如果前面有就一定要赋值了

2.布尔值之间可以用””号

3(1 & 2) 由于”1”返回了布尔值,所以就可以过去,否则就不行,但是c中就没有这样的顾虑,c会自动转换成

4.继承中不能缩减被继承的父类中函数的范围(针对函数的参数的范围)

5. -> 取一个比某数小的最大整数

-> 四舍五入

. ->取一个比某数大的最小整数 :天花板

> 需要两个数被操作

6()——>起始索引包括,结束索引不包括

7.字符串的序数也是从0开始计数

8的内存区分为:代码区、栈区和堆区

13 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

9.普通变量定义和初始化的时候直接放在栈区,不是普通变量的引用在栈区,对象在堆区

10.类中含有静态变量(函数)时候:直接在数据区(申请空间)

11.堆区中有字符串引用池( ),它存放字符串的引用,当字符池发现有字符时就指向字符,字符是存放在堆区中的。相同的字符串指向相同的地址,但是如果要用来初始化,地址就不一样了,因为是直接去开辟堆区的空间的。

12.对于对象来讲,是比较地址

13(b)区分大小写,(b)就不区分大小写

14.如果希望在子类中调用父类的构造函数,那么一般要求在子类的构造函数中调用

15. 表示当前正要调用该类它父类的变量或方法。

第三十八讲 线程 坦克大战6

1.线程有:新建、就绪、运行、阻塞、死亡状态

2.运行中若资源突然不够用了,就阻塞,等待,一旦又满足条件了就进入就绪状态,如果还是可以满足条件,就再次进入运行状态;运行结束就死亡。

3.在中,一个类要当作线程来使用有两种方法:

继承类,并重写函数

实现接口,并重写函数(如果已经继承了别人的话,在不能多重继承的情况下使用接口 )

6.字节流:以字节方式读写的流,可以读取二进制文件和任何类型的文件(,)

字符流:可以用于读写文本文件,不能操作二进制文件(,)

7.常见流——文件对象

14 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

4.常用流——缓冲字符流,直接操作

5.总结:

文件字节流: ("d:");

;

文件字符流: ("c:");

("d:");

缓冲字符流: = ("c:");

(读行) ();

第五十二讲 试题评讲

主要是复习以前的东西:

1.在里面抛出异常和发生一般的异常是一样的,都会被住

2修饰的类不能被继承了

修饰方法,该方法不能被覆盖

用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承

3.

4.包的声明必须是源文件的第一句话

5.类的成员变量可以不赋初值,就是不初始化,但是如果是局部变量就需要给初值

6.字符串相比是比地址,如果字符串一样的话就是一样的地址

第五十三讲 数据库概念

4.数据库的基本结构

物理数据层:数据库的最内层

概念数据层:数据库的中间层,数据库的整体逻辑表示

逻辑数据层:用户所看到和使用的数据库

15 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

9语言包括:

数据定义语言():、、

数据操作语言():、、

数据查询语言():语句

数据控制语言():、、、等

10. 如何显示平均工资和最高工资

(),

()()

11往往和 结合使用,可以实现对分组查询到的结果进行筛选,并可以排序

() ()<2000

()

12.显示平均工资低于2000的部门号和它的平均工资

() ()<2000

13.总结:

·分组函数只能出现在选择列表、、 子句中

·顺序: 、、

·在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在 子句中,否则报错,反过来 中的字段也一定要出现在前面的列表中

第六十一讲 复杂查询(多表查询)

1.多表查询是指基于两个或者两个以上的表或是视图的查询

2.笛卡尔积: *

3.如果两张表有相同的字段,就需要带上表名或者用别名

d

4.凯文·米特尼克:黑客

5. 自连接:同一张表上的连接查询

16 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

显示某个员工的上级和他的上级名字

( '')

6.对于自连接可以考虑将表分开的意思,看成两张表

雇员 老板

7.子查询是指嵌入在其它语句中的语句,也叫嵌套查询

8.单行子查询:返回单行数据的子查询。 * ( '')

9.多行子查询:返回多行数据的子查询

查询和部门10的工作相同的雇员的名字岗位工资部门号

* ( 10)

排除10号部门的:

* ( 10) 10

10.在子句中使用子查询???

第六十二讲 复杂查询

1.如何显示高于部门平均工资的员工的信息,相当于是:1.首先知道各个部门的平均工资

将1的结果当做一个临时的表

,( () ) >

当在子句中使用子查询时候,该子查询会被作为一个临时表来对待,当在子句中使用子查询时候必须给予查询指定别名

2.分页查询,按照雇员号升序取出

3. 请显示第2个到第4个入职的雇员,按照时间的先后顺序,如下:

后面的数代表要取出几条记录

3 * ( 1 )

7.左外连接、右外连接

显示公司每个员工和他上级的名字

左外连接( ):左边的表的记录全部要出现,左边表的元素全部要出现,如果没有匹配的记录就用空来填

w

17 / 18

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

右外连接( ):右边的表的记录全部要出现,右边表的元素全部要出现,如果没有匹配的记录就用空来填

内连接( ):显示所有匹配的,不匹配的就不显示了

第六十三讲 约束

1 2000约束包括:

:

意思是什么都没有,就像房子没有建起来,但是’’代表占空间了,就像房子建了但是里面没有什么东西

:表示不允许重复,是唯一的,但是可以是空值,不过只能是放一个空值,两个空值代表是一样的值。同一个表中,主键只有一个,但是可以有多个。

第六十五讲

1 里面都用单引号没问题的

2.显示结果集,可以理解为表行的结果集,理解为游标,定义 ,此时指向结果集的第一行的前一行,(1),括号里面的数字是列,会报空指针,取出第一行的第一列用(),是按照行循环取出的,现在我们就循环取出,()。

3和区别:

①:直接将程序送到数据库

②:它先预编译了一下再传送到数据库中,还t带有缓存机制,缓解数据库的压力,效率高,适合使用,比较好的解决系统本地化问题,而且能有效防止危险字符的注入,解决的注入漏洞问题。

18 / 18

本文标签: 方法变量继承接口不能