2021-02-05

前言

java所学章节知识点概括

一 初始java

检查遇到的问题
电脑混乱解决办法
备份好数据重装系统
整理自己的电脑
安装大量同类软件解决方法:
安装了两三个压缩软件
从程序和功能中卸载不需要的软件
电脑上安装有大量的游戏软件
适度娱乐
压缩软件的使用
压缩软件的诞生:
因为零散的文件 散布在计算机中无论传输和保存都不太方便,速度还非常慢。保存时还会占用大量的存储空间
压缩软件是使用一定的压缩算法来实现压缩
压缩算法将这些内容转换为数值型代号 压缩软件还能承担压缩的任务在需要的使用压缩包中
Java概述
1.1程序的概述
生活中的程序:
事情进行的步骤次序
列如工作程序
生活中的大白话:流程 手续 套路…
计算机中的程序
计算机在执行任务时对所处理的对象规则的一种描述是通过程序设计语言来实现的
列如:qq 浏览器…
软件是一个更大的概念 包含程序的概念
生活中的程序和计算机中的程序关联?
有关联
生活中需要本人亲自去办理某些手续或流程
现在通过第三方我们通过操作某些计算机程序来完成需求
开发程序绝对不能脱离现实 遇到问题多思考生活中的程序思路
1.2 编程语言的概述
指令:完成某件事的每一个步骤
生活中指令的下达需要交给专门的人做 计算机中指令下达交给计算机做
计算机是识别二进制的(0,1组成 生活中我们主要使用十进制 只包含0到9)
在程序发展中出现了汇编语言(利用二进制写了一个程序,专门做简单的翻译工作)
随后c语言出现 整个程序的开发变成了高级语言 实际上高级语言的使用,需要一个更高级的翻译官
主流的编程语言:
C语言
c++
c#
Python
java
javascript
sql
R

一般程序员都需要至少掌握5-6种语言 语言的思维相通
大多数以一到两门为主 其余为辅
1.3Java语言的概述
1990年诞生 java前身oak
詹姆斯·高斯林博士领导开发的一种语言
博士在sun公司工作 该公司认定机顶盒市场非常有价值打算进军该领域
最初博士打算用现有的语言来开发 但是开发过程中发现c和c++在语法和使用方面令人作呕,
于是为了更好地工作,开发了新语言
最终该计划还是终止,oak被雪藏
1995年java诞生
网景公司在探寻一种能够在浏览器中进行编程开发的语言
sun公司发现自己就有一个语法 性能 使用都不错的语言
oak>改名为java
一下火爆全球
1996年 推出开发包
1998年 java分化了三个方向
j2se : java标准版
用于桌面程序开发领域
windows中使用的程序一般都是c++开发的 尤其系统支持
微软2000年开发了一个c#语言
j2EE java企业版
用于服务器开发领域
j2ME 新增了好多好用的特性
J2SE-JavaSE
J2EE-javaEE
J2ME-javaME
2009年 Oracle收购sun公司 java也一并归属为Oracle公司
2013年中期 java8出现 影响深远
2019年Oracle更改了java使用协议 影响到了一些后续的更新和使用
2020现在即将发布java16
掌握java开发环境的搭建
2.1 jdk和jre的描述
jdk 一种sdk(软件开发工具包)JDK 的全称是 Java Development Kit,即 Java 开发工具包,
是 Sun 公司提供的一套用于开发 Java 应用程序的开发包,它提供了编译、运行 Java 程序所需的各种工具和资源,
包括 Java 编译器、Java 运行时环境(JRE),以及常用的 Java类库 等。

jre java Runtime Environment(java运行时的环境)
2.2jdk的选择
选择厂家
Oracle jdk
open jdk
亚马逊
IBM
Redhat
华为 毕昇jdk
阿里巴巴 Drgonwell jdk
腾讯 Kona jdk
选择版本
jdk 6
jdk 7
jdk 8
jdk11

2.3下载和安装
Oracle jdk8
如果电脑上安装过 需要先卸载 以免环境出现毛病
配置java_home 非常重要
开发第一个程序
使用记事本开发的步骤
基础语法的认识

二 .开发第一个java程序

