韩顺平java从入门到精通视频教程学习笔记整理.docx
- 文档编号:9349907
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:120
- 大小:76.53KB
韩顺平java从入门到精通视频教程学习笔记整理.docx
《韩顺平java从入门到精通视频教程学习笔记整理.docx》由会员分享,可在线阅读,更多相关《韩顺平java从入门到精通视频教程学习笔记整理.docx(120页珍藏版)》请在冰豆网上搜索。
韩顺平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); "名字: "+()+"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺平 java 入门 精通 视频教程 学习 笔记 整理