- List item
Java基础篇 学习笔记
java基础篇 第1章 计算机、程序和java概述 学习笔记
1.1什么是计算机
简单来说:计算机就是 ‘ 存储 ’ 和 ‘ 处理 ’ 数据的电子设备。
计算机包括硬件( hardware ) 和软件( software) 两部分
a :硬件包括计算机中可以看得见的物理部分
b : 软件提供看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务
1.2 计算机的组成
一台计算机是由以下几个主要的硬件组件构成的:
• 中央处理器(CPU)
• 内存(主存)
• 存储设备(例如,磁盘和光盘)
• 输入设备(例如,鼠标和键盘)
• 输出设备(例如,显示器和打印机)
• 通信设备(例如,调制解调器和网卡)
这些组件通过一个称为总线(bus ) 的子系统连接。
数据和电信号通过总线在计算机的各个部分之间传输。在个人计算机中,总线搭建在主板上,主板是一个连接计算机各个部分的电路板。
1.2.1 中央处理器
中央处理器( Central Processing Unit, CPU) 是计算机的大脑。它从内存中获取指令,然后执行这些指令。CPU 通常由两部分组成:控制单元(control unit) 和算术 / 逻辑单元(arithmetic/logic unit)0 控制单元用于控制和协调其他组件的动作。算术 / 逻辑单元用于完成数值运算(加法、减法、乘法、除法)和逻辑运算(比较)。
1.2.2 比特和字节
计算机实质上就是一系列的电路开关,关和开代表两种状态分别可以用0和1表示。这些 0 和 1 被解释为二进制数字系统中的数,并且将它们称为比特(bit, 二进制数)。
各种类型的数据(例如,数字和字符)都被编码为字节序列。这些都是系统根据编码模式( schema) 来自动完成的(程序员不需要关系数据的编码和解码)
*’编码模式‘*是一系列的规则,控制计算机将字符、数字和符号翻译成计算机可以实际工作的数据。大多数模式将每个字符翻译成预先确定的一个比特串。
计算机的存储能力是以字节和多字节来衡量的,如下:
• 千字节(kilobyte, KB) 大约是 1000 字节。
• 兆字节(megabyte, MB) 大约是 100 万字节。
• 千兆字节(gigabyte, GB) 大约是 10 亿字节。
• 万亿字节(terabyte, TB)大约是 1 万亿字节。
1.2.3 内存
计算机的内存由一个有序的字节序列组成,用于存储程序及程序需要的数据。
每个字节都有一个唯一的地址
如同1-2 所示。使用这个地址确定字节的位置,以便于存储和获取数据。因为可以按任意顺序存取字节,所以内存也被称为随机访问存播器(Random-Access Memory, RAM)
内存中字节的内容永远非空,但是它的原始内容可能对于你的程序来说是毫无意义的。一旦新的信息被放入内存,该字节的当前内容就会丢失。
1.2.4 存储设备
计算机的内存( RAM)是一种易失的数据保存形式:断电时存储在内存中的信息就会丢失。程序和数据被永久地存放在存储设备上,当计算机确实要使用它们时再移入内存,因为从内存读取比从存储设备读取要快得多。
存储设备主要有以下三种类型:
• 磁盘驱动器
• 光盘驱动器(CD 和 DVD)
• USB 闪存驱动器
驱动器(drive) 是对存储介质进行操作的设备,例如,磁盘和光盘。存储介质物理地存储数据和程序指令。驱动器从介质读取数据并将数据写在介质上。
1.2.5 输入和输出设备
输入设备和输出设备让用户可以和计算机进行通信。最常用的输人设备是键盘(keyboard) 和鼠标(mouse), 而最常用的输出设备是显示器(monitor) 和打印机(printer)
1.2.6 通信设备
计算机可以通过通信设备进行联网。
1.3 编 程 语 言
计算机程序(program) 称为软件(software), 是告诉计算机该做什么的栺令。
计算机不理解人类的语言,所以,计算机程序必须使用计算机可以使用的语言编写。
1.3.1 机器语言
计算机的原生语言因计算机类型的不同而有差异,计算机的原生语言就是机器语言( machine language), 即一套内嵌的原子指令集。因为这些指令都是以二进制代码的形式存在,所以,为了以机器原生语言的形式给计算机指令,必须以二进制代码输人指令。
1.3.2 汇编语言
汇编语言(assembly language) 使用短的描述性单词(称为助记符)来表示每一条机器语言指令。
使用汇编语言编写代码比使用机器语言容易。然而,用汇编语言编写代码依然很不方便。汇编语言中的一条指令对应机器代码中的一条指令。用汇编语言写代码需要知道CPU是如何工作的。汇编语言被认为是低级语言,因为汇编语言本质上非常接近机器语言,并且是机器相关的。
1.3.3 高级语言
20 世纪 50 年代,新一代编程语言即众所周知的高级语言出现了。它们是平台独立的,这意味着可以使用高级语言编程,然后在各种不同类型的机器上运行。高级语言很像英语,易于学习和使用。高级语言中的指令称为语句。
用高级语言编写的程序称为源程序( source program) 或源代码( source code)。由于计算机不能运行源程序,源程序必须被翻译成可执行的机器代码。翻译可以由另外一种称为解释器或者编译器的编程工具来完成。
1 . 4 操 作 系 统
操作系统(Operating System, OS)是运行在计算机上的最重要的程序,它可
以管理和控制计算机的活动。
流行的操作系统有 Microsoft Windows、Mac OS以及 Linux。
操作系统的主要任务有:
• 控制和监视系统的活动
• 分配和调配系统资源
• 调度操作
1.4.1 控制和监视系统的活动
操作系统执行基本的任务,例如,识别来自键盘的输入,向显示器发送输出结果,跟踪存储设备中的文件和文件夹的动态,控制类似硬盘驱动器和打印机这样的外部设备。操作系统还要确保不同的程序和用户同时使用计算机时不会相互干扰。另外,操作系统还负责安全处理,以确保未经授权的用户和程序无权访问系统。
1.4.2 分配和调配系统资源
操作系统负责确定一个程序需要使用哪些计算机资源(例如,CPU、内存、磁盘、输入和输出设备),并进行资源分配和调配以运行程序。
1.4.3 调度操作
操作系统负责调度程序的活动,以便有效地利用系统资源。为了提高系统的性能,目前许多操作系统都支持像多道程序设计( multiprogramming)、多线程( multithreading) 和多处理(multiprocessing)这样的技术。
多道程序设计允许多个程序通过共享 CPU 同时运行。
多线程允许单个程序同时执行多个任务。
多处理也称为并行处理(parallel processing), 是指使用两个或多个处理器共同并行执行子任务,然后将子任务的结果合并以得到整个任务的结果。
1.5 Java、万维网以及其他
Java 是一种功能强大和多用途的编程语言,可用于开发运行在移动设备、台式计算机以及服务器端的软件。
Java 是由 James Gosling 在 Sun公司领导的小组开发的。(2010年 Sun 公司被 Oracle 收购。)Java 最初被称为 Oak (橡树),是 1991 年为消费类电子产品的嵌入式芯片而设计的。1995 年更名为 Java, 并重新设计用于开发 Web应用程序。
Java 的快速发展以及被广泛接受都应归功于它的设计特性,特别是它的承诺:一次编写,任何地方都可以运行。就像它的设计者声称的,Java 是简单的(simple)、面向对象的(object oriented )、分布式的(distributed )、解释型的(interpreted )、健壮的(robust)、安全的(secure)、体系结构中立的(architectureneutral)、可移植性(portable)、高性能的(high performance)、多线程的( multithreaded ) 和动态的(dynamic)。
Java 是功能完善的通用程序设计语言,可以用来开发健壮的任务关键的应用程序。现
在,它不仅用于 Web 程序设计,而且用于在服务器、台式计算机和移动设备上开发跨平台的独立应用程序。用它开发过与火星探测器通信并控制其在火星上行走的代码。许多曾经认为 Java 言过其实的公司现在使用Java 开发分布式应用程序,便于客户和合作伙伴在 Internet上访问。现在,一旦开发新的项目,公司都会考虑如何利用Java 使工作变得更加容易。
万维网( World Wide Web, WWW)是从世界上任何地方的 Internet 都可以访问的电子信息宝库。Internet 作为万维网的基础架构已经问世四十多年。丰富多彩的万维网和设计精良的 Web 浏览器是 Internet 流行的主要原因。
Java 一开始富有吸引力是因为 Java 程序可以在 Web 浏览器中运行。这种能在 Web浏览器中运行的 Java 程序称为 Java 小程序( applet)。applet 使用现代的图形用户界面与 Web 用户进行交互,处理用户的要求,界面中包括按钮、文本字段、文本域、单选按钮等。applet使得 Web 更加具有响应性、交互性和趣味性。applet内嵌在 HTML 文件中。HTML( HypertextMarkup Language)是一种简单的脚本语言,用于对文档布局,链接因特网上的文档,并且能够在万维网上提供生动的图像、声音和视频。现在,你可以使用Java 开发富因特网应用( RIA)0 富因特网应用作为一种 Web 应用,被设计为可以提供通常桌面应用才具有的特性和功能。
现在,Java 广泛用于开发服务器端的应用程序。这些应用程序处理数据、执行计算,并生成动态网页。许多商用网站后端都是采用 Java 进行开发的。
Java 是一个功能强大的程序设计语言,可以用它来开发台式计算机、 服务器以及小的手持设备上的应用程序。用于安卓手机的软件也是采用Java 进行开发的。
1.6 Java 语言规范、API、JDK 和 IDE
Java 语言规范定义了 Java 的语法,Java 库则在 Java API中定义。JDK 是用于开发和运行 Java 程序的软件。IDE 是快速开发程序的集成开发环境。
计算机语言有严格的使用规范。如果编写程序时没有遵循这些规范,计算机就不能理解程序。Java 语言规范和 Java API定义 Java 的标准。
Java 语言规范(Java language specification) 是对语言的技术定义,包括 Java 程序设计语言的语法和语义。
应用程序接口 ( Application Program Interface, API)也称为库,包括为开发 Java 程序而预定义的类和接口。
JDK 是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试 Java 程序。除了JDK, 还可以使用某种 Java 开发工具(例如,NetBeans、Eclipse和 TextPad) 为了快速开发 Java 程序而提供集成开发环境(Integrated Development Environment, IDE)的软件。编辑、编译、链接、调试和在线帮助都集成在一个图形用户界面中,这样,只需在一个窗口中输入源代码或在窗口中打开已有的文件,然后单击按钮、菜单选项或者使用功能键就可以编译和运行源代码。
1.7 — 个简单的 Java 程序
Java 是从类中的 main 方法开始执行的。
控制台(console) 是一个老的计算机词汇,指计算机的文本输入和显示设备。控制台输入是指从键盘上接收输人,而控制台输出是指在显示器上显示输出。
每个 Java 程序至少应该有一个类。每个类都有一个名宇。按照惯例,类名都是以大写字母开头的。
程序是从 main 方法开始执行的。一个类可以包含几个方法。main 方法是程序开始执行的人口。
字符串(string) 是一个编程术语,表示一个字符序列。一个字符串必须放人双引号中。Java 中的每条语句都以分号( ;)结束,也称为语句结束符(statement terminator)。
保留字(reserved word) 或关键字(keyword) 对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。例如,当编译器看到字 class 时,它知道 class 后面的字就是这个类的名字。这个程序中的其他保留字还有 public、static 和 void。
注释(comment), 它标注该程序是干什么的,以及它是如何构建的。注释帮助程序员进行相互沟通以及理解程序。注释不是程序设计语句,所以编译器编译程序时是忽略注释的。
在 Java 中,在单行上用两个斜杠(//)引导注释,称为行注释(line comment );在一 行或多行用 /* 和 / 括住注释,称为块注释*(line comment)。当编译器看到 // 时,就会忽略本行 // 之后的所有文本。当看到 /* 时,它会搜索接下来的 /,并忽略掉 / 与 */ 之间的文本。
程序中的一对花括号将程序的一些组成部分组合起来,形成一个块( block)。在 Java中,每个块以左花括号( 0 开始,以右花括号(})结束。每个类都有一个将该类的数据和方法放在一起的类块( class block)。每个方法都有一个将该方法中的语句放在一起的方法块(method block)。 块是可以嵌套的,即一个块可以放到另一个块内。
一个左括号必须匹配一个右括号。任何时候,当输入一个左括号时,应该立即输入一个右括号来防止出现遣漏括号的错误。大多数 Java IDE 都会自动地为每个左括号插入一个右括号。
Java 淥程序是区分大小写的。如果在程序中将 main 替换成 Main, 就会出错。
1.8 创建、编译和执行 Java 程序
Java 源程序保存为 .java 文件,编译为 .class 文件。.class 文件由 Java 虚拟机(JVM)执行。
源文件的扩展名必须是 .java, 而且文件名必须与公共类名完全相同。
Java 编译器将 Java 源文件翻译成 Java 字节码文件。
如果没有语法错误,编译器(compiler) 就会生成一个扩展名为 .class 的宇节码文件。Java 语言是高级语言,而 Java 字节码是低级语言。字节码类似于机器指令,但它是体系结构中立的,是可以在任何带 Java 虚拟机( JVM)的平台上运行的。虚拟机不是物理机器,而是一个解释 Java 字节码的程序。这正是 Java 的主要优点之一:Java 字节码可以在不同的硬件平台和操作系统上运行。Java 源代码编译成 Java 字节码,然后 Java 字节码被 JVM 解释执行。你的 Java 代码可能要用到 Java 库中的代码。JVM 将执行你的程序代码以及库中的代码。
执行 Java 程序就是运行程序的字节码,可以在任何一个装有 JVM 的平台上运行字节码,解释 Java 字节码。解释的过程就是一次将字节码中单独的一步翻译为目标机器语言代码,而不是将整个程序翻译成单独的一块。翻译完一步之后就立即执行这一步。
在执行一个 Java 程序时,JVM 首先会用一个称为类加载器(class loader) 的程序将类的字节码加栽到内存中。如果你的程序中使用其他类,类加栽程序会在需要它们之前动态地加栽它们。当加栽该类后,JVM 使用一个称为字节码验证器( bytecode verifier)的程序来检验字节码的合法性,确保字节码不会违反 Java 的安全规范。Java S制执行严格的安全规范,以确保来自网络的 Java 程序不会篡改和危害你的计算机。
1.9 程序设计风格和文档
程序设计风格( programming style)决定程序的外观。如果把整个程序写在一行,它也会被正确地编译和运行,但是这是非常不好的程序设计风格,因为程序的可读性很差。
文档( documentation)是关于程序的解释性评注和注释的一个结构体。程序设计风格与文档和编写代码的作用一样重要。良好的程序设计风格和适当的文档可以减少出错的机率,并且提髙程序的可读性。
1.10 程序设计错误
程序设计错误可以分为三类:语法错误、运行时错误和逻辑错误。
1.10.1 语法错误
在编译过程中出现的错误称为语法错误( syntax error) 或编译错误(compile error)。语法错误是由创建代码时的错误引起的,例如:拼错关键字,忽略了一些必要的标点符号,或者左花括号没有对应的右花括号。
1.10.2 运行时错误
运行时错误( runtime error) 是引起程序非正常中断的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行时错误。输入错误是典型的运行时错误。当程序等待用户输入一个值,而用户输人了一个程序不能处理的值时,就会发生输入错误。
1.10.3 逻辑错误
当程序没有按预期的方式执行时就会发生逻辑错误( logic error )
1.10.4 常见错误
遗漏右括号、遗漏分号、遗漏字符串的引号、命名拼写错误,都是常见的错误。
2.1编写简单的程序
编写程序涉及如何设计算法以及如何将算法翻译成程序指令,即代码。算法描述的是:如果要解决问题,所需要执行的动作以及这些动作执行的顺序。算法可以帮助程序员在使用 程序设计语言编写程序之前做一个规划。
在编写代码之前,以一种算法的形式来勾勒你的程序(或者它潜在的问题),是一 个很好的做法。
当你编码,也就是当你编写一个程序时,你将一个算法翻译成程序。你已经知道每个 Java 程序都是以一个类的声明开始,在声明里类名紧跟在关键字 class 后面。
假设你选择 ComputeArea 作为这个类的类名。这个程序的框架就如下所示:
public class ComputeArea { // Details to be given later }
变量名应该尽量选择描述性的名字(descriptive name), 而不是用 x 和 y 这样的名字:在这里的例子中,用 radius 表示半径、用 area 表示面积。为了让编译器知道 radius 和 area 是什么,需要指明它们的数据类型,即存储在变量中的数据的类型,是整数、实数,或者其他。这称为声明变量。Java 提供简单数据类型来表示整数、实数、字符以及布尔类型。这些类型称为原始数据类型或基本类型。
public class ComputeArea { public static void main(String[] args) { // Step 1: Read in radius // Step 2: Compute area // Step 3: Display the area }}
2.2 从控制台读取输入
Java 使用System.out 来表示标准输出设备,而用System.in 来表示标准输入设备。默认情况下,输出设备是显示器,而输人设备是键盘。为了完成控制台输出,只需使用 println 方法就可以在控制台上显示基本值或字符串。Java 并不直接支持控制台输人,但是 可以使用 Scanner 类创建它的对象,以读取来自 System.in 的输入,如下所示:
Scanner input = new Scanner(System.ln);
语法 new Scanner (System.in)表明创建了一个 Scanner 类型的对象。语法 Scanner input 声明input 是一个Scanner 类 型 的 变 童。整 行 的 Scanner input -new Scanner (System •彳n)表明创建了一个 Scanner 对象,并且将它的引用值陚值给变量 input。对 象可以调用它自己的方法。调用对象的方法就是让这个对象完成某个任务。可以调用nextDouble() 方法来读取一个 double 值,如下所示:
double radius = input.nextDouble();
该语句从键盘读入一个数值,并且将该数值赋给 radius。
Scanner 类在包 java.util 里。它在第丨行被导入。import 语句有两种类型:明确导入 ( specific import ) 和通配符导入(wildcard import)。明场导入是在 import 语句中指定单个的 类。例如,下面的语句就是从包 java.util 中导人 Scanner。
import java.util .Scanner;
通配符导入是指通过使用星号作为通配符,导人一个包中所有的类。例如,下面的语句 导入包:java.util 中所有的类。
import java.util.*;
除非要在程序中使用某个类,否则关于被导人包中的这些类的信息在编译时或运行时是 不被读入的。导入语句只是告诉编译器在什么地方能找到这些类。声明明确导人和声明通配 符导人在性能上是没有什么差别的。
2.3 关键字
Key Word 被高级编程语言赋予特殊含义的一些英文单词,特点 都是小写字母,不能随便使用 不是关键字,但也是具有特殊含义的一些单词,像String,System都是Java内置类,像这种Java自 带类我们也不能随便使用。
2.4 标 识 符
标识符是为了标识程序中诸如类、方法和变量的元素而采用的命名。
指的是在程序中我们程序员为一些数据起的名称,自定义名称
类名,变量名,函数名(主函数的名称main 虽然不是关键字 本身标识符 但是比较关键 对于JVM主 函数只认main)
起名规则:
- 由数字、字母和下划线_和美元符$组成,其中数字不能开头,必须是一个连续的词
- 严格区分大小写
- 不能使用关键字和Java内置类的名称
- 可以使用中文,但是不推荐!
起名规范(最主要的含义就是通过单词的组成从而可以更快地看出数据所代表的含义):
- 变量/函数:第一个单词首字母小写,其他单词首字母大写 myAge yourFriend test() getName() 类
- /接口:所有单词的首字母大写,System String MyClass Demo
- 常量:所有字母大写,单词和单词之间用 _ 分隔,MAX_VALUE PI
- 包名:所有字母小写,单词与单词之间用 . 分隔(文件层级) haha.lala.xixi
2.5 变量
变量用于表示在程序中可能被改变的值。
变量被用于存储程序中后面要用到的值。它们被称为变 量是因为它们的值可以被改变。
变量用于表示特定类型的数据。为了使用变量,可以通过告诉编译器变量的名字及其可 以存储的数据类型来声明该变量。 变量声明 告知编译器根据数据类型为变量分配合适的内存空间。
在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被斌值。 任何时候,都要尽可能一步完成变量的声明和斌初值。这会使得程序易读,同时避免程序设计错误。
变量的使用范围 是指变量可以被引用到的程序的部分。
2.6 赋值语句和赋值表达式
赋值语句将一个值指定给一个变量。在 Java中赋值语句可以作为一个表达式。 声明变量之后,可以使用域值语句(assignment statement) 给它赋一个值。在Java中, 将等号( = )作为赋值操作符(assignment operator)。
表达式(expression) 表示涉及值、变量和操作符的一个运算,它们组合在一起计算出一个新值。
变量也可用在表达式中。变量也可以用于 = 操作符的两边
1nt y = 1; // Assign 1 to variable y double radius * 1.0; // Assign 1.0 to variable radius int x = 5 * (3 / 2); // Assign the value of the expression to x x = y + 1; // Assign the addition of y and 1 to x double area = radius * radius * 3.14159;// Compute area
要给一个变量赋值,变量名必须在賦值操作符的左边。
赋值语句本质上就是计算出一个值并将它赋给操作符左边变量的一个表达 式。由于这个原因,赋值语句常常称作赋值表达式(assignment expression)。
2.7 命名常置
—个变量的值在程序执行过程中可能会发生变化,但是命名常量(named constant) 或简称常量,则表示从不改变的永久数据。
- 从数据量的角度而言,表示不变的量
- 从代码的角度而言,就是直接在程序中出现的数据也称之为叫字面量
- 还有一种是通过变量的形式 将一个具体的常量值给它符号化 PI
- 从生活的角度而言,常量就是指拥有唯一且特殊含义的名称
在Java当中都有哪些常量 :
- 整数常量
- 浮点型常量
- 布尔型常量
- 字符型常量
- 字符串常量
public class Sample { public static void main(String[] args) { //整数常量 System.out.println(10); //十进制 System.out.println(0b1001); //二进制 System.out.println(077); //八进制 System.out.println(0xFFF); //十六进制 //浮点型常量 System.out.println(3.14); //正常小数 System.out.println(0.123e3);//科学 //布尔常量 表示真 假 true false System.out.println(true); System.out.println(false); //字符型常量 由一个字母或数字字符或标点符号被''包含的数据 //System.out.println('12'); //error System.out.println('a'); //第97号编码 System.out.println('我'); System.out.println(' '); //System.out.println(''); //error //System.out.println('''); //error System.out.println('''); System.out.println('\'); // \u 在Unicode字符集中 取编号为00AF的字符 System.out.println('u00AF'); //字符串常量 指一段文本信息 //由若干个字母 数字 标点符号 组成 System.out.println("abcd"); System.out.println("ab"); System.out.println(""); }
}
2.8 数据类型
数据类型主要决定的是变量存储值的大小限制和可变化的常量类型,也决定了变量的类别。
在Java当中,数据类型分两大类别
基本数据类型(数据 值 直接存在变量空间里)
整型
- byte 1字节 8比特 256种 -128~127 -2^7 ~ 2^7 – 1
- short 2字节 16比特 65536种 -32768 ~ 32767 -2^15 ~ 2^15 – 1
- int 4字节 32比特 默认使用 整型常量默认int类型
- long 8字节
浮点型
- float 4字节
- double 8字节
- 浮点型常量默认double
布尔型
- boolean 不确定
字符型
- char 2字节 0~65535 因为编码都是正数还有零
引用数据类型(数据值存在堆内存,变量空间里存的是数据值在堆内存中的地 址 )
- 字符串
- 数组
- 对象
2.9 运算符
算数运算符
- 加法 +
- 减法 –
- 乘法 *
- 除法 /
- 取余 %
- 自增 i++ ++i
- 自减 i– –i
赋值运算符
- +=
- -=
- *=
- /=
- %=
- =
逻辑运算符 两边一定是布尔 结果一定是布尔
-
& 单与
-
| 单或
-
! 非 取反
-
&& 双与
-
|| 双或
-
^ 异或
与:有假则假 全真则真
或:有真则真 全假则假
异或:相同为假 不同为真
比较运算符 :目前而言 俩边一定是数值 结果一定为布尔 > < <= >= != ==
移位运算符 & | ^ >> <<
java循环笔记(个人学习笔记)
while 循环
while 循环在条件为真的情况下,重复地执行语句。
while 循环的语法如下 :
1.循环的初始化
while (2.循环继续条件) {
3.循环体
4.循环的步长
}
循环继续条件应该总是放在固括号内。只有当循环体只包含一条语句或不包含语句 时,循环体的花括号才可以省略。
for循环语句
循环主要解决什么问题?
主要用于解决那些具有 重复性 的且有 规律性 的代码块。
循环四要素:
循环的初始化
循环的继续条件
循环体
循环的步长/周期/间距
for循环一般用于解决循环次数已知的问题
while循环一般用于解决循环次数为止但是循环结束条件已知的问题
for循环的语法结构:
for (1.循环初始化;2.循环继续条件;4.循环的步长) {
3.循环体
}
1-2-3-4-2-3-4-2(直到2不满足为止 循环结束)
从语法结构上而言,for循环解决的问题也可以用while来做,相反同理。
break和continue跳转语句
break结束当前(最近的)循环
continue继续当前(最近的)下一轮循环
函数概述
函数主要解决那些具有 重复性 的且有 独立功能 的代码块,将这些代码块进行抽取,生成函数,方
便后期调用,并且解决了代码冗余的问题。
Java当中函数的语法格式:
权限修饰符:表示的是该函数的调用权限 public protected 默认不写 private
函数类型修饰符:static 静态函数;native 本地函数;abstract 抽象函数;synchronized 同步函
数
返回值类型:就是函数计算的结果,如果需要向调用者返回,则标记为计算结果的数据类型
(向下兼容);如果不需要返回,则写成void
函数名:对于该功能的描述命名
参数列表:就是外界传给函数的一些数据,这些数据一般称之为是形式参数,外界传递的数据
称之为是实际参数
函数体:就是那段具有独立功能的代码块
return:仅仅表示函数结束!如果有返回值,则在return之后写上;如果没有返回值,return之
后不写返回值,那么return隐藏不写!
返回值:就是函数计算的结果
函数只能定义在类中,函数中不能定义函数!
我们可以看到,函数分为四种形式:
有参有返回
有参无返回
无参有返回
无参无返回
如何去设计一个函数呢?
考虑函数的功能
考虑函数是否接受数据
考虑是否有计算结果
考虑结果是否返回
函数内存运行原理
函数的运行是基于栈的,每一个函数都是栈中的元素,我们把这个元素称之为栈帧(栈帧主要包含
的是函数所有的字节码信息,如果在极端情况下一个栈帧过于太大,则导致栈结构存不下,导致栈内存
溢出异常 StackOverFlowError;如果栈帧进入的过多,也会导致栈内存存不下,栈内存溢出),一般第
一个进栈的栈帧是主函数,一个栈帧一旦进入到栈里面,则开始逐行执行,如果在执行的过程中,又调
用了其他函数,此时当前栈帧暂停运行,新函数的栈帧进栈,开始逐行运行,直到运行完毕遇到return
则弹栈,当前栈顶的栈帧继续执行。
但凡在函数中创建的变量,统称为局部变量(该变量的访问范围只在该函数中),所以形式
参数也是一种局部变量。