1.1 什么是 DOS系统?
磁盘操作系统 较为传统的操作系统 主要包括目录操作命令 磁盘操作命令 文件操作类命令或其他
操作命令 没有携带可视化界面 无法使用鼠标 在DOS系统中需要使用DOS命令来执行任务/工作
现今windows操作系统 内置了一个简易的DOS系统 为了方便开发者来使用
windows +R 打开运行窗口
输入 cmd 回车 即可进入DOS系统界面
进入DOS系统 最好采用管理员身份进入 以防止一些命令无法使用 或者权限不足
win10 一般进入都是非管理员 windows键打开开始菜单 输入cmd 然后右击cmd程序 以管理员身份运行即可

1.2 DOS 系统常见命令
进入到DOS系统后 界面上显示有
版权声明
一个光标在闪烁
等待输入命令
切换目录
输入完命令后 回车即可 命令都是英文
切换磁盘
盘符名:
在同一个磁盘更改切换目录
cd (空格)要切换的目录地址
列如处于c盘的目录下 想进入windows目录下的某个文件夹 cd 文件夹名称(相对路径)
cd … 返回上一级目录
… 是每一个目录下都隐藏的目录 他代表上一级目录
cd\ (\代表一个磁盘的根目录 直接进入某个磁盘后就处于它的根目录)
cls (清屏命令)清理命令行的当前历史记录

利用tab 键 可以有效解决输错问题 它能够自动补全

实现原理 依赖在某个目录下按名进行模糊查询实现的
1.2.2 查看当前目录下的所有内容
dir(directory,目录)

·运行程序
在cmd中想运行程序

  1. 直接输入程序的名字
  2. 切换到改程序的所在位置 然后在当前的目录下输入程序名字

○也可以先通过windows系统切换到该程序位置 然后在地址栏输入cmd回车
3. 直接输入该程序的所在路径 例如:

  1. 配置JAVA_HOME

2.1 环境变量是什么?
环境变量(enviroment vaiables)一般是指操作系统运行环境的一些参数
一般环境变量中的变量信息是操作系统中各个程序可以公用的

2.2 path环境变量
path环境变量的作用
当我们在windows或DOS中运行一个程序 而没有告诉他这个程序所在的完整路径时
除了在当前目录下寻找此程序外 还会到path环境变量中寻找

2.3 配置JAVA_HOME
在系统变量列表中 我们可以找到path环境变量 双击可以进入编辑状态
在path环境变量的目录列表 可以新建一个程序地址
仅仅如此做 后期我们安装了一些需要java的程序是 他们在找java安装位置时是找不到的
可能导致无法运行
我们可以在环境变量中配置一个JAVA_HOME 然后存储java的安装地址 这些程序就可以找到java的位置
当未来java安装目录更换了之后 我不需要更改path内的地址 有更改JAVA_HOME 现在只需要更改JAVA_HOME值即可
3. 开发第一个java程序
通过java语言的语法下达一系列的指令
3.1 使用记事本开发步骤

  1. 创建一个文本文档 命名为HelloWorld
  2. 使用sublime Text或者notepa ++ 打开该文档
  3. 编写java语言的语法指令
    public class HelloWorld{
    public static void main(String[] args){
    System.out.println(“Hello world”);
    }

}
4. 更改文本文档扩展名为.java
5.运行该程序
1 编译(将代码编译为计算机能够识别的语言)
java.exe
javac HelloWorld.java
编译后 会产生一个helloworld.class文件
2 运行
java.exe
java helloworld
运行时不能写.class后缀
3.2 基础结构语法

3.3 虚拟机和跨平台原理

4 反编译

三. 使用eclipse编写第一个程序

首字母大写 如果有多个单词 每个单词首字母都要大写

1.程序开发步骤
1.1 创建一个文本文档 命名为HelloWorld
1.2 打开文本文档 在其中编写基础语法结构
1.3 在语法结构中编写指令集
1.4 将文本文档的扩展名转换为.java(java的源代码文件的扩展名是java)
1.5 利用javac 将源代码文件编译为字节码(byte code)文件.class文件
1.6利用java将字节码文件运行起来
总结步骤
1 编写源代码
2 编译源代码
3 运行程序

