一、Java 基础
1.1 环境变量 DOS 键盘录入
1 环境变量配置
2常用DOS命令
3 键盘录入
1.2 三种结构 分支类型
1 数据类型
2 三种结构
3 分支结构 单分支(if) 多分支(switch)
4习题
1.3 三种循环
1 三种循环(for while do while)
2 跳转
3 二重循环
4习题
1、使用循环输出100、95、90、85……5。
2、编程计算1至50中是7的倍数的数值之和。
3、1)根据输入数字显示对应的英文星期名称缩写,输入不合法数字时提示输出错误
2)输入错误继续循环
4、求一个数的阶乘例如: 5! 5*4*3*2*1 0!==1
1!=(1-1)!*1=0!*1=1*1=1
2!=(2-1)!*2 1!*2 1*2 2
3!=(3-1)!*3 2!*3 2*3=6
4!=4*3!
阶乘是基斯顿•卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿•卡曼引进这个表示法。
亦即n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
5、打印数字组成的直角三角形
1
22
333
4444
55555
66、商场对顾客的年龄层次进行调查
计算各年龄层次的顾客比例
7、循环输入商品编号和购买数量(选做)
当输入n时结账
1.4 方法 方法重载
1 方法 (4种)
2 方法重载
3 跳转语句
4 递归
5习题
1、 输出斐波那契数列的前20项,
结果:1 1 2 3 5 8 13……
2、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
3、编写一个方法实现数字倒置并返回这个数字。即3456倒置后6543
4. 用户登录验证。验证次数最多3次
![这里写图片描述](https://img-blog.csdn.net/20171114205926003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzUyOTI5MjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5.综合运用嵌套if选择结构、switch选择结构、多重if选择结构,实现商品换购功能
二 、 面向对象
2.1 类 构造方法
1 类
2 构造方法
1 类
2 构造方法
3 习题
利用面向对象的思想写下面的程序
1.小美在朝阳公园溜旺财【注:旺财是狗】
分析:
Dog
特征:名称
Person :
特征:姓名
行为:溜(Park ,Dog)
Park:
特征:名称
2.小明穿着白色的特步运动鞋在奥林匹克公园跑步
3.赵老师在讲台上讲课,小刚认真的听课做笔记
4.张阿姨和李阿姨在物美超市买红富士
构造方法
1.李晓在家里开party,向朋友介绍家中的黄色的宠物狗【彩彩】具有两条腿走路的特异功能。
2.王梅家的荷兰宠物猪【笨笨】跑丢了,她哭着贴寻猪启示。
3.富二代张三向女朋友李四介绍自己的新跑车:白色的宾利
4.定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系(扩展)
1. *某公司正进行招聘工作,被招聘人员需要填写,做“个人简历”的封装类,并打印简历信息
//属性
姓名 年龄 身高 性别 毕业学校 婚姻状况 联系方式
//方法
打印 showInfo()
2*.某游戏中有巫师角色,巫师的属性有级别、战斗力、生命值等,编写巫师类的重载方法,要求如下:
1) 构造方法1:创建巫师对象后,巫师具有10000的生命值
2) 构造方法2:在创建巫师对象时,可以给巫师指定级别、战斗力、生命值
(级别, 战斗力, 生命值){
}
3) 创建不同对象打印信息。
3.给SE类添加属性:基本工资、考核工资
给PM类添加属性:基本工资、项目奖金、分红
添加构造方法分别对SE与PM中属性进行赋值
编写薪水计算类salary,实现重载pay()方法
提示:pay(SE se)
pay(PM pm)
4.编写Car类属性:车名、颜色、产地,实现run()方法
1) 添加有参构造方法,在构造方法中给成员赋值,并调用run()方法。
2) 重载run()方法,给run()方法传递一个int类型参数speed,输出此方法信息。
5.编写程序,添加一个Add类
1) 添加一个方法sum(),返回类型为int,有两个int类型参数,该方法计算两个参数的和
2) 添加方法sum()的重载方法,返回类型为double,有三个参数double类型,该方法计算三个参数的和。
2.2 this static
1 this 关键字
2 static 静态
1 this 关键字
2 static 静态
3
利用面向对象 构造函数 this关键字的知识完成以下内容
1.富二代张三向女朋友李四介绍自己的新跑车:白色的宾利
/* 分析: 富二代 特征: 名称 行为: 介绍(女朋友,车) 女朋友 特征: 名称 车 特征: 品牌 颜色 */
2.贵妇从宠物店购买了宠物狗、宠物猫,某天,家里举行聚会,向朋友介绍起自家豢养的宠物的情形。
/* 贵妇类: 特征: 名称 行为: 宠物店购买了 宠物狗、宠物猫 家里举行聚会 介绍宠物狗、宠物猫 宠物狗 特征: 性别 年龄 品种 行为: 看家 啃 宠物猫 特征: 性别 年龄 品种 行为: 抓老鼠 */
3.创建一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性和启动/加速/减速/停车的行为,使用不同的构造方法创建汽车对象,实现各个功能
4.定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系(扩展)
分析:
点:x y
圆:半径和圆心
人:
计算
d>r(圆外) d==r 圆上 d<r 圆内
5..创建Employee类,属性:姓名,年龄,性别,工资。方法:显示对象的属性值,工作。
要求:
构造函数重载。(无参数的,有参数的都要有。)
创建3个对象。
2.3 继承 封装
1 继承
2 封装
1 继承 学生 老师的继承 super equals
2 封装 同上 4种修饰符的应用
3 习题
*1、定义一个人类(姓名,年龄,性别,自我介绍方法),学生类继承人类(学号,班级),
老师类继承人类(工号,教龄),学生类和老师类重写自我介绍
*2、设计Bird、Fish类,都继承自类Animal,实现其重写方法info()打印它们的信息,参考运行结果如图:
我是一只红色的鸟,
今年4岁了!
我是一只五斤重的鱼,
今年2岁了!
3、创建一个Person父类,属性:name、age、sex、address、phone,方法:打印员工信息
创建Student类继承Person父类,属性:StudentId
要求如下:
1)建立一个myemployee1包,所有类添加到此包中。设置name属性设置为public修饰符,age属性设置为protected修饰符,sex属性设置为默认修饰符,address、phone分别设置为private修饰符,使用重写方法打印学生的所有信息,并试图观察是否访问到每个属性,并用注释说明原因
2)建立一个myemployee2包,此包创建父类,设置name属性设置为public修饰符,age属性设置为protected修饰符,sex属性设置为默认修饰符,addres、phone分别设置为private修饰符
建立一个myemployee3包,此包创建子类,使用重写方法打印学生的所有信息,并试图观察是否访问到每个属性,并用注释说明原因
1.有一个银行账户Account 其中有账户余额的属性, 有存款和取款的行为 【利用封装的思想定义】
有一个测试类 调用账户的存款和取款的行为
【注意: 取款需要有判断 账户余额是否充足】
2.自己定义一个计算器工具类,实现以下内容
1.求两个数的和
2.求两数之差
3.求两数取余
4.求两数之积
自己定义一个测试类进行验证
3.利用封装的思想 实现下面功能
创建一个People类
属性:姓名 年龄 身高 性别
方法:说话 计算加法 改名
创建一个对象名叫“阿美”,年龄18岁 身高160 性别女
调用说话的方法说出“你好”
计算23+45的值
将名字改为“美眉”
2.4 多态 抽象
1 多态
2 抽象
3 final
代码练习
1多态:人 中国人 英国人 意大利人 餐厅 测试
2抽象:猫 狗 动物 测试
3final 具体概念应用
4 习题
1.设计一个形状(Shape)类,里面有计算周长和面积的方法
设计一个矩形类, 继承自形状类
自己特有属性 长和宽
设计一个三角形类 继承自形状类
特有属性 三个边的边长 【注意:两边之和大于第三边】
设计一个测试类,创建矩形对象和三角形对象 并计算其周长和面积
2.定义一个人的类(属性有名字,年龄。写一个能输出各个属性值
的方法showInfo(),定义一个学生类(属性有性别),学生继承人类
要求:
(1)父类的属性赋值用构造方法来实现(分别用有参数构
造方法和无参数构造方法实现)
(2)子类的属性也用构造方法来赋值。
(3)在子类中重写父类的
showInfo()方法
(4)声明学生类的对象,调用学生的显示信息的方法。
3.请编码实现动物世界的继承关系:
动物(Animal)具有行为:吃(eat)、睡觉(sleep)
动物包括:兔子(Rabbit),老虎(Tiger)
这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
1.整理面向对象知识点
类和对象的关系
构造函数
this关键字
封装
static关键字
代码块
继承
super关键字
final关键字
抽象类
*2.愤怒的小鸟游戏中,每种鸟都具有攻击的功能,但是
小红鸟的攻击方式为 - 投撞
小黄鸟的攻击行为 -- 加速撞击
小白鸟的攻击行为 ---- 下蛋攻击
小黑鸟的攻击行为 --- 自爆
小蓝鸟的攻击行为 --- 分身攻击
创建对应的对象,实现各自的攻击行为
*3.交通工具都具有有运输的功能,但是
轮船的运输行为 --- 海运
飞机的运输行为 --- 空运
货车的运输行为 ---- 陆运
创建各自的对象,实现运输行为
4.描述一个学生类,具备id 、 name两个属性 、 学生都具备学习的行为功能,但是有部分学生在学习的过程中也会赚钱。
普通学生: 学习,不会赚钱
会赚钱的学生:学习、 还会赚钱。
5.描述动物、 狗、 鱼 三个类,动物都具备name、 color两个属性、 动物都具备移动的行为。
狗特有的一个方法就是咬人。鱼特有的一个行为:吹泡泡。
2.5 接口 内部类 单例
1 接口 关于接口的而一个程序
2 内部类(4类 静态 匿名 局部 成员)
3 单例模式(饿汉 懒汉)
代码练习
1 接口: 鸟 飞机 超人 动物 飞行能力 睡觉能力 测试
2静态内部类 匿名内部类 局部内部类 成员内部类 (各类的定义写法)
3 单例 饿汉 懒汉 (定义写法)
4习题
1.设计一个员工类,其中有计算员工薪水的方法。
根据员工职务的不同,薪水计算方式也不同。
员工类型 薪水构成 -----------------------------------------------------
经理 底薪 + 奖金
销售人员 底薪 + 提成
普通员工 底薪 + 补贴(车补、饭补等等)
然后,设计一个测试类,测试一下。
场景:年终,领导找员工谈话,让员工介绍自己的薪水。
打印出来要求:信息尽可能详细。
2.设计一个动物类,属性: 姓名,性别
设计一个猫类,设计一个狗类, 猫和狗都继承自动物类
需求:在测试类中设计一个方法,这个方法需要一个参数,参数的类型可以是猫类,也可以是狗类
在方法体内,将传入的猫或者狗的属性输出即可
输出到底是猫还是狗
3. 设计一个公司抽象类,具有抽象方法 -- 营业,休息
设计一个快递公司类作为公司类的子类
设计一个顺风快递类,作为快递类的子类
需求:实例化一个顺丰快递的对象,从控制台录入一个24以内的数据,如果数据在8~18点之间,顺丰营业。否则,顺丰快递公司休息
4.
设计一个外部类,包含一个成员内部类,成员内部类中有一个方法show。
外部类中有一个属性name, 成员内部类中有一个属性name,show方法中有一个局部变量name
show方法需要分别打印三个name
class Out{
5.
设计一个家政服务接口,在接口中定义一个方法:洗衣,做饭
设计一个测试类,在测试类用匿名内部类来实现接口; 在main方法中实现场景:
小明请了一个保姆,回去做饭
6.每个计算机可以连接任意多个打印机,但是只能有一个打印打印处理系统,避免两个打印作业同时输出到打印机。
利用单例的方式设计程序,完成打印系统处理打印的问题。
7、编写以“动物”为例作为基类(属性:名称、颜色;动作:走路的动作),子类有:猴子类、老虎类、鸟类,并显示出动物的名称以及走路的动作
8、编写一个Person类用来保存人的姓名属性,并定义一个以姓名为参数的Person类的构造函数;再分别编写Person的子类客户类Customer和员工类Employee。
Customer类保存客户的ID属性,并提供可对客户ID号进行更新的方法;其构造方法以客户姓名和ID为参数,方法内部要调用父类Person的构造方法
Employee类保存员工的工号属性,并提供可对员工工号进行更新的方法;其构造方法以员工姓名和工号为参数,方法内部要调用父类Person的构造方法。
9、某汽车(Vehicle)租赁公司出租多种车辆,车型及租金情况如下:
编写程序实现计算租赁价
三、数组与collection
3.1 数组与查找
主要内容:
1 数组的应用 求和 遍历
2 普通查找 二分查找
3 排序 冒泡排序 选择排序 插入排序
代码练习:
1 数组的应用 求和 遍历 :十人成绩,输入,计算其和平均值,然后遍历输出
2 普通查找 二分查找
3 排序 冒泡排序 选择排序 插入排序
4 习题
1. 定义存放String类型数据的数组,放置5个元素,利用两种方法遍历数组元素(for for-each)
2.获取某个数组中的最小值
3.定义数组,键盘录入5个学生的成绩【成绩值自己设定】,获得成绩之和平均成绩,最小成绩,最大成绩。
4.一个学生考了三门科目,后来发现该生为特长生,每个科目加5分
5已知一个数组,
1.求数组中心元素。
2.求所有元素和。
3.输出所有奇数下标元素。
4.输出所有元素中,值为奇数的。
5.将所有元素乘二。
6.已知一个数组A,将奇数位置元素存到B数组中,偶数位置元素存到C数组中。
75.数组int[] arr = {1, 45, 67, 89, 90}; 将数组倒序输出为{90,89,67, 45, 1}
8.现在有如下的一个数组:
int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
int[] newArr={1,3,4,5,6,6,5,4,7,6,7,5}
思路:
生活中的问题解决= 程序中的解决;
1、确定出不为0的个数,这样可以开辟新数组;
2、从旧的数组之中,取出内容,并将其赋给新开辟的数组;
9.现在给出两个数组:
·数组A:[1, 7, 9, 11, 13, 15, 17, 19]
·数组b:[2, 4, 6, 8, 10]
两个数组合并为数组c,按升序排列。
思路:
1.根据A和B的长度和 创建一个新长度的数组C
2.遍历两个数组,将A和B中的元素放在C中
3.利用冒泡 选择 插入的方式进行升序或者降序的排序
3.2 数组与异常
主要内容:
1常处理机制,五个关键字
2 Arrys工具类的直接调用
3 math 方法的应用
4 多维数组
代码练习(例子)
1 异常查找 异常抛出 几个例子代码
2 Arrays工具类的直接调用(练手用)
3 math 方法的练习
4 多维数组的求和题(练习及变化)
5 习题
程序设计:
--------------------------- 请输入一个被除数:
请输入一个除数:
除的结果是:
--------------------------- 请输入一个被除数:
请输入一个除数:
除数输入有误,不能为0知道不~
--------------------------
*2、年龄只能输入0到100,使用自定义异常完成
3、使用二维数组,打印杨辉5行三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
4、用户从键盘输入若干个数存入数组中,用冒泡排序法对数组排序,比如:1 2 3 5 6
然后用户从键盘输入一个数,把该数插入数组中,保证插入该数后,数组还是有序的
1 2 3 4 5 6
5、打印数组a中出现奇数次的数字(扩展)
int[] a = { 1, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 8 };
例如: 1出现次数:1
4出现次数:3
6出现次数:5
8出现次数:1
3.3基本数据类型对应的包装类 常用类
1基本数据类型
2 string类
3 StringBuffer类
4.StringBuilder类
习题
1.从控制台录入一个字符串,判断字符'a'在该字符串中出现的次数
2.从控制台录入一个字符串,去除这个字符串中所有的空格,并输出
String replace(char oldChar, char newChar)
(" ","")
3.从控制台录入一个字符串,如果这个字符串以大写字母开头,将该字符串转成全小写;
如果这个字符串以小写字母开头,将该字符串转成全大写
a-z:97-122
A-Z:65-90
4.从控制台输入一个字符串,大写转小写,小写转大写
5.对字符串中字符进行自然顺序降序排序。
6.获取一个字符串在另一个字符串中出现的次数
"abkkcdkkefkkskk"
思路:
1,定义个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成
7.将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg"; gfedcba
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4,只要将或反转的部分的开始和结束位置作为参数传递即可
8、声明一个枚举,枚举值为四季,实现需求:
设计一个学生类,在学生类中设计一个枚举类型的成员变量
实现一个普通方法,实现:根据学生的枚举类型的成员变量的值,定制不同季节的上课
---
3.4集合 collection list
collection 接口:list 和 set
1 arraylist
2 linkedlist
3.Iterator接口
习题
1.创建一个User类,用于name,password两个成员变量。
在主函数中使用for循环创建10个User对象,并对成员变量赋值,
在for循环中把10个User对象加入到一个ArrayList对象中。
然后再使用一个for循环从这个ArrayList对象中把User对象取出,
并在屏幕上打印这10个User对象的成员变量。
2.使用Iterator对象取出存放在ArrayList中的User对象,重复上述试验。
3、设计一个交通工具抽象类,提供抽象方法--驾驶
汽车作为交通工具的一种,实现了驾驶的方法(在马路上驾驶)
火车作为交通工具的一种,实现了驾驶的方法(在铁路上驾驶)
飞机作为交通工具的一种,实现了驾驶的方法(在天上驾驶)
需求:做一个测试类,在测试类的main函数中,分别实例化一个汽车的对象,
火车的对象和飞机的对象,并分别描述驾驶行为
4.设计一个工厂类(富土康),传入一个标志,返回不同类型的手机
5、设计一个数据传输接口:Type-C标准
设计一个防水的接口:防水
设计一个手机类,实现这个数据传输接口,采用Type-C;同时实现了防水的接口
6、程序设计:
运输接口:服务宗旨:更快,更快,更快!
空运运输接口:空运
陆运运输接口:陆运
快递公司类:属性: 公司名
韵达快递:只能陆运
申通快递:只能空运
顺丰快递:既能陆运,也能空运
需求:
小明需要寄快递,要发陆运
小王需要寄快递,要发空运
3.5 set
1 hashset
2treeset
习题
1.已知有一个工人Worker类 属性:姓名 年龄 工资, 行为 void work()
a.在ArrayList集合中添加三个工人对象,信息如下:
zhang3 18 3000
li4 25 3500
wang5 22 3200
b. 在li4之前插入一个工人 信息为: zhao6 24 3300
c. 删除wang5的信息
d. 利用for循环遍历,打印几个中所有工人的信息
e. 利用迭代遍历,对集合中的所有工人调用work方法
2. 在上一题的基础上 将集合换为HashSet
要求: 当工人姓名 年龄 工资全部相等时 是为同一个工人
3.在第1题的基础上 将集合换为TreeSet
要求:按照工人姓名降序排序,如果姓名一样,按照工人年龄升序排序,如果年龄一样,按照工资降序排序