Java基础
学习时间安排
一、每天的课程安排
8:30 开始读单词 (25 个-30 个,来回两遍)
8:40-9:00 每天一考
9:00-12:00 上午三节课
1:45-2:00 学生分享
2:00 - 5:00 下午三节课
6:00-9:30 晚自习
(6:00 – 6:30 : 梳理白天的知识:课件、视频、eDiary 框架
6:30 – 晚自习结束:敲代码:至少每天代码敲 2-3。)
周一、二、三 上课
周四 自习
周五、周六 上课
周日 休息
day00_编程入门
Java基础知识图解
03-入门概述
04-冯诺依曼体系结构
05-CPU 和 IT 行业三大定律
06-持久化存储设备
07-bit 与 byte
08-内存
09-输入输出设备和网络连接设备
10-计算机史上的两个鼻祖
11-操作系统
12-万维网与软件架构方式
13-职业发展与提升
14-学习经验探讨
day01_Java 语言概述
01-Java 基础阶段目录概述
02-Java 后续学习大纲简述
03-Java 主要应用场景
04-Java 基础图谱及基础阶段项目说明
05-每天授课须知
06-图形化界面操作与命令行操作介绍
07-常用的命令行指令
08-计算机语言的划分
09-不同编程语言的介绍
10-Java 语言的历史及技术体系平台
11-Java 语言的特点
12-JVM 与垃圾收集机制
13-JDK、JRE、JVM 的关系
14-JDK 与 JRE 的安装
15-环境变量的配置
16-配置环境变量中几个问题的解决
17-第一个 Java 程序:HelloWorld
18-几个常见的 bug 的解决
19-EditPlus 的安装和配置
20-单行注释与多行注释
21-文档注释的使用
22-多行注释使用的一个注意点
23-API 文档的说明
24-第一个 Java 程序的总结
25-Java 开发工具的说明
day02_Java 基本语法
01-每天一考
02-复习 1
03-复习 2
04-关键字和保留字的说明
05-标识符及命名规则
06-标识符的命名规范
07-变量的定义
08-定义变量的注意点
09-变量的分类
10-整型变量的使用说明
11-浮点型变量的使用说明
12-char 型变量的使用说明
13-乱码的情况和字符集的说明
14-boolean 型变量的使用
15-自动类型提升运算 1
16-自动类型提升运算 2
17-强制类型转换运算
18-变量运算规则的两个特殊情况
19-String 类型变量的使用
20-两个关于 String 的练习题
21-String 使用的强化说明
22-不同进制的表示方式
23-二进制转换为十进制的说明
24-二进制转换为十进制的练习
25-十进制转二进制的操作
26-二进制与八进制十六进制间的转换
day03_Java 基本语法
01-每天一考
02-复习 1
03-复习 2:变量的定义
04-复习 3:变量的运算规则
05-算术运算符的使用 1
06-算术运算符的使用 2
07-算术运算符的练习
08-关于敲代码和练指法
09-赋值运算符的使用
10-赋值运算符的课后练习
11-比较运算符的使用
12-逻辑运算符的使用说明
13-逻辑运算符的使用测试
14-逻辑运算符的课后练习
15-左移右移位运算符的使用
16-其它位运算符的使用
17-位运算符的练习
18-三元运算符的使用
19-三元运算符与 if-else 的转换
20-运算符的优先级
21-关于流程控制的说明
22-if-else 结构的基本使用
day04_Java 基本语法
01-每天一考
02-复习 1:算术与比较运算符
03-复习 2:比较与逻辑运算符
04-复习 3:位运算符与三元运算符
05-使用 Scannner 从键盘获取 int 型数据
06-使用 Scannner 从键盘获取多种类型数据
07-if-else 的例题 1
08-if-else 的例题 2
09-if-else 课后练习 1:笔试题
10-if-else 课后练习 2:狗的年龄
11-if-else 课后练习 3:彩票问题
12-if-else 课后练习 4:高富帅
13-switch-case 结构的基本使用
14-switch-case 结构的使用说明
15-switch-case 的例题 1
16-switch-case 的例题 2
17-switch-case 课后练习:日期累积
18-switch-case 与 if-else 的转换说明
19-循环结构及 for 循环的理解
20-for 循环结构的使用
21-for 循环的例题
day05_Java 基本语法与项目一
01-每天一考
02-复习
03-for 循环的例题
04-for 循环课后练习
05-while 循环的基本使用
06-do-while 循环的基本使用
07-while(true)结构的使用
08-嵌套循环的使用 1
09-嵌套循环的使用 2
10-嵌套循环练习:九九乘法表
11-质数输出的实现方式一
12-质数输出的算法优化一
13-质数输出的算法优化二
14-break 和 continue 的基本使用
15-带标签的 break 和 continue 的使用
16-质数输出的实现方式二
17-项目一的演示
18-项目一中 Utility 工具类的说明
19-项目一整体框架的搭建
20-项目一退出功能的实现
21-项目一收支明细功能的实现
22-项目二登记收入功能的实现
23-项目一登记支出功能的实现
day06_Eclipse 的使用与数组
01-每天一考
02-复习
03-Eclipse 首次启动的设置
04-HelloWorld 程序的编写和执行
05-Eclipse 使用的常见问题 1
06-Eclipse 使用的常见问题 2
07-数组的概述
08-一维数组的初始化
09-数组元素的调用
10-数组的长度与遍历
11-数组元素的默认初始化值
12-内存结构的简单说明
13-一维数组的内存解析
14-一维数组的课后练习 1
15-一维数组的课后练习 2
16-二维数组的理解和初始化
17-二维数组元素的调用
18-二维数组的长度和遍历
19-二维数组元素默认初始化值
20-二维数组的内存解析
day07_数组
01-每天一考
02-复习:Eclipse 的使用
03-复习:数组的概述_数据结构概述
04-复习:一维数组与二维数组
05-二维数组练习:基本操作
06-二维数组练习:杨辉三角
07-算法:数组元素的赋值
08-算法:数值型数组元素的操作
09-课后练习:数组赋值
10-算法:数组的复制
11-算法:数组元素的反转
12-算法:线性查找
13-算法:二分法查找
14-算法和排序算法的概述
15-算法:冒泡排序的实现
16-算法:快速排序的说明
17-排序算法的横向对比
18-Arrays 工具类的使用
19-数组中的常见异常
20-数组的总结
每天一考
1、使用冒泡排序,实现如下的数组从小到大排序。
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
2、如何翻转上面的数组。请代码实现。
3、复制上述数组,得到一个新的数组。
4、使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引。不存在,输出提示信息。
5、数组中常见的异常有哪些?请举例说明。
四、面向对象基础
01-面向过程与面向对象
02-两个要素:类和对象
概念:
类(Class)和对象(Object)是面向对象的核心概念。
- 类是对一类事物的描述,是抽象的、概念上的定义。
- 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
类的成员构成:
03-对象的创建和使用
类的访问机制
1、在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过
。)
2、在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中
定义的成员。
内存解析
class Car{
String color = "red";
int num = 4;
void show(){
System.out.println("color="+color+"..num="+num);
}
}
class CarTest {
public static void main(String[] args) {
Car c1 = new Car(); //建立对象c1
Car c2 = new Car(); //建立对象c2
c1.color = "blue"; //对对象的属性进行修改
c1.show(); //使用对象的方法
c2.show();
}
}
对象数组的内存解析:
匿名对象
1、 我们也可以不定义对象的句柄,而直接调用这个对象的方法。这
样的对象叫做匿名对象。如:new Person().shout();
2、如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。我们经常将匿名对象作为实参传递给一个方法调用
。
匿名对象的使用:
public class InstanceTest {
public static void main(String[] args) {
Phone p = new Phone();
// p = null;
System.out.println(p);
p.sendMail();
p.playGame();
// 匿名对象
new Phone().price = 5999;
new Phone().showPrice(); // 0.0 两次new的对象不同
// 匿名对象的使用
PhoneMall mall = new PhoneMall();
mall.show(new Phone());
}
}
class PhoneMall {
public void show(Phone phone) {
phone.sendMail();
phone.playGame();
}
}
class Phone {
double price;
public void sendMail() {
System.out.println("发邮件");
}
public void playGame() {
System.out.println("打游戏");
}
public void showPrice() {
System.out.println("手机的价格为:" + price);
}
}
04-类的成员之一:属性(field)
语法格式
语法格式:修饰符 数据类型 属性名 = 初始化值 ;
1、常用的权限修饰符有:private、缺省、protected、public
;其他修饰符:static、final (暂不考虑)
2、数据类型:任何基本数据类型
(如int、Boolean) 或 任何引用数据类型
。
3、属性名: 属于标识符,符合命名规则和规范即可。
举例:
public class Person{
private int age; //声明private变量 age
public String name = “Lila”; //声明public变量 name
}
变量的分类
成员变量与局部变量:
1、在方法体外,类体内声明的变量称为成员变量。
2、在方法体内部声明的变量称为局部变量。
成员变量和局部变量的区别:
对象属性的默认初始化赋值
05-类的成员之二:方法(method)
方法的声明格式
【注意】
1、没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可以不必使用return语句。如果使用,仅用来结束方法。
2、方法中只能调用方法或属性,不可以在方法内部定义方法。
练习-类的设计
2、利用面向对象的编程方法,设计类Circle计算圆的面积。
练习-方法声明
3-1、编写程序,声明一个method方法,在方法中打印一个108 的型矩形,
在main方法中调用该方法。
3-2、修改上一个程序,在method方法中,除打印一个108的型矩形外,再
计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,
接收返回的面积值并打印。
3-3、修改上一个程序,在method方法提供m和n两个参数,方法中打印一个
mn的型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法
中调用该方法,接收返回的面积值并打印。
练习-对象数组
4、定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息。
【提示】:
1)生成随机数:Math.random(),返回值类型double;
2) 四舍五入取整:Math.round(double d),返回值类型long。
5、声明一个日期类型MyDate:有属性:年year,月month,日day。创建2个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。
自定义数组的工具类
- ArrayUtil:求数组的最大值、求数组的最小值、求数组总和、求数组平均值、反转数组、复制数组、数组排序、遍历数组、查找指定元素
冒泡排序:
1、第一层循环是用来控制趟数,也就是n 个数就要比较 n-1 趟
;那么第二层循环能不能具体解答一下呢?
2、第二层是控制第 i + 1 趟
(因为循环中 i 是从 0 开始的)的比较次数,那么 i+1 趟就是比较了N - 1 - i
次。
/*
* 自定义数组工具类
*/
public class ArrayUtil {
// 求数组的最大值
public int getMax(int[] arr) {
int maxValue = arr[0];
for (int i = 1; i < arr.length; i++) {
if (maxValue < arr[i]) {
maxValue = arr[i];
}
}
return maxValue;
}
// 求数组总和
public int getSum(int[] arr) {
int sum = 0;
for (int i =