2.基本结构语法
public class HelloWorld{}//类声明
public class static(静态的) void(空) main(主要的)(String[] args){}//功能指令
System(系统).out(输出).println("");//输出指令利用系统输出流实现内容打印及换行
转义符号 \n 换行
\t 一个制表位 转义符号必须放在字符串中
2.2注释
// 单行注释
/* 多行注释*/
/** java Doc 文档注释*/
3.跨平台原理
除了优秀的性能和简洁的语法外 还有一个主打优势 跨平台 写一次可以到处运行
编写程序需要经过编写源代码 编译源程序 运行程序 三大阶段 其中编译好的
源程序是对应某个平台 的专属版本 所以不同平台需要准备很多分
但是java 编写程序 编译之后并非直接运行在某个平台上 而是运行在JVM(java虚拟机)上
同样也是由于jvm的原因 跨平台 垃圾回收等功能就可以使用了
所以只要准备好适配于不同平台的jvm就可以保证java到处运行了
java如何实现的跨平台
java不同于其他语言直接将源代码编译为对应平台的机器码(二进制文件)他是将源代码编译为字节码文件
然后将字节码文件运行在jvm上 由jvm在执行过程中 转换为对应平台的机器码
所以只要在对应平台上安装好java环境 java程序就可以运行了 这是java实现跨平台的原理
4.反编译
编译 将源文件 转换为字节码文件的过程称为编译
反编译 将字节码文件转换为源文件的过程

5.eclipse使用
5.1 IDE概述
IDE 集成开发环境 集成了代码编写功能 分析功能 编译功能 调试功能等
一体化的开发软件服务套
在java开发领域有什么常用的IDE
Eclipse: Eclipse基金会的开源产品 在java领域里可以算得上应用最广的产品
MyEclipse:它是基于Eclipse演化出的一个商业产品
Intellij IDEA:他是jebrains公司开发的IDE中的一种 非常适合现代化开发 近两年eclipse
市场被它蚕食的很快
VS Code:微软开发的一个编辑器,安装相应的插件可以实现IDE的效果

workspace 工作空间 是用来存放Eclipse开发的项目
每个空间相互独立 配置等方面不受影响
·project项目/工程
在eclipse的工作空间中 编写java程序是以项目/工程为组织单元的
使用eclipse开发第一个java程序步骤

  1. 新建java工程
    file菜单->new->java project
    在导航区域空白处右键-new-java project
    jre system library jre的系统库 java中定义了很多api 直接可以使用
    src 编写源代码
    在src下 新建一个java文件(类class文件)

四.程序从安装到运行的原理

1.1 计算机核心硬件介绍
cpu
中央处理器 计算机的核心
用来处理计算数据
RAM
用来临时存储数据
程序运行的时候 内存中进行数据处理
速度快 空间小 价格高
ROM
用来持久存储数据
程序安装完成后 运行结束后应该将数据持久化到ROM
速度慢 空间大 价格低

1.2 程序安装的原理

1.3程序运行的原理
cpu 将ROM程序文件复制到RAM中 程序会在RAM中占据一块属于它的内存空间
有一些数据为了能够子程序内存中方便使用 会使他们定义为变量
变量 就是某些数据在对应程序内存中的一块空间表示

2 变量
能表示可变状态 并具有存储空间的抽象概念

变量的数据类型
1 按照数值和非数值划分(八种基本数据类型)
数值
整数:byte short int long (10 5 3 4 …)
浮点数: float double (10.5 3.14 …)
非数值
布尔型 boolean
true 真 false 假
字符型: char 只要被单引号包裹 只能出现一个内容
‘a’‘你’‘1’‘男’

一种特殊的类型 String字符串类型 (被双引号包裹 里面可以出现任何值)

它是引用数据类型的一种 不是基本数据类型
java中将int和double 分别作为整数和小数的默认类型 意味着在java中写了一个
10 java会将它存储为int类型

2.1 概述

2.2变量组成
变量的数据类型

变量名是未来使用变量的关键 它也有一定的命名规范

1 变量名可以由字母 数字 下划线 美元符号但是数字不能开头
2 变量名 应该见名知意
3 变量名应该遵循驼峰命名法
小驼峰:首字母小写 如果有多个单词 后面的每个单词首字母大写
正例:存储用户密码 userPassword
反例: userpassword
大驼峰:(帕斯卡命名法):每个单词首字母大写
它用于类名 HelloWorld
4 变量名可以遵循下划线连接法(蛇形命名法)
单词都小写 多个单词之间使用下划线连接
正例:user_password
5 变量名不能使用关键字 保留字
关键字: 他们是java中赋予了特殊含义的单词(例如public class)
保留字:他们是jaba还没用 但是未来很有可能用(例如 goto var)
建议:命名时不要采用单个词汇 或使用敏感词汇
6 不要将拼音和英文混和
反例: 学生姓名 xueshengName

