韩顺平java从入门到精通视频教程学习笔记整理Word文档格式.docx
《韩顺平java从入门到精通视频教程学习笔记整理Word文档格式.docx》由会员分享,可在线阅读,更多相关《韩顺平java从入门到精通视频教程学习笔记整理Word文档格式.docx(120页珍藏版)》请在冰豆网上搜索。
对比switch与if语句在执行分支语句的区别。
***switch分支语句不支持判断类型即boolean类型,switch只支持byte,short,int,char,enum等数据类型
-------------------------------------------------------------------------------
循环控制
听其名而知其意,就是让你的代码可以循环的执行。
循环控制有三种
1、for循环语法:
for(循环初值;
循环条件;
步长){
.
注意:
从猫类到对象,目前有几种说法:
1、创建一个对象;
2、实例化一个对象;
3、对类实例化...以后大家听到这些说法,不要模糊。
(对象就是实例,实例就是对象)java最大的特点就是面向对象。
性名字
=3;
="
小白"
白色"
2、对象是具体的,实际的,代表一个具体事物
3、类对象的模板,对象是类的一个个体,实例
类--如何定义类
一个全面的类定义比较复杂,如:
package包名;
class类名extends父类implements
接口名{
成员变量;
构造方法;
成员方法;
}
要透彻的掌握类,必须要了解类的构成
class类名{---->
待定...
类--类的成员变量
成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。
比如我们前面定义猫类的intage就是成员变量。
对象--如何创建对象
创建一个对象有两种方法
1、先声明再创建
1、对象声明:
类名对象名
2、对象创建:
对象名=new类名()
2、一步到位法
类名对象名=new类名()
对象--如何访问(使用)对象的成员变量
对象名.变量名;
.),我们人类还有一些行为比如:
可以说话、跑步..,通过学习,我们人类还可以做算术题。
这时就要用成员方法才能完成。
现在要求对Person类完善:
1、添加speak成员方法,输入出:
我是一个好人
2、添加jisuan成员方法,可以计算从1+..+1000的结果
3、修改jisuan成员方法,该方法可以接收一个数n,计算从1+..+n的结果
4、添加add成员方法,可以计算两个数的和
类--类的成员方法(成员函数)定义
成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。
public返回数据类型方法名(参数列表)
{
+1000的方法
publicvoidjiSuan(){
intresult=0;
for(inti=1;
i<
=1000;
i++){
result=result+i;
}
"
1+..+1000结果是"
+result);
+n
publicvoidjiSuan(intn){
=n;
result+=i;
"
1+..+n结果是"
访问修饰符返回数据类型函数名(参数列表){
也可以没有返回值void表示没有返回值
访问修饰符返回数据类型函数名(形参列表){
;
publicclassDemo110{
publicstaticvoidmain(String[]args){
Cfbjiu=newCfb();
();
classCfb{
publicvoidcf(){
try{
设计类;
2.然后根据类创建对象。
小练习:
1、设计计算机类,要求如下:
[]
属性:
品牌(Brand)、颜色(Color)、cpu型号(CPU)、内存容量(Memory)、硬盘大小(Harddisk)、价格(Price)、工作状态(Work)
方法:
打开(Open)、关闭(Close)、休眠(Sleep)
创建一个计算机对象,调用打开,关闭方法
}成员方法
}
java面向对象编程
(2)--this
一个问题?
请大家看一段代码:
*重点*:
this是属于一个对象,不属于类的。
java虚拟机会给每个对象分配this,代表当前对象。
坦白的讲,要明白this不是件容易的事
注意事项:
this不能在类定义的外部使用,只能在类定义的方法中使用
/*
this的必要性
*/
publicclassDemo112{
Dogdog1=newDog(2,"
大黄"
);
Personp1=newPerson(dog1,23,"
郭德纲"
Personp2=newPerson(dog1,24,"
刘谦"
();
}
变量名或者对象名.类变量名
方法名或者对象名.类方法名
*重点*static静态的方法可以访问static静态变量,不能访问非静态变量(类变量)
非静态方法可以访问非静态变量(类变量)同时也可以访问static静态变量。
变量名]直接访问
类方法小结
1、什么时候需要用类方法
案例[]:
定义学生类,统计学生共交多少钱?
类方法属于与类相关的,公共的方法
实例方法属于每个对象个体的方法
类方法可以通过[类名.类方法名]直接访问
java面向对象编程的四大特征
抽象/封装/继承/多态
抽象
1、简单理解
我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版)。
这种研究问题的方法称为抽象。
封装--什么是封装
封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
封装--访问控制修饰符
电视机的开关,对音量,颜色,频道的控制是公开的,谁都可以操作,但是对机箱后盖,主机板的操作却不是公开的,一般是由专业维修人员来玩。
那么java中如何实现这种类似的控制呢?
不能随便查看人的年龄,工资等隐私[]
定义名字;
打包命令一般放在文件开始处。
包--命名规范
小写字母比如包--常用的包
一个包下,包含很多的类,java中常用的包有:
.*包自动引入.*工具包
.*包网络开发包.*包窗口工具包
包--如何引入包
语法:
import包;
比如import.*;
我们引入一个包的主要目的要使用该包下的类
定义类的改进
在提出包后,我们类的定义就更加完善了:
class类名{class类名{class类名{package包名;
待定..
成员变量;
→成员变量;
→class类名{→
}成员方法;
构造方法;
成员变量;
}成员方法;
}成员方法;
}
继承--为什么有?
..
java面向对象编程
(2)--方法重载(overload)
方法重载(overload)
按顺序,我们应该讲解多态,但是在讲解多态前,我们必须讲解方法重载和方法覆盖(override)。
请编写一个类(Abc),编写方法可以接收两个整数,返回两个数中较大的数[]
.n的n个人围坐一圈,约定编号为k(1<
=k<
=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
提示:
用一个不带头结点的循环链表来处理Josephu问题:
先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点的人从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。
找到开始数数的人
k;
temp=;
while!
=1){
m下
for(intj=1;
j<
m;
j++){
temp=;
数到m的小孩,退出圈
=;
.
java面向对象编程(3)--抽象类
抽象类--解决之道
当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。
量名
5、一个接口不能继承其它的类,但是可以继承别的接口
"
publicvoidstop(){
我是相机,停止工作了.."
我是手机,停止工作了.."
一个加法器,计算它们的和
2.作一个减法器,计算它们的差
3.作一个乘法器,计算它们的积
4.作一个除法器,计算它们的商(和余数)
publicclassWork01{
inti=9;
intj=4;
intk=i+j;
intl=i-j;
intm=i*j;
intn=i/j;
into=i%j;
和:
+k+"
差:
+l+"
积:
+m+"
商:
+n+"
模:
+o);
*******************************************************************************
第二题:
正方型[]
.+20=?
思考如果让用户输入一个整数n计算累加和:
1+2+3+...+n能做到吗?
import.*;
.+n的值是"
+i);
第十二题
请编写一个Cat类,要求如下:
该猫可以做四则运算,也可以进行面积计算;
将四则运算器和面积运算器合二为一,作一个运算器,主菜单让用户选择是做四则运算还是面积运算,分为两个子菜单,让用户选择加减乘除或者形状。
publicclassWork13{
publicstaticvoidmain(String[]args){
Scannersr=newScanner;
代码分析:
1、运行一下代码,将得到什么打印结果:
inti=3;
intj=0;
doublek=;
if(j<
k)
if(i==j)
执行此语句,得到结果0
else
、以下代码能否编译通过?
假如能编译通过,运行时得到什么打印结果?
inti=4;
switch(i){
default;
default"
publicclassWork14_1{
publicclassWork15{
publicstaticvoidmain(String[]args){;
publicclassWork16{
ength
三、关于数组的用法,有几种方式:
3、古板用法(当已知元素值的时候可以使用此法)
1、初始化数组
语法:
数据类型数组名[]={元素值,元素值...};
例:
inta[]={2,5,6,7,8,89,90,34,56}
上面的用法相当于:
inta[]=newint[9]
inta[0]=2;
inta[1]=5;
inta[2]=6;
...a[8]=56;
2、数组的引用(使用)
数组名[下标]
a数组的第8个元素a[7]
一个养鸡场有6只鸡,它们的体重分别是3kg、5kg、1kg,、2kg、50kg。
请问这六只鸡的总体重是多少?
平均体重是多少?
请你编写一个程序。
等都可以有数组,那么可不可以有对象数组呢?
对前面的养鸡场的题,进行升级,题要求如下:
一个养狗场有4只狗,分别是:
名字体重
花花
白白
黑黑78kg
红红
请编写一个程序,可以计算他们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找它的体重。
publicclassDemo131{
publicstaticvoidmain(String[]args)throwsException{etName("
花花"
dogs[0].setWeight;
dogs[]*/
etName(name);
etWeight(weight);
etWeight();
intmaxIndex=0;
etWeight()){
etWeight();
maxIndex=i;
etWeight();
intminIndex=0;
for(intj=1;
if(minWeight>
dogs[j].getWeight()){
minIndex=j;
体重大的狗是第"
+(maxIndex+1)+"
狗,名字叫:
+dogs[maxIndex].getName()+"
\t体重是"
+maxWeight);
体重小的狗是第"
+(minIndex+1)+"
+dogs[minIndex].getName()+"
+minWeight);
etName())){quals()方法用于字符串比较内容是否一致。
"
你要找狗名"
+dogs[cIndex].getName()+"
+dogs[cIndex].getWeight());
.,第i次从R[i-1]-R[n-1]中选取最小值,与R[i-1]交换,...,第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
例如,给定n=8,数组R中的8个元素的排序码为:
(8,3,2,1,7,4,6,5),选择排序过程。
.,kn表示成一棵完全二叉树,然后从第n/2个排序码开妈筛选,使由该结点组成的子二叉树符合堆的定义,然后从第n/2-1个排序码重复刚才操作,直到第一个排序码止,这时候,该二叉树符合堆的定义,初始堆已经建立。
接着,可以按如下方法进行堆排序:
将堆中第一个结点(二叉树根结点)和最后一个结点的数据进行交换(k1与kn),再将k1--kn-1重新建堆,然后k1和kn-1交换,再将k1--kn-2重新建堆,然后k1和kn-2交换,如此重复下去,每次重新建堆的元素个数不断减1,直到重新建堆的元素个数仅剩一个为止。
这时堆排序已经完成,则排序码k1,k2,k3,...kn已排成一个有序序列。
若排序是从小到大排列,则可以建立大根堆实现堆排序,若排序是从大到小排列,则可以用建立小根堆实现堆排序。
其它排序法--希尔排序法(知道有这个排序法即可)
希尔排序(ShellSorting)又称为“缩小增量排序”。
是1959年由提出来的。
该方法的基本思想是:
先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。
其它排序法--二叉树排序法
二分插入排序(BinaryInsertSorting)的基本思想是:
在有序表中采用二分查找的方法查找待排元素的插入位置。
其处理过程:
先将第一个元素作为有序序列,进行n-1次插入,用二分查找的方法查找待排元素的插入位置,将待排元素插入。
外部排序法
其它排序法--合并排序法(最为常用的排序方法)
合并排序法(MergeSorting)是外部排序最常使用的排序方法。
若数据量太大无法一次完全加载内存,可使用外部辅助内存来处理排序数据,主要应用在文件排序。
排序方法:
将欲排序的数据分别存在数个文件大小可加载内存的文件中,再针对各个文件分别使用“内部排序法”将文件中的数据排序好写回文件。
再对所有已排序好的文件两两合并,直到所有文件合并成一个文件后,则数据排序完成。
1、将已排序好的A、B合并成E,C、D合并成F,E、F的内部数据分别均已排好序
2、将已排序好的E、F合并成G,G的内部数据已排好序
3、四个文件A、B、C、D数据排序完成
publicclassDemo136{
intarr[]={2,5,7,12,25};
java基本语法--多维数组
多维数组--二维数组
多维数组我们只介绍二维数组
1、定义
类型数组名[][]=new类型[大小][大小];
比如:
inta[][]=newint[2][3];
2、分析
二维数组在内存中存在的形式
3、案例,请用二维数组输出如下图形
000000
001000
020300
publicclassDemo140{
quals(empNo)){quals(empNo)){
quals(empNo)){
;
publicclassDemo141{
LinkedListll=newLinkedList();
Emppemp1=newEmpp("
sa01"
"
aa"
;
Emppemp2=newEmpp("
sa02"
bb"
Emppemp3=newEmpp("
sa03"
cc"
;
publicclassDemo142{
publicclassDemo143{
terator();
oString();
;
publicclassDemo144{
Hashtableht=newHashtable();
terator();
();
){
Stringkey=().toString();
Empemp=(Emp)(key);
"
名字:
+()+"