A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉鑫 初级黑马   /  2017-11-29 14:45  /  737 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2017-11-30 10:42 编辑

        java创始人位詹姆斯高斯林 JDK1.5, 重命名为JavaSE, JavaME, JavaEE
            JVM: Java虚拟机, 他是实现Java跨平台的关键, 不同系统平台上有不同的JVM
                 JRE: Java运行时环境, 是运行Java程序的一个最小环境
                        包括JVM和Java核心类库
                JDK: Java开发工具包, 用于开发Java程序
                        包括JRE和Java的开发工具(javac)       开发环境配置  安装JDK   Windows下, 使用exe安装包
         配置环境变量 将jdk的bin目录放入系统的Path环境变量中, 这样在命令行中在任意目录下都可以使用jdk的bin目录中的命令
                       
                                我的电脑右键, 属性, 高级选项卡中, 环境变量, 系统变量:
                                 新建一个名为JAVA_HOME的变量名, 值为jdk的路径, 保存
                                 找到名为Path的变量, 编辑, 在值的最开始, 添加`%JAVA_HOME%\bin;`, 保存

                     3种注释
                      单行注释: `// 注释内容`
                      多行注释: `/* 多行的内容 */`
                      文档注释: `/** 文档注释内容 */`
                 关键字
                   特点:  字母小写
             常量概念: 在程序执行过程中, 其值不能改变 字符串常量字符常量 整数常量 浮点数常量布尔常量空常量
             变量: 概念: 内存中的一片区域, 可以保存值. 在程序的执行过程中, 其值可以在一定范围内发生改变.
                     格式:
                                 `数据类型 变量名 = 初始化值;`
                                `数据类型 变量名;`
                 
                数据类型
                         基本数据类型(4类8种)
                                
                          整数         byte
                                         short
                                         int
                                         long: 数字后加L
                             
                           浮点数    float: 数字后加F
                                         double
                                 字符
                                         char
                                 布尔
                                         boolean
                        引用数据类型
                                 数组
                                 类
                                 接口
                标识符
                       作用: 给包, 类, 方法, 变量起名
                        组成规则:
                          数字: 不能开头
                                      大写, 小写英文字母
                                      汉字: 不建议使用
                                      下划线: `_`
                                      美元符号: `$`
                    
               类型转换
                      隐式转换: 从数据类型的小到大进行转换
                                规则: `byte, short, char -> int -> long -> float -> double`
                       强制转换: 手动强制转换类型
                               格式: `目标类型 变量名 = (目标类型)(被转换的数据);`
