本帖最后由 小石姐姐 于 2017-12-7 15:06 编辑
# day01 基础知识
JAVA概述
* 创始人: 詹姆斯·高斯林
* Java最初由Sun公司运行,后来被Oracle收购
* Java版本:
Jdk1.5,重命名为JavaSEe,JavaME,JavaEE
* Java语言的平台版本:
JavaSE:标准版本,用于桌面软件开发
JavaME:嵌入式版本,用于嵌入式程序开发
JavaEE:企业版本,开服服务器程序(网站后台,ERP,OA,银行结算系统)
*3个概念:
JVM:java虚拟机,他是实现Java跨平台的关键,不同系统平台上有不同的JVM
Jre:Java运行时环境,是运行Java程序的一个小环境
包括JVM和Java核心类库
Jdk:Java开发工具包,用于开发Java程序包括JRE和java的开发工具
* 编写HelloWorld
* 创建一个名为`HelloWorld.java`的文件, 注意这是源代码文件, 以`.java`文件名结尾
* 使用文本编辑器打开该文件, 编写代码
* 定义一个类: `public class 类名 {}`
* 注意: 类名和文件名要一致, 并且单词首字母大写, 其他小写
* 在类中定义主方法: `public static void main(String[] args) {}`
* 注意: 一个字都不能错
* 在主方法中编写代码, 输出语句: `System.out.println("HelloWorld");`
* 保存代码
* 编译源代码文件: `javac 文件名.java`
* 编译完毕后, 会自动生成`.class`文件
* 运行`.class`文件: `java 文件名`
* 注意没有后缀
* Java基本语法
* 3种注释
* 单行注释: `// 注释内容`
* 多行注释: `/* 多行的内容 */`
* 文档注释: `/** 文档注释内容*/
*关键字
特点:组成关键字的字母全部小写
常用的代码编辑器对关键字有特殊的颜色标记
*常量
常量:在程序执行的过程中,其值不可以发生改变的量
*分类
字符串常量 用双引号括起来的内容(“HelloWorld”)
整数常量 所有整数(12,-23)
小数常量 所有小数(12.34)
字符常量 用单引号括起来的内容(‘a’,’A’,’0’)
布尔常量 较为特有,只有true和false
空常量 null(数组部分讲解)
*变量
概念: 内存中的一片区域, 可以保存值. 在程序的执行过程中, 其值可以在一定范围内发生改变.
* 变量格式
数据类型 变量名 = 初始化值;
数据类型 变量名; 格式是固定的
* 数据类型
* 基本数据类型(4类8种)
* 整数
* byte
* short
* int
* long: 数字后加L
* 浮点数
* float: 数字后加F
* double
* 字符
* char
* 布尔
* boolean
* 引用数据类型
* 数组
* 类
* 接口
* 标识符
* 作用: 给包, 类, 方法, 变量起名
* 组成规则:
* Unicode字符
* 数字: 不能开头
* 大写, 小写英文字母
* 汉字: 不建议使用
* 下划线: `_`
* 美元符号: `$`
* 起名的一个惯例: 见名知意
* 类型转换
* 隐式转换: 从数据类型的小到大进行转换
* 规则: `byte, short, char -> int -> long -> float -> double`
* 强制转换: 手动强制转换类型
* 格式: `目标类型 变量名 = (目标类型)(被转换的数据)
## day02 总结笔记 Eclipse, 运算符, 键盘录入
Eclipse的概述和安装
* IDE: Integrated Development Environment, 集成开发环境
* 集成了代码编写, 代码分析, 编译, 调试等功能的开发软件
* 下载和安装:
* 官网下载: https://eclipse.org/ide/
* 安装: 压缩包解压
## Eclipse的基本使用
* 运行环境: 需要JRE
* workspace: 工作空间, 存放项目代码的地方
## 算术运算符的基本用法
* 运算符:
* 用于对常量和变量进行操作的符号
* 表达式:
* 用运算符链接起来的, 符合Java语法的式子.
* 不同的运算符链接的表达式是不同类型的表达式
* 5种运算符:
1. 算数运算符
* `+`: 加
* `-`: 减
* `*`: 乘
* `/`: 除 (整数相除结果是整数, 有浮点数参与运算, 结果才为浮点数) 除法: 4 / 3 商1 余1
* `%`: 取余
* `++`: 自增1
* `--`: 自减1
2. 赋值运算符
3. 关系运算符
4. 逻辑运算符
5. 三元运算符
* 注意:
* 整数相除只能得到整数, 有小数参与运算才能得到小数
## 字符和字符串参与加法操作
* 字符参与加法运算:
* 其实是拿字符在计算机中存储的数据值来参与运算的
* 字符串参加加法(拼接)
* 其实不做加法运算, 而是拼接字符串
day03 流程控制语句
顺序结构
*顺序结构是最基本的流程
*顺序结构的特点是:从上往下一次进行
循环控制语句
* 循环语句: 在满足循环条件的情况下, 反复执行某段代码.
* 循环体: 这段被重复执行的代码
* 循环的停止: 在合适的时候将循环判断条件修改为false, 从而结束循环. 否则循环将一直执行下去, 形成死循环
* 循环语句的组成
* 初始化语句: 一条语句(一条语句可以初始化多个变量), 这些语句完成一些初始化操作
* 判断条件语句: boolean表达式, 这个表达式能决定是否执行循环体
* 循环体语句: 要重复做的事情
* 控制条件语句: 控制循环结束
* 3种循环结构语句
1. for循环
2. while循环
3. do...while循环
for, while, do...while三种循环的区别
* 区别
* do...while: 至少执行一次循环体
* for, while: 必须判断条件成立, 才可以执行循环体
* for循环的初始化语句的作用域: for的大括号内
## 控制循环语句
* 2个控制循环语句:
* `break`: 直接结束循环, 或switch语句
* `continue`: 结束本次循环, 继续执行下一次
break跳转控制语句的概述和基本使用
* break的使用场景: 不能单独使用, 必须用于switch或循环中
* break的作用:
1. 在switch语句中, 用于结束case
2. 在循环中, 用于结束所在的循环
continue跳转控制语句
* continue的使用场景: 循环中
* continue的作用: 结束本次循环, 继续下一次的循环
# day04 Random, 数组
* `Random`类: 用于生成随机数的类
* 使用步骤:
1. 导包: `import java.util.Random;`
2. 创建Random类的对象: `Random r = new Random();`
3. 使用对象调用方法获取随机数: `int number = r.nextInt(10);`
* `nextInt(y)`表示产生的数据在0到y之间, 包括0, 但不包括y
## 数组概述和定义格式
* 数组:
* 存储**同一种数据类型**的**多个**元素的**容器**
* 2种定义格式(区别在于中括号的位置不同):
1. `数据类型[] 数组名;`
* 推荐使用这种格式
* 示例: `int[] arr;`
2. `数据类型 数组名[];`
* 示例: `int arr[];`
## 数组的动态初始化
* 初始化
* 为数组开辟内存空间, 并为数组中的每一个元素赋一个初始值
* 2种初始化:
* 动态初始化: 我们给出数组长度, 由系统给出元素的默认值
* 静态初始化: 我们给出初始化值, 由系统给出数组长度
## 数组元素的访问
* 数组的元素: 数组中的单个数据
* 数组的索引: 元素在数组中的位置序号, 从0开始
* 角标
* 访问数组的元素: `数组名[索引];`
## Java中的内存分配图解
* Java中的内存分配
* 栈: 存储局部变量
* 堆: 存储new出来的实体(对象)
* 方法区: 存储加载的类, 面向对象进阶讲解
* 本地方法区: 和系统相关
* 寄存器: 给CPU使用
* 局部变量
* 定义在方法中的变量
* 堆的特点:
* 每一个对象都有地址值
* 每一个对象的数据都有默认值
* 使用完毕后会在垃圾回收器空闲的时候被垃圾回收器回收内存
* 栈的特点:
* 先进后出
* 使用完毕后立即回收内存
数组的静态初始化
* 数组的静态初始化:
* 我们给出初始化值, 由系统给出数组长度
二维数组的概述和基本使用
* 二维数组:
* 概念: 二维数组是元素为一维数组的数组
* 定义格式:
* 格式1(推荐): `数据类型[][] 数组名;`
* 格式2: `数据类型 数组名[][];`
* 格式3: `数据类型[] 数组名[];`
* 初始化格式
1. 动态初始化: `数据类型[][] 数组名 = new 数据类型[m][n];`
* `m`: 二维数组中一维数组的个数(二维数组的长度)
* `n`: 一位数组中的元素个数(二维数组中一维数组的长度)
2. 静态初始化:
*
## 二维数组操作之遍历二维数组
* 遍历二维数组:
* 使用for循环+二维数组索引
# day05 方法
## 方法定义格式
* 方法:
* 完成特定功能的代码块
* 作用
* 提高代码复用性和可维护性
* 定义格式:
* 修饰符: 目前记住public static
* 返回值类型: 用于限定返回值的数据类型
* 方法名: 方法的名字, 便于我们调用
* 参数类型: 用于限定调用方法时传入数据的类型
* 参数名: 用于接收调用方法时传入数据的变量
* 用于告诉方法的调用者, 调用该方法时需要传入何种数据
* 方法体: 完成我们需要的功能的代码
* return语句: 结束方法, 并把返回值传递给调用者
## 求和方法的调用
* 调用方法的3种格式
1. 单独调用: `sum(10, 20);`
2. 输出调用: `System.out.println(sum(10, 20));`
3. 赋值调用: `int result = sum(10, 20);`
* 注意:
* 所有定义的方法都需要被调用才能执行, 包括main()方法, main()方法由虚拟机调用
## 求和方法调用图解
* 调用方法时, 参数如何传递?
* 调用方法时, 参数传递到方法的参数列表中, 进入方法被使用
* 方法return的结果会作为调用方法的结果
## void修饰的方法的调用
* void:
* 当方法没有返回值时, 返回值类型写void
* 注意:
* 返回值类型为void的方法只能单独调用
* void作为返回值类型的方法, 可以不写return语句; 或使用`return;`结束方法, 但不能使用`return 值;`
## 方法重载的概述和基本使用
* 方法的重载:
* 英文Overload
* 概念: 在**同一个类中**, 有多个方法名相同, 参数列表不同的方法
* 方法重载的特点:
* 在同一个类中
* 方法名相同
* 参数列表不同
* 参数个数不同
* 参数的数据类型不同(包括数据类型相同但参数列表的顺序不同)
* 方法重载和什么无关?
* 和返回值类型无关
* 和参数的变量名无关
* 和方法体无关
## 方法重载练习: 比较数据是否相等
* 参数类型为int的方法能否接收byte的数据?
* 能, 因为byte范围比int小, 可以隐式转换, 这是安全的
* 参数类型为byte的方法能否接收int的数据?
* 不能! 因为int范围比byte大
* 如果有两个方法, 参数列表为byte和int类型, 怎样才能调用参数类型为byte的方法?
* 在调用方法时传入byte类型的参数, 程序会自动找到对应参数类型的方法进行调用
## 方法的形参是基本类型
* 实际参数: 实际参与运算的变量
* 用于在调用方法时传入, 如`sum(1,2);`
* 形式参数: 简称形参, 定义在方法参数列表中
* 用于接收实际参数的变量, 如`public static int sum(int a, int b){}`
* **注意**:
* 方法的形参是**基本数据类型**: 形参的值改变不会影响实际参数
# day06 Eclipse断点调试 基础语法练习
## Eclipse断点调试的作用和步骤
* 断点:
* breakpoint, 标记程序在这里暂停
* 断点调试的作用:
* 可以在程序运行中查看程序的执行流程
* 调试程序, 如查看变量的值
* 如何加断点:
* 在行号左边双击
* 创建/取消断点
- 单个断点: 双击
- 多个断点: 在debug视图中的breakpoints窗口中点击`Remove all breakpoints`按钮
* 执行debug:
* 右键 - debug as
* 窗口功能介绍
- 开启debug窗口方式
- 点击右上角创建窗口按钮
- 右键debug as出现
- 窗口区域
- 代码区域: 看程序的执行流程
- Debug区域: 看程序的执行流程
- Variables: 看变量的值
- Console: 看控制台输出
- breakpoints: 查看所有断点
* 快捷键
- F5 进入方法
- F6 执行下一行代码
- F7 跳出方法
- F8 调到下一个断点 |
|