黑马程序员技术交流社区

标题: JavaEE笔记Day[0-6] -- 【石家庄校区黑马6期】 [打印本页]

作者: 信仰°    时间: 2017-11-29 21:59
标题: JavaEE笔记Day[0-6] -- 【石家庄校区黑马6期】
本帖最后由 小石姐姐 于 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 调到下一个断点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2