DOS命令
        打开cmd:
             `Win + r`, 输入cmd, 回车
      切换盘符: `d:` , 回车
         切换目录: `cd 目录名`
                 返回上一层目录: `cd ..`
                 返回该盘符的顶层目录: `cd \`
                 多级目录: `cd a\b\c`
       查看当前目录中的文件和目录: `dir`
       查看指定目录下的文件和目录: `dir 目录名`
        清空屏幕: `cls`
        * 退出cmd: `exit`
Eclipse
        安装: 解压
        配置: 字体等
        工作空间(workspace): 保存项目
        Eclipse是以项目为单位管理的
         开发步骤
                 创建项目
                 在src目录下创建包
                 在包中创建类
运算符  算术运算符
                 `+`: 加
                 `-`: 减
                 `*`: 乘
                 `/`: 除
                 `%`: 取余
                 `++`: 自增
                 `--`: 自减
                 自增和自减
                        * `i++`和`++i`的区别:
                                * 单独使用时, 结果一样
                                * 参与运算时
                                        * `i++`: 先使用i的值作为i++表达式的值, 然后i自增
                                        * `++i`: i先自增, 然后使用自增后的值作为++i表达式的值
                字符参与加法运算
                         在参与加法运算时, 以字符本身的值进行运算, 结果为数字
                         直接打印字符时, 输出的仍然是字符
                 字符串参与加法运算: 拼接字符串
         赋值运算符
                 `=`: 赋值
                 `+=`: 拿左边和右边的值相加, 然后赋值给左边
                 `-=`: 拿左边和右边的值相减, 然后赋值给左边
                 `*=`: 拿左边和右边的值相乘, 然后赋值给左边
                 `/=`: 拿左边和右边的值相除, 然后赋值给左边
                 `%=`: 拿左边和右边的值取余, 然后赋值给左边
                 注意事项
                         扩展的赋值运算符隐含了强制类型转换
                         `int i += 10;`相当于`int i = (int)(i + 10);`
         关系运算符
                 `==`: 相等
                 `!=`: 不等
                `>`: 大于
                 `>=`: 大于等于
                 `<`: 小于
                 `<=`: 小于等于
                 关系运算符的结果是boolean类型的
         逻辑运算符
                 `&`: 与. 两边都为true则为true, 否则为false
                `|`: 或. 只要有一边为true则为true, 否则false
                 `^`: 异或. 男女是真爱(两边不同为true, 两边相同为false)
                 `!`: 非. 取相反的值
                 `&&`: 短路与. 和`&`结果一样, 但如果左边能够直接确定结果, 则右边不判断
                `||`: 短路或. 和`|`结果一样, 但如果左边能够直接确定结果, 则右边不判断
       三元运算符
                 格式: `关系表达式? 结果为true的表达式 : 结果为false的表达式;`
                        当关系表达式为true时, 返回左边的
                         当关系表达式为false时, 返回右边的
                         注意, 三元运算符是有返回值的
键盘录入
      
                 导包: `import java.util.Scanner;`

                创建对象: `Scanner sc = new Scanner(System.in);`
               获取键盘输入的整数: `int i = sc.nextInt();`
流程控制语句(没有{}的语句只控制;之前的语句,也就是只控制下一行语句)
顺序结构
选择结构(我的选择顺序:三元运算符=>switch语句=>if语句。没有{}的语句只控制;之前的语句,例如:if(a==b)a+b=c;)
if
-注意:只声明没赋值的变量,通过if语句时没有赋值的话,执行程序运行时报错不能运行。
switch
语句格式:
switch(表达式){//【表达式只能是:bety,short,int,char,String,枚举。】
cast 值1:【只能是常量,而且值的类型要与小括号中一样】
语句体1;
break;//中断【如果这里不写break会继续运行一个语句体,这叫“case穿透”】
cast 值2:
语句体2;
break;
……
default://所有值不匹配执行
语句体n+1;
break;//最后的一个break可以省略
}

循环结构
for(知道循环次数的场合使用)
for(初始化;判断条件语句;控制条件语句)
{ 循环体语句;
}
多条语句:for (int strart = 0,end=arr.length-1;strart<=end;start++,end--) {}
while【不知道循环次数的场合使用】
初始化语句;
while(判断条件语句){循环体语句;控制条件语句;
}
无限循环:while(true){};//while(true){}可以通过break中断
do…while(不知道循环次数的场合使用,至少执行一次,一般不用)
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);


三种循环语句的区别
do……while循环语句至少执行一次循环体。
for循环结束后,初始化的变量不能再被使用了,而while循环结束后,初始化的变量还可以继续使用。
推荐使用循环顺序:for=>while=>do…while。
跳转控制语句(离开使用场景没有意义!)

break:中断
使用场景:
switch语句中
循环中
作用:结束所有循环!(如果循环嵌套使用的话,只中断break语句所在的最近的循环)
continue:继续
使用场景:循环中
作用:结束本次循环!
Random类
       作用: 生成一个随机数
      步骤:
               导包: `import java.util.Random;`
                创建对象: `Random r = new Random();`
                生成随机数: `int n = r.nextInt(10);`, 获取0到9的随机数(0到10, 包含0不包含10)
       数组概念: 存储同一种数据类型的多个元素的容器
                 定义:
                        `数据类型[] 数组名;`, **推荐**
                       `数据类型 数组名[];`
                初始化
                      动态初始化: 我们给定数组长度, 由系统给定元素的初始值
                                格式: `数据类型[] 数组名 = new 数据类型[数组长度];`
                                示例: `int[] arr = new int[3];`
                         静态初始化: 我们给定元素的初始值, 由系统给定数组长度
                                格式:
                                       普通格式: `数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ...};`
                                                 示例: `int[] arr = new int[]{1, 2, 3};`
                                      简化格式: `数据类型[] 数组名 = {元素1, 元素2, ...};`
                                               示例: `int[] arr = {1,2,3};`
                数组的长度
                         什么是长度? 数组中元素的个数
                         数组名.length: length是属性, 获取数组的长度
                 数组中元素的默认值
                         int: `0`
                         float, double: `0.0`
                         char: `\u0000`
                         boolean: `false`
                         引用类型: `null`
                 数组元素的访问
                        格式: `数组名[索引]`
                       数组的索引: 元素的编号, 从0开始
                 数组的遍历
                         什么叫做遍历: 依次获取数组中的所有元素
                         如何遍历? for循环实现
       二维数组
                 什么是二维数组: 元素为一维数组的数组
                 定义
                         `数据类型[][] 数组名;`, **推荐**
                         `数据类型[] 数组名[];`
                         `数据类型 数组名[][];`
                 初始化
                        动态初始化
                                格式: `数据类型[][] 数组名 = new 数据类型[二维数组的长度][一维数组的长度];`
                                       示例: `int[][] arr = new int[2][3];`
                        静态初始化
                                普通格式: `数据类型[][] 数组名 = new 数据类型[][]{{元素1, 元素2,...}, {元素1, 元素2,...}, ...};`
                                        示例: `int[][] arr = new int[][]{{1, 2}, {3, 4, 5}};`
                                 简化格式: `数据类型[][] 数组名 = {{元素1, 元素2,...}, {元素1, 元素2,...}, ...};`
                                       访问元素:
                         格式: `数组名[二维数组的索引][一维数组的索引]`
                二维数组的遍历: 嵌套for循环
        数组操作常见的2个异常:
                 `ArrayIndexOutOfBoundsException`: 数组索引越界异常
                         发生原因: 使用了不存在的索引
                         如何避免: 检查索引, 防止越界
                 `NullPointerException`: 空指针异常
                         发生原因: 引用类型的变量保存的值为null, 然后访问了数组元素或是调用了方法或属性
                         如何避免: `if (引用类型变量 != null) {操作}`
       数组获取最值
        两个数组变量指向同一个数组的操作
Java内存
         内存分区
                栈: 存放局部变量
                         垃圾会立即回收
                 堆: 存放new出来的对象
                       垃圾要在垃圾回收器空闲时回收
                方法区
                本地方法区
                 寄存器
        数组的内存分配
                 `int[] arr`: 在栈中开辟内存空间
                `new int[3];`: 在堆中开辟内存空间, 并初始化元素的默认值
                 `=`: 将堆内存中数组的地址值赋值给arr变量
方法(method, 函数function)
         定义格式: `修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) { 方法体; return 返回值;}`
                 修饰符: 目前记住public static
                 返回值类型: 限定返回值的数据类型
                 方法名: 方法的名字, 便于调用
                 参数类型: 限定参数的数据类型以及调用方法时传入的数据类型
                 参数名(形式参数=形参): 用于接收调用方法时传入的数据
                 方法体: 完成该方法的功能
                 return语句: 结束方法, 并把返回值传递给方法的调用者
         如何调用方法:
                 直接调用: `sum(1, 2);`
                 输出调用: `System.out.println(sum(1, 2));`
                 赋值调用 : `int n = sum(1, 2);`
         方法的重载
                 : Overload, 在同一个类中, 多个方法有相同的方法名, 方法参数列表不同
               
                         在同一个类中
                         方法名相同
                         方法的参数列表不同
                                参数的个数不同
                                参数的数据类型不同(包括顺序不同)
                重载与以下几点无关
                         与方法的返回值类型无关
                        和参数的参数名无关
                         和方法体无关
         方法的形参类型
                 方法形参是基本数据类型
                       形参的值的改变不会影响实际参数
                        形参是定义在调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 两者内存区域不同, 所以互不影响.
                  如果形参是修改自身保存的引用, 不会影响实际参数
        因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参改变其保存的引用指向, 并不影响实际参数的引用指向
                  如果形参是通过引用修改堆内存中保存的数据, 会影响实际参数获取的值
        因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参通过引用修改的是堆内存中的数据, 而实际参数也是指向该堆内存中的数据, 所以形参修改后, 实际参数获取的值也会改变
定义格式
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) {
        方法体;
        return 返回值;

数组的操作
        遍历
        美化格式打印
     断点调试  
查看程序的执行流程
调试程序
添加断点方法:在代码区域的左边双击即可
运行加断点的程序:代码区域--右键--Debug As--Java Application
关闭断点调试
按红色的停止按钮,再按右上角的"java"返回原来的界面
如何去掉断点
把加断点的操作执行一遍
在Debag视图中,找到Breakpoint,选中要删除的断点,单击双×即可
断点必须加在有效的语句上

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马