2.3变量的使用
常见的使用方式两种
1: 先声明变量 在赋值
//数据类型 变量名
String name:
//赋值
name = “小明”
2 声明变量的同时 赋值
//数据类型 变量名 = 变量值;
String name = “小红”
在定义完变量之后 可以用于输出 计算等待行为

拼接 (+)为什么使用“+”
输出一个字符串内容 但是想输出的内容不仅仅是字符串 还需要加一个不确定类型的变量
需要用到“+”
拼接完的结果会变成一个整体字符串
3常量
在java中其值不能被改变的变量称为常量 常量被final修饰 被final修饰则不能被二次修改

常量的命名规范 所有单词的字母都大写如果由多个单词用下划线连接

4 程序交互
Scanner 使用
Scanner 是java中提供的一个扫描器 他可以帮助我们扫描控制台输出的内容 并将其转化为
想要的类型值
1在想使用的Scanner类中 添加一行导入代码
import java .util.Scanner;
2 创建对象
Scanner (名字)= new Scanner(System.in);
3使用它的API(功能)

五.常用的运算符

1.类型转换
在java中存在自动类型转换和强制类型转换
·自动类型转换指的是取值范围小的类型可以自动转换为取值大的类型
duble num = 10;
·强制类型转换:取值范围大的类型无法直接转换为取值范围小的类型
可以帮助我们实现取整
int num = (int)10.5
类型转换也不是万能的 java前期转换的就是 byte short int long float double char

字符的秘密
它们的转换遵循了相应的码表 例如:ASCII码表 a 97 A65…
2.赋值运算符
=在各种编程语言中不再表示相等 而是表示赋值
只有极个别的语言 =号又表示赋值 又表示相等

3.算术运算符

  • 加法
  • 减法
  • 乘法
    / 除法
    % 取余数
    ++ 自增
    – 自减
    自增和自减
    ++ 自增1
    – 自减1
    当++和–在单独使用时 效果上没有任何区别
    当++和-- 在被使用或参与计算时 效果有不同
    前++ 在使用是先对变量+1 然后在使用变量
    后++ 在使用时会先使用变量 然后在对变量+1

字符是可以和数值转换的
char alpha1 = ‘a’;
alpha1 ++; // 理解为 alpha1=alpha1 + 1
System.out.println(alpha1); // b

char alpha2 = 'b';
// 在计算时 结果的类型是取值范围大的类型
System.out.println(alpha2 + 1); // 99

四则运算
在Java中进行数学计算时 有时候会出现与传统观念不符的情况
例如:11/2应该等于5.5 但结果为5
是由于11和2 都是整数 那么在计算的时候对于结果的类型也是采用整数(在计算的时候
计算结果的类型是由计算的值中取值范围最大的类型)

4 复合赋值运算符
· +=
· -=
· *=
· /=
· %=
以后可以利用+= -= 做累加运算
5 关系运算符
比较运算符
可以用来做判断 比较运算符计算结果是boolean 布尔类型值
true(真) false(假)
· >
· <
· >=
· <=
· == 相等
· != 不相等
· = 表示赋值 == 表示相等

6.逻辑运算符
·&& 短路与
·|| 短路或
·!非 取反

短路
短路与 短路或 代表的是如果前面的条件能够得到最终结果 那么后面的条件就不再进行
还有一个&和| 也可以表示逻辑关系 但一般不用 因为他们无论是否能从前面的条件得到最终结果
都要对所有条件进行计算

  1. 三元运算符(三目运算符)
    条件? 表达式1:表达式2

六.选择结构

流程控制语句
任何一个语言编写出来的程序都包含这三种控制语句

  1. 顺序控制语句
    自上而下

  2. 选择控制语句
    根据条件表达式决定一部分代码是否可以执行
    条件表达式就是利用关系运算符 和逻辑运算符 来判断的过程
    结果永远为 布尔型 true false

  3. 循环控制语句
    可以帮助我们解决重复性的工作

三种流程控制语句要结合使用 每种都有它能解决的问题
4. 流程图的绘制
UML
绘制流程图时,为了提高流程图的逻辑性,应遵循从左到右、从上到下的顺序排列
,而且可以在每个元素上用阿拉伯数字进行标注。
从开始符开始,以结束符结束。开始符号只能出现一次
,而结束符号可出现多次。若流程足够清晰,可省略开始、结束符号。
当各项步骤有选择或决策结果时,需要认真检查,避免出现漏洞,
导致流程无法形成闭环。
处理符号应为单一入口、单一出口。
连接线不要交叉。
如果两个同一路径的下的指示箭头应只有一个。
相同流程图符号大小需要保持一致

