| 
 
| 本帖最后由 小石姐姐 于 2017-11-30 09:44 编辑 
 day01笔记:
 是
 注释:
 单行注释//
 多行注释/**/
 关键字:被Java语言赋予了特殊含义的单词
 特点:
 1.组成关键字的字母全是小写;
 2.常见的代码编辑器对关键字的代码有特殊的颜色标记.
 常量与变量
 分类:
 1.字符串 双引号扩住
 2.整数常量
 3.小数常量
 4.字符常量 单引号扩住
 5.布尔常量 分为true与false两种
 6.空常量
 
 1.对区域要有限定(用数据类型进行限定)变量:是内存中的一小块区域,在程序的执行过程中,其值可以在一定范围内发生改变
 
 2.必须对区域有个名称(即变量名)
 3.区域内必须有内容(初始化值)
 4.定义格式:数据类型 变量名 = 初始化值
 1.基本数据类型
 A.整数
 2.引用数据类型
 - 变量只在它所属的范围有效(它所在的大括号)
 - 变量未赋值不能使用
 - 一行上可以定义多个变量,但是不建议
 -
 
 ##* 强制转换类型格式:目标类型 变量名 = (目标类型) (被转换的变量或表达式)* 建议:数据做运算,结果应是什么类型,就有什么类型接受,不要随意转换类型,否则会损失精度!
 
 
 day02笔记:
 ----------
 - Day02
 -
 * eclipse的基本使用
 
 1. 解压文件既可直接使用
 1. 选择工作空间,一般放到eclipse文件夹内
 1. 软件面包分为三大板块:1.项目列表;2.编写代码板块;3.控制台
 2. 进入软件,首先新建项目 File-new-project-java project-项目名-Finish
 1. 项目建好后创建包,src中创建包,切换视图为java 右击src-new-package-包名-Finish
 2. 在包中内创建类
 3. 类中写代码,保存后自动编译
 
 ----------
 
 * 基本配置
 
 1. 修改字体:window-Preferences-Basic-Test Font-Edit-修改字体大小-确定-Apply-ok
 2. 单独打开控制台:window-show view-Console
 3. 窗口乱了怎么重置:window-perspective-REST
 4. 程序乱了怎么办:编程页面右键-Source-Format(shift+ctri+f)
 
 ----------
 
 * 运算符
 
 对常量和变量进行操作的符合称为运算符
 
 ----------
 
 
 * 表达式
 
 * 用运算符把常量或者变量连接起来的符合java语法的式子就可以称为表达式。
 * 不同运算符连接的式子体现的是不同类型的表达式。举例:定义两个Int类型的变量a,b,做加法即是(a+b)
 
 ----------
 
 * 常用运算符
 * 算数运算符
 * 赋值运算符
 * 关系运算符
 * 逻辑运算符
 * 三元运算符
 
 ----------
 
 * 常用算数运算符:*,+,—,/,%,++,--
 
 
 * 算数运算符取余和除法的区别 %:取余运算符。得到的是两个相除数据的余数。/:除法运算符。得到是两个相除数据的商。使用场景: %:判断两个数据是否整除。
 * 整数相除为整数,除非有浮点型参与运算
 
 
 ----------
 
 * 字符和字符串参与加法操作
 
 *字符参与运算:其对应的字符数值来操作
 * 'a' = 97 依次往后递增
 * 'A'= 65    依次往后递增
 * '0'= 48    依次往后递增到‘9’
 
 * ++,--的用法要点
 
 * `++`: 自增, 用于对变量加一
 * `--`: 自减, 用于对变量减一
 * 运算符放在变量前和变量后的区别:
 * 单独使用时(即只有`i++;`或`++i;`), 没有区别, 都是自增
 * 参与其他操作时:
 * `int a = i++`:
 * 先使用i本身的值作为i++表达式的值
 * 然后i再自增(i自增后不影响之前i++表达式的值)
 * 最后将等号右边的值赋值给左边a
 * `int a = ++i`:
 * i先自增
 * 然后将自增后的值作为++i表达式的值
 * 最后将等号右边的值赋值给左边
 * `--`同理
 
 ----------
 
 
 * 赋值运算
 
 ----------
 * 关系运算
 
 ----------
 
 * 逻辑运算
 
 * &:与,两边同为true则为true,否则false
 * |:或,有false则true
 * !:非,取反
 * ^ :异或,不同则为true
 * &&:短路与,具有短路效果,前面为false时则后面不执行
 * ||:短路或,具有短路效果,前面为true时后面不执行
 
 
 
 ----------
 * 三元运算符
 
 * 格式:(关系表达式)?表达式1:表达式2
 * 执行流程:1.先计算关系表达式的布尔值;2.如果true,则表达式1是结果,否则表达式2结果,具有强制转换功能
 
 
 * 键盘导入
 
 * A:导包(位置放到class定义的上面)
 import java.util.Scanner;
 * B:创建对象
 Scanner sc = new Scanner(System.in);
 * C:接收数据
 int x = sc.nextInt();
 
 
 在一个程序执行过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接影响。
 
 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
 C:/Users/ZRH/AppData/Local/YNote/data/qq8CC2F1FA720F8A5393B7A67614B8C1E2/26cf4a4b915f4cf1b547fb104d373f5f/clipboard.png
 
 选择结构
 
 也被称为分支结构选择结构有特定的语法格式,我们必须按照它的基本格式来编写代码。Java语言提供了两种选择结构语句
 
 语句体
 }
 判断表达式结果,true则执行语句体,false则不执行。
 C:/Users/ZRH/AppData/Local/YNote/data/qq8CC2F1FA720F8A5393B7A67614B8C1E2/402dc7ee856945a4abace7dc283a4254/clipboard.png
 2.  两种情况判断    if(关系表达式){
 语句体1
 }else{
 语句体2
 }
 C:/Users/ZRH/AppData/Local/YNote/data/qq8CC2F1FA720F8A5393B7A67614B8C1E2/01483664b86c4a99bde3b0a67804e343/clipboard.png
 3. 多种情况判断   if(关系表达式1) {
 语句体1;
 }else  if (关系表达式2) {
 语句体2;
 }
 …
 else {
 语句体n+1;
 }
 C:/Users/ZRH/AppData/Local/YNote/data/qq8CC2F1FA720F8A5393B7A67614B8C1E2/5779f0007f5c4407bf571434cecd6b45/clipboard.png
 
 case 值1;(值用来给表达式进行匹配的)
 语句题1
 break;(中断的意思)
 .........
 default:(所有值都不匹配)
 语句体n+1;
 break;
 
 执行流程:
 
 A首先计算表达式值;拿着计算出的值,依次和case后面的值进行比较,一旦有对应的就执行相应语句体,执行过程中遇到break就结束;如果都不匹配,则执行语句体n+1
 
 A:执行初始化语句
 B:执行判断条件语句,看其结果是true还是false
 如果是false,循环结束。
 如果是true,继续执行。
 C:执行循环体语句
 D:执行控制条件语句
 E:回到B继续
 C:/Users/ZRH/AppData/Local/YNote/data/qq8CC2F1FA720F8A5393B7A67614B8C1E2/33e36a306ede4a95a5859a5ab96c2bbc/clipboard.png
 
 循环体语句; for循环格式:
 
 for(初始化语句;判断条件语句;控制条件语句) {
 
 }
 while(判断条件语句) {
 循环体语句;
 }
 扩展格式:
 初始化语句;
 while(判断条件语句) {
 循环体语句;
 控制条件语句;
 }
 do {
 循环体语句;
 }while((判断条件语句);
 扩展格式
 初始化语句;
 do {
 循环体语句;
 控制条件语句;
 } while((判断条件语句);
 
 
 for   while  do while三种循环的区别:
 
 for与while循环如果条件不满足,则一次都不执行循环体do while至少执行一次
 
 
 for(;关系表达式;控制语句){for 与 while的区别
 
 for循环的初始化语句的作用域: for的大括号内但是for循环中的初始化语句可以定义到括号外面来,这样就可以使用 ;格式:    初始化语句
 
 循环体
 }
 
 适用场景: switch语句, 循环作用: 结束switch语句或所在循环
 
 适用场景: 循环作用: 结束本次循环, 继续下次循环switch语句的case穿透
 
 如果switch的case语句中没有break, 则会继续执行下一个case的代码, 这称为case穿透case穿透有时会导致代码出现问题, 但有时我们也利用case穿透简化代码
 
 
 
 当if语句不写大括号时, 只有if语句后的第一条语句算作if语句的语句体, 其余不算while语句, for语句不写大括号的格式当语句不写大括号时, 只有语句后的第一条语句算作语句的语句体, 其余不算
 
 
 
 循环体for循环哪些语句可以省略:
 
 如果变量在for循环外已经声明, 则初始化语句可以省略    for(;判断条件语句;控制条件语句){
 
 }
 
 // 将for循环修改为死循环for (;;) {    // 死循环}for (;;);  // 连循环体都没有的死循环
 
 
 判断条件语句可以省略, 相当于不停止控制条件语句可以省略, 相当于不改变for循环中的变量
 
 
 
 Day05: 方法
 
 提高代码复用性和可维护性
 定义格式:
 修饰符: 目前记住public static
 返回值类型: 用于限定返回值的数据类型
 方法名: 方法的名字, 便于我们调用
 参数类型: 用于限定调用方法时传入数据的类型
 参数名: 用于接收调用方法时传入数据的变量,用于告诉方法的调用者, 调用该方法时需要传入何种数据
 方法体: 完成我们需要的功能的代码
 return语句: 结束方法, 并把返回值传递给调用者
 单独调用: sum(10, 20);  没有返回值时单独调用
 输出调用: System.out.println(sum(10, 20)); 有返回值时用
 赋值调用: int result = sum(10, 20);有返回值时用
 
 
 
 在同一个类中方法名相同
 
 
 方法重载:
 
 概念: Overload, 在同一个类中, 多个方法有相同的方法名, 方法参数列表不同特点:
 
 方法的参数列表不同
 参数的个数不同
 参数的数据类型不同(包括顺序不同)
 与方法的返回值类型无关
 和参数的参数名无关
 和方法体无关
 
 
 结论: 形参的值的改变不会影响实际参数
 为什么? 形参是定义在调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 两者内存区域不同, 所以互不影响
 结论:
 
 原因: 因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参改变其保存的引用指向, 并不影响实际参数的引用指向
 
 
 
 
 如果形参是通过引用修改堆内存中保存的数据, 会影响实际参数获取的值
 
 原因: 因为形参是调用方法中的一个单独变量, 实际参数是定义在main方法中的另一个单独变量, 形参通过引用修改的是堆内存中的数据, 而实际参数也是指向该堆内存中的数据, 所以形参修改后, 实际参数获取的值也会改变
 
 
 
 Day06: Eclipse断点调试 基础语法练习
 
 
 可以在程序运行中查看程序的执行流程调试程序, 如查看变量的值
 
 单个断点: 双击多个断点: 在debug视图中的breakpoints窗口中点击Remove all breakpoints按钮
 
 代码区域: 看程序的执行流程Debug区域: 看程序的执行流程Variables: 看变量的值Console: 看控制台输出breakpoints: 查看所有断点
 
 F5 进入方法F6 执行下一行代码F7 跳出方法F8 调到下一个断点
 
 
 
 
 遍历数组, 依次比较元素, 如果相等, 就把该处索引返回
 
 
 
 
 
 
 方法一:
 
 public class Test {    public static void main(String[] args) {        // 定义一个数组        int[] arr = {1,2,3,4,5};        // 测试方法        System.out.println(getIndex(arr, 3));  // 2, 找到了        System.out.println(getIndex(arr, 10)); // -1, 找不到    }    // 查找指定元素    public static int getIndex(int[] arr, int value) {        // 遍历数组        for (int i = 0; i < arr.length; i++) {            // 获取数组中的每个元素值, 与传入的值进行比较是否相等            if (arr == value) {                // 如果相等, 则说明找到了, 返回当前索引                return i;            }        }        // 如果能执行到这里, 说明没有找到, 返回负数        return -1;    }
 
 
 
 // 定义一个变量接收索引public class Test {    public static void main(String[] args) {        // 定义一个数组        int[] arr = {1,2,3,4,5};        // 测试方法        System.out.println(getIndex(arr, 3));  // 2, 找到了        System.out.println(getIndex(arr, 10)); // -1, 找不到    }    // 查找指定元素    public static int getIndex(int[] arr, int value) {
 
 int index = -1;        // 遍历数组        for (int i = 0; i < arr.length; i++) {            // 获取数组中的每个元素值, 与传入的值进行比较是否相等            if (arr == value) {                // 如果相等, 则说明找到了, 将当前索引赋值给index              index = i;
 // 结束循环
 break;            }        }        // 如果能执行到这里, 说明没有找到, 返回index        return  index;    }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 |