韩顺平java从入门到精通视频教程学习笔记整理.docx

上传人:b****8 文档编号:9349907 上传时间:2023-02-04 格式:DOCX 页数:120 大小:76.53KB
下载 相关 举报
韩顺平java从入门到精通视频教程学习笔记整理.docx_第1页
第1页 / 共120页
韩顺平java从入门到精通视频教程学习笔记整理.docx_第2页
第2页 / 共120页
韩顺平java从入门到精通视频教程学习笔记整理.docx_第3页
第3页 / 共120页
韩顺平java从入门到精通视频教程学习笔记整理.docx_第4页
第4页 / 共120页
韩顺平java从入门到精通视频教程学习笔记整理.docx_第5页
第5页 / 共120页
点击查看更多>>
下载资源
资源描述

韩顺平java从入门到精通视频教程学习笔记整理.docx

《韩顺平java从入门到精通视频教程学习笔记整理.docx》由会员分享,可在线阅读,更多相关《韩顺平java从入门到精通视频教程学习笔记整理.docx(120页珍藏版)》请在冰豆网上搜索。

韩顺平java从入门到精通视频教程学习笔记整理.docx

韩顺平java从入门到精通视频教程学习笔记整理

java平台

1、J2SEjava开发平台标准版

2、J2EEjava开发平台企业版

java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。

不同系统上要安装对应的虚拟机才可以运行java程序

开发步骤

1、编写源文件(.java)

2、编译源文件为类文件(.class)可用J2SE或J2EE编译

3、在虚拟机上运行

注释

ava文件)

2、java编译器即

3、java字节码文件(.class文件)

4、由解释执行器即将字节码文件加载到java虚拟器(jvm)

5、字节码文件(.class)就会在java虚拟机中执行

对程序进行改过使之变为一个简单的加法运算程序

;.

case常量n:

语句n;

break;

default:

语句;

break;

}

*****:

switch中的可用数据类型主要是:

允许byte,short,int,char,enum等

1、单分支控制作业:

请大家看个案例[]:

编写一个程序,可以输入人的年龄,如果该同学的年龄大于18岁,则输出“你年龄大于18,要为自己的行为负责!

2、双分支控制作业:

请大家看个案例[]:

编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!

”否则,输出“你的年龄不大这次放过你了”

3、多分支控制作业:

请大家看个案例[]

编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。

如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。

其它情况,则输出“小孩子,下次注意”。

4、多分支控制作业:

请大家看个案例[]

请编写一个程序,该程序可以接收一个字符,比如:

a,b,c,d,e,f,g

a表示星期一,b表示星期二...根据用户的输入显示相应的信息,要求使用switch语句完成。

5、多分支控制作业:

请大家看个案例[]

对比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){

intresult=0;

for(inti=1;i<=n;i++){

result+=i;

}

"1+..+n结果是"+result);

}

访问修饰符返回数据类型函数名(参数列表){

语句;也可以没有返回值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{

publicstaticvoidmain(String[]args){

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开始计数,直到最后一个结点从链表中删除算法结束。

找到开始数数的人

for(inti=1;i

temp=;

}

while!

=1){

m下

for(intj=1;j

temp=;

}

数到m的小孩,退出圈

=;

.

-------------------------------------------------------------------------------

java面向对象编程(3)--抽象类

抽象类--解决之道

当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。

量名

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

");

}

publicvoidstop(){

"我是相机,停止工作了..");

}

}

");

}

publicvoidstop(){

"我是手机,停止工作了..");

}

}

一个加法器,计算它们的和

2.作一个减法器,计算它们的差

3.作一个乘法器,计算它们的积

4.作一个除法器,计算它们的商(和余数)

[]

publicclassWork01{

publicstaticvoidmain(String[]args){

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

if(i==j)

执行此语句,得到结果0

else

、以下代码能否编译通过?

假如能编译通过,运行时得到什么打印结果?

inti=4;

switch(i){

default;

"default");;

publicclassWork14_1{

publicstaticvoidmain(String[]args){

();;

publicclassWork15{

publicstaticvoidmain(String[]args){;

publicclassWork16{

publicstaticvoidmain(String[]args){

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

红红

请编写一个程序,可以计算他们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找它的体重。

;

import.*;

publicclassDemo131{

publicstaticvoidmain(String[]args)throwsException{etName("花花");

dogs[0].setWeight;

dogs[]*/

etName(name);etWeight(weight);etWeight();etWeight();

intmaxIndex=0;etWeight()){

etWeight();

maxIndex=i;

}

}

etWeight();

intminIndex=0;

for(intj=1;j<;j++){

if(minWeight>dogs[j].getWeight()){

etWeight();

minIndex=j;

}

}

"体重大的狗是第"+(maxIndex+1)+"狗,名字叫:

"+dogs[maxIndex].getName()+"\t体重是"+maxWeight);

"体重小的狗是第"+(minIndex+1)+"狗,名字叫:

"+dogs[minIndex].getName()+"\t体重是"+minWeight);

etName())){quals()方法用于字符串比较内容是否一致。

"你要找狗名"+dogs[cIndex].getName()+"\t体重是"+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{

publicstaticvoidmain(String[]args){

intarr[]={2,5,7,12,25};

*******************************************************************************

java基本语法--多维数组

多维数组--二维数组

多维数组我们只介绍二维数组

1、定义

语法:

类型数组名[][]=new类型[大小][大小];

比如:

inta[][]=newint[2][3];

2、分析

二维数组在内存中存在的形式

3、案例,请用二维数组输出如下图形

000000

001000

020300

000000

;

publicclassDemo140{

publicstaticvoidmain(String[]args){

quals(empNo)){quals(empNo)){

quals(empNo)){

;;

publicclassDemo141{

publicstaticvoidmain(String[]args){

LinkedListll=newLinkedList();

Emppemp1=newEmpp("sa01","aa",;

Emppemp2=newEmpp("sa02","bb",;

Emppemp3=newEmpp("sa03","cc",;

;

publicclassDemo142{

publicstaticvoidmain(String[]args){

;

publicclassDemo143{

publicstaticvoidmain(String[]args){

;

publicclassDemo143{

publicstaticvoidmain(String[]args){

terator();

oString();

;

publicclassDemo144{

publicstaticvoidmain(String[]args){

Hashtableht=newHashtable();terator();();){

Stringkey=().toString();

Empemp=(Emp)(key);

"名字:

"+()+"

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

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1