处理为并行关系,可以放在同一高度。
必要时应采用标注,以此来清晰地说明流程。
流程图中,如果有参考其他已经定义的流程,不需重复绘制,直接用已定义流程符号即可

if系列选择结构
基础if

互斥if
if(){
}else{
}

多重if
多分支判断 按照自上而下的执行判断 只要有一个满足 就不再执行后面的条件判断
if(条件1){
}else if (条件2){
}…
else
上方条件都不满足时执行的代码段

多重if在编写条件判断时 注意不要胡乱放置条件 越容易满足或者范围越大的条件 应该尽可能放下面
在做范围条件判断时 多重if拥有非常好的优势

嵌套if
他不是什么技术 就是前面几个if的延伸而已

equals.(字符串)可以用来判断两个字符串内容是否相同

由于嵌套if回导致结构愈加混乱 所以使用时注意层级不要嵌套太多 否则内容
易出现你写的代码 你看不懂这类问题

switch选择结构
多重if 在做范围型的多条件判断比较有优势 而作等值判断优势不大

switch(表达式){
case (情景)常量值:
break(打断);
case 常量值:
break;

default(默认值):
break;
}
注意事项
1 switch中表达式只能使用int String byte short char 枚举类型
2.每一个case 都要写一个break 否则会出现case的穿透性 直到下一个
break或结束为止
3.建议编写一个默认情况在最后 以防止一些判断未执行的情况
和if的区别
·switch 只能用于等值判断情况 而多重if还可以用于范围型判断
·switch 在jdk发展中一直在升级足以证明java官方对它的重视
·swicth 在性能方面 相较于多重if更有优势
·switch 在做等值判断时 尤其是jdk1.7之后 字符串判断比if更加方便
随机数获取
math.random()可以获取到{0.0,1.0}之间的随机小数
公式(int)(Math.random()*(最大值-最小值))+最小值

七.一维数组

变量是一种单个存储方式 无法满足日益增多的数据需求

需要寻找一种可以同时存储多个数据的存储方式

数组可以解决此类问题

1.什么是数组

数组 顾名思义 数据的组合 他是在内存空间中开辟一连串的

存储空间 可以存储多个相同数据类型

而且数组相比于变量来讲拥有更多的“可玩性”

2.数组的组成

类比变量来记忆

变量组成:

1 数据类型

2.变量名

3 变量值

数组组成:

1.数组的数据类型:数组存储的是一组相同的数据类型,需要做好

指定

2.数组名:使用数组时 也需要通过名字来使用

3.元素: 数组中存储的每一个值 称为元素

