# Tjisejava0316 **Repository Path**: wang-junjie123/tjisejava ## Basic Information - **Project Name**: Tjisejava0316 - **Description**: java高级程序设计循环,选择 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-15 - **Last Updated**: 2021-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tjise2_java20210316 #### 介绍 java基础:数据类型、程序构成、函数 #### 软件架构 软件架构说明 #### 课堂笔记 1. 运算符 ``` 1.1 问号表达式 是唯一的一个三元运算符;需要三个操作数; 判定表达式?结果表达式1:结果表达式2; 如果判定表达式为true,则结果表达式1作为整个表达式的结果;反之,则结果表达式2作为整个问号表达式的结果; 问号表达式可以嵌套使用,等价于if-else; ``` 2. 程序的结构 ``` 2.1 程序结构分类 顺序结构:按照编译器读取的先后顺序一次执行; 分支结构:根据选择条件选择不同的分支进行执行; 循环结构:根据循环条件重复的执行某一块程序块; 分支结构: 分支根据每次选择执行的分支的数目分为:单选、多选; if分支,单选分支;分支结构至多执行一个分支; if分支: 单分支; if 双分支; if-else 多分支; if-else if-else if -else switch分支,多选分支; switch配合break也可以实现单选分支; 多选分支: switch -case 执行规则:从匹配成功的case语句开始执行,直到遇到break或者是switch-case执行结束为止; switch支持的数据类型: byte short char int String 循环结构: 多次重复进行执行某一块代码块;通过循环条件判断循环的次数; for循环: for(初始化部分;循环条件判定;循环因子改变){ 循环体; } 解析: (1)执行for循环的初始化部分; (2)执行循环条件判定部分,如果判定结果为true,则执行循环体部分;否则,结束循环; (3)循环体执行完毕之后,执行循环因子改变部分;跳转到(2) 注意: 初始化部分也可以放在for循环之前进行; 改变循环因子可以放在循环体或者循环条件判定部分; for()中的两个分号不能省略; for(;;) 这种形式没有语法错误,可正常执行,只不过是死循环; while循环、do-while循环: while(循环条件判定){ 循环体; } 解析: (1)执行循环条件判定部分,如果判定结果为true,则执行循环体部分;否则,结束循环; (2)循环体执行完毕之后,跳转到(1) 注意: 初始化部分while循环放在外部进行实现; 改变循环因子部分while循环放在了循环体或者是循环条件判定部分; while循环和do-while循环的区别: do-while无论条件是否成立至少会执行一次循环体;【至少1次】 while循环的循环体可能是0次、1次、多次; 2.2 break和continue关键字 break关键字: 结束循环体,直接跳到循环体之后的代码继续顺序执行; continue关键字: 结束本次循环,跳过continue关键字周后循环体部分,直接开始下一次新的循环; break结束的是循环体;continue结束的是一次循环,没有结束循环体; ``` 3. 方法和函数 ```aidl 3.1 方法和函数 函数是通过函数名可以重复调换用代码语句块;函数名是代码块在内存中的访问地址; 函数的定义: 访问控制修饰符 其他修饰符 返回值类型 函数名(参数类型 参数1,参数类型 参数2 ...){ 函数体[return]; } 解析: 访问控制修饰符,控制函数的访问范围的,与OOP的封装相关; public protected 默认的 private 其他修饰符,可有可无,主要有:final、static、synchronized、default(jdk8在接口中的应用)。。。 返回值类型所有的java的数据类型都可以;如果没有返回值需要使用 void 标明; 函数名遵循命名规范,lowercamalcase 首字母小写,后面单词首字母大写;动名词形式; 参数类表是形参;【形参和实参概念】 函数体是函数业务逻辑的主体部分; return语句在函数中的作用: 如果函数的返回值类型不是void,则强制要求函数体的每个路径必须使用 return 返回值;的方式进行返回;且要求返回值和函数声明的类型一致或兼容; 如果函数的返回值类型是void类型,则表示函数体不需要强制使用 return 返回值; 但是可以 只是用 return; 的形式直接返回上层方法调用者; 3.2 形参和实参的概念 形参:函数定义时给定的参数叫做形参; 实参:调用调用时传递给函数的参数叫做实参; 函数调用时会发生传值,实参的值会传递给形参; java实参和形参传值有两种情况: 按值传参: 实参的值传递形参; 形参值发生了改变,不会影响实参的值; 按地址(引用)传参: 实参的地址传递给形参; 形参值发生了变化,会影响实参的值,也就是形参变化实参也会跟着变化; 3.3 函数的重载 当一个类中有多个同名的函数时,就构成了函数的重载; 函数的重载条件:要求函数名相同,参数列表不同; 参数个数不同;参数类型不同;参数顺序不同; 注意: 返回值类型不同不构成重载;修饰符不同不构成重载; 重载的方法在调用时,由实参列表决定调用那个重载方法;也就是,调用的实参列表和形参列表要求具有对应关系;【参数类型排列关系】 3.4 变长参数 函数在定义的时候,可以在定的惨列表中 将 最后䘝参数设置变长类型的参数【个数不固定的参数,0个,1个,多个都可以】 变长参数在一个函数定义中至多只能有一个,且只能放在参数列表的最后; 变长参数本质上是一个数组; 变长参数也可以构成重载,如果非变长参数和变长参数都可以满足方法调用,则优先调用非变长参数的方法; 变长参数在使用上和数组一样; 变长参数和数组类型的区别:数组类型必须有参数传递,不能是0个;变长参数可以是0个; 变长参数传递实参采用 逗号 分割形式,可以写 0 个 1个 多个; 变长参数的实参可以是数组的形式进行传递;也可以是 逗号 分割形式;比较灵活; 反之数组类型形参,不能使用变长参数的形式进行传参; 3.5 递归函数 一个函数可以通过传递实参的方式调用另外一个函数,这就是函数调用; 一个函数可以不可以调用自己? 可以,这就是递归; 构成递归的要求: (1)要有结束条件;否则形成死循环; (2)自己调用自己; 递归和非递归区别: 递归内存开销比较大,耗费资源,效率慢;但是,编程简单; 非递归内存开销小,效率高;但是,编程复杂; 兔子繁殖问题: 假设有一对小兔子,这对小兔子从第二个月开始每个月生了一对小兔子;生的小兔子第二个月开始也每个月都生了一对小兔子; 问,第N个月一共有多少对兔子; 斐波那契数列:给定前两个数,从第三个数开始,后面的数是这个数之前的两个数之和; 求解第N个数的值?【求解第N个月兔子的对数】 可以使用递归求解。 ``` 4.面向对象 ```aidl 4.1 面向对象的理解 面向对象映射的是人类社会的思维方式; 面向对象的思维方式: 做什么事情【解决什么问题】?首先考虑的是 找谁去做? 这个 谁 就是对象; 面向对象编程的方法:一开始就创建一个类;然后通过抽象填充 属性 行为 ,这样就定义完了类,然后类和类相互调用就是面向对象的编程; 面向过程的思维方式: 做什么事情【解决什么问题】?首先考虑的是 如何去做? 这个 如何 就是过程; 4.2 面向对象的核心内容 面向对象是围绕8个词展开: 面向对象的核心:抽象、封装、继承、多态; 【面试、考试:面向对象的三大核心: 封装、继承、多态】 面向对象的补充:static、final、Abstract、interface 4.3 抽象 面向对象编程的第一步就是抽象;抽象非常重要,以至于抽象内容不准确,会造成后续的面向对象编程的各种问题; 抽象:从同类个体中将群体的共性进行抽象; 抽象的时候要从业务角度进行; 面向对象的抽象是从业务角度进行,将共性抽取出来; 共性主要从两个维度去描述: 属性; 行为 抽象的操作结果就是获取被抽象这一类个体的共同的 属性 和共同的 行为; 抽象的结果内容会封装到类中; 4.4 类和封装 类:是对对象的规范定义; 也就是在面向对象的思想中,使用类来规范定义对象; 有了类之后,可以使用new操作符创建这个类的实例对象; 封装:将抽象的结果封装到类中; 如何进行封装? 将抽象的属性 以 成员变量的形式进行封装; 将抽象的行为 以 成员方法的形式进行封装; 面向对象的封装还会使用 访问控制符 来限定被封装的属性和行为的访问范围; 这是封装的另外一个层面内容; 成员变量: 定义在类范围内的变量叫做成员变量; 成员方法: 定义在类范围的方法就是成员方法; ``` #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)