4.容量:长度 一个数组可以存储多少个元素(一经定义,不可变

5.下标:索引;数组中每一个存储空间的“序号”从0开始计算

每一个下标空间都有默认值 根据数据类型不同 默认值为:

byte short int long :0

float double :0.0

boolean: false

char : 一个空格(\u0000)

数组是一组具有相同数据类型数据的定长空间

3.数字定义

数组的定义:

// 先声明数组
数据类型[] 数组名 = new 数据类型 [容量]// 数组赋值
    数组名[下标] = 元素值;
// 数组使用
    数组名 [下标]

数组定义2:

// 声明时赋值
数据类型[] 数组名 = {元素1, 元素2, 元素3...}
// 声明时赋值
// 后期有时候只能用这种方式
数据类型 [] 数组名 = new 数据类型[] {元素1, 元素2, 元素3..}

数组的定义1,结合循环优化:(动态赋值)

// 先声明数组
数据类型[] 数组名 = new 数据类型 [容量]// 使用循环动态赋值
    for (int i = 0; i < 数组容量; i++){
        数组名[i] = 输入值;
    }

八.循环结构

1.什么是循环

1.1生活

我们上班上学 甚至是一些回复都是循环过程

循环:反复的连续做某件事

周而复始,有规律 重复的内容

1.2 程序

2 while循环

while: 当 在… 期间 在…时候 直到…

很多语言 见到while 想到的就是循环

while(循环条件){
    循环体/循环操作
}
---
if (条件表达式) {
    条件成立时执行的内容
}        

套入while语法

  1. 初始化循环变量
  2. 循环条件
  3. 循环操作
  4. 循环出口(更新循环变量)

3 do-while循环

do {
    循环体/循环操作
} while(循环条件)

do-while 循环至少会执行一次循环操作

1初始化循环变量

2循环操作

3循环出口

4循环条件

4 for循环

for循环非常简洁,它的结构while和do-while不同 他是直接将循环4

要素都安排好了位置可以避免遗失出口等问题

for循环只能用于固定次数的循环场景

在后期用的特别多 基于它还有一个变种:增强for循环(foreach)

for (int i = 1; i <= 50; i ++){
    
}

5三者区别

执行次序的区别:

· while循环先判断在执行

· do-while循环先执行后判断

· for 循环先判断在执行

应用场景:

while 和do-while 适合于各种场景

do-while 往往用于一些先执行操作的情况 模拟生活案例一般都用他

for 循环 往往用于固定次数判断的情况

九.多维数组

1.why?

如果要求计算一个班的五名同学成绩 可以使用一维数组+普通循环

而如果计算三个班的各五名同学的成绩和 一维数组和普通循环实现起来不够好

所以要学习更高级概念 多维数组

2.概念

多维数组 可以理解为嵌套数组

二维数组 是以一维数组作为数组元素的数组 即数组的组合

多维数组常见表现形式 二维数组 三维数组 但一般以二维数组居多

多维数组在java中 语法是存在的 但内存角度来看只有一维数组

3.定义

// 数据类型[][] 数组名 = new 数据类型[外维数组容量][内维数组容量] ;
// 存储三个班各五名同学的成绩
// 外维数组 存储三个班的成绩
// 内维数组 每个班的五名同学成绩
// 外维数组数据类型 double[]
// 内维数组数据类型 double

数组也是一种数据类型 但不是普通的数据类型(int double) 数组存储的是一组

相同数据类型的数据 int[] double[]

方式二

double[] scores = {90, 80, 70, 60, 50};
// 把{}看做一个一维数组
double[][] scores = {{90, 80},{80, 80},{70, 70}};
double[][] scores = new double[][]{{}, {}, {}};

方式三

二维数组定义时只需要定义好一维数组即可

 double[][] scores = new double[3][];
 scores[0] = new double[3];

动态赋值

4.使用

5.Arrays工具类

API: 应用程序接口

是java提供的数组操作 提供大量数组操作方法

他和Scanner一样可以导入

十. 多重循环

1.死循环

死循环:循环语句无法正常停止的情况,就被称为死循环,一般都是

缺失了循环出口的条件或循环条件存在问题

按理说 死循环并不是一件好事 但是“功法没有正邪之分”,有正邪之分的是使用的人

如果被使用正确 可以解决很多问题

适应场景:当你不确定 或确定循环条件及出口较为困难时是可以采用死循环

while (true){
    
}
do {
    
} while (true;)
 for(; ;){
     
 }   

但无论是死循环也好 还是正常循环也好 都应该保证有相应的出口,我们可以通过循环中的跳转语句 来实现循环流程控制

break

break在switch选择结构中出现过他的意思是结束某个分支

在循环中 表示结束当前所在循环,一般还要配合选择结构使用

continue

continue :继续

只能在死循环中使用 他表示结束当前所在循环的本次循环(本次循环后的continue后的内容不再执行)跳转到下一次循环开始

2.多重循环概述

需求:

*****
*****
*****
*****    

单层循环无法实现稍微复杂的需求,所以我们需要多重循环(嵌套循环)

while(外层循环){
    while(内层循环条件){
        
    }
}
do {
    for(内层循环条件){
        
    }
    for(内层循环条件){
        
    }
}while(外层循环条件);

不同的循环结构之间可以相互嵌套 嵌套多少层都可以

但是一般嵌套层数不要超过三层 因为层数越多循环结构过于复杂

一般嵌套都是两层居多 所以多重循环又称为双层循环

产生循环嵌套后会分为外层循环和内层循环 内层循环其实就是外层循环的循环操作

外层循环执行一次,内层循环执行一遍!

3.案例实现

3.1打印矩形图形

for (int i = 1; i <= 5; i ++) {
		for (int j = 1; j <= 5; j ++) {
			System.out.print("*");
			}
			System.out.println();
		}

3.2打印等腰三角形

3.3打印平行四边形

3.4打印九九乘法表

十一.面向对象

类和对象

1.软件开发的思想演变

面向过程的编程思想:

将过程功能化 函数化 方法化

将原来重复使用的内容 或者直接编写的指令改为一个个小小的功能

这些小功能要求可以独立完成某个任务 还能实现复用

例如:Scanner中的nextint()方法 可以独立完成控制台输入整数的功能

并且可以复用

面向对象编程思想:

面向对象是基于面向过程演化而来的

将具有相似功能或者具有关联性功能 抽取到一个类中,下次想使用

该功能时 先找到该类的对象 再使用即可

例如 我们需要实现键盘录入 首先想到Scanner

项目规模必须达到一定的程度 否则面向过程可能比面向对象更实在

2.生活中的类和对象

生活中类和对象是无处不在的,类是一组具有相同特征的对象中抽象而来的,它是是一个抽象的概念 无法直接使用此概念做事而对象则是基于类抽象概念为模板

产生的个体 对象是可以直接用于做事

3.程序中的类和对象

3.1 类概念

java语言 也是符合面向对象编程思想的而且在java中类是基本的组成单元

意味着想开发一个java程序就是要编写一个到多个类

// 类声明
[访问权限修饰符]class 类名{
    // 类体
    // 属性/成员变量/实例变量/field
    [访问权限修饰符] 数据类型 属性名;
        // ...
    // 行为/成员方法/实例方法/method
        // [访问权限修饰符][其他修饰符] 返回值类型 方法名(形式参数列表){
        // 方法体
}
// ...
}
    

上述语法就是java中用于描述生活中类概念的语法

3.2 类图

3.3 对象概念

十二. 方法和方法的重载

1.方法的概述

在面向过程出现的时候方法就出现了 在程序中要存储数据会采用变量来存储以方便我们复用 而方法的出现是为了存储程序中的功能代码 以方便我们复用

2.方法的语法和分类

[访问权限修饰符][其它修饰符] 返回值类型 方法名(方法的参数列表){
     // 方法体
    // 功能代码...
    	[return 返回值;]
}

访问权限修饰符: 先认识一个public 代表公共的 意味着在项目中可以使用

其它修饰符:先认识一个static 代表静态的

返回值类型: 一个方法 一个功能 在执行完之后返回数据的类型

要获取到输入的数据 所以必须定义返回值 因为要得到的返回数据是整数所以返回值类型是int

方法名: 为了方便下次再使用 要起名 命名规范与变量名一致

方法参数列表:一个方法内部要执行的功能有些时候要进行某些数据处理,但是要处理的数据必须由你来提供给他 所以需要提前规范好需要什么数据

return: 结束方法 并将返回结果返回到调用者位置 调用者可以将结果存储为变量或者直接输出来使用

分类

以后其它语言基本也是这四个分类

按照语法中是否有参数 是否有返回值来进行分类

1.无参无返(没有参数 没有返回值)

没有返回值返回值类型需要定义为void 代表空

这种方法用于实现一些简单内容的输出或执行

2.有参无返(有参数没有返回值)

一般这种方法用于实现一些需要根据条件或者一些基础数据才能实现输出或执行的场景

3.无参有返

一般这种方法适用于一些功能执行完可以返回一个结果的情况

因为没有参数缺少灵活性,扩展性

Math.random()

4.有参有返

// Arrays.toString()将数组转换为字符串

3.构造方法

构造方法只有有参和无参两种 因为构造方法的作用就是为了创建该类型的对象

那也就没有写上返回值了

构造方法必须和类名一致

4.this关键字

在局部变量和成员变量出现重名时 局部变量优先级更高

就近原则

如果真重名了可以使用this关键字区分

它代表着当前类的对象 它是一种代词

可以使用this 在当前类中 调用对象能调用的东西

调用方法 this.方法名()

调用构造 this ([参数列表])

5.成员变量和局部变量区别

定义的位置

成员变量:定义在类中 方法外

局部变量: 定义在类中 方法内

初始值不同:

成员变量: 有初始值

局部变量:没有初始值 不赋值不能使用

作用域不同:

成员变量:在类中的所有成员方法中都能使用

局部变量:只能在定义它的方法中使用

生命周期不同:

成员变量:对象变量 实例变量 随着对象的创建来产生 随着对象的销毁而销毁

局部变量:随着他所在的方法中出现 随着方法结束 而销毁

6.方法重载现象

方法重载:在一个类中出现的方法名相同,参数列表不同的情况

如果没有方法重载支持 方法名相同显然是不可能的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值