# 大数据工程(一)

 

## Java基础

 

程序设计语言

Java每一句执行语句后面有;

回车换行不表明结束,;才表示。

 

编译的过程:编译以后会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。运行只运行含main的文件。

 

计算机系统

硬件:

cpu

内存:8bit单元=byte单元

kb mb gb eb zb yb

软件:一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件和应用软件。

系统软件:

应用软件:

人机交互方式:图形化界面&命令行dos

应用程序=算法+数据结构

算法解决应用程序正确与否。

数据结构解决效率的问题。选择正确的数据结构。

 

### 计算机基础

 

- 计算机概述

 

  两个鼻祖:

  

  图灵:电影《模仿游戏》。

  计算机科学和人工智能之父。

  计算机领域最高奖“图灵奖”。

  国内:姚期智,清华姚班。

  

  冯诺依曼:计算机之父和博弈论之父。

  理论要点-数字计算机的制采用二进制;计算机应该按照陈序顺序执行。

 

- 冯诺依曼体系

 

  现代计算机基础。

 

- 计算机结构

 

- 硬件Hardware

 

  计算机可以看得见的物理部分。

 

- CPU

 

  它从内存中获取指令,然后执行这些指令。

 

  cpu速度的计量单位是赫兹(Hz),1Hz相当于每秒1个脉冲。目前以千兆赫(GHz)来表述。

 

  三个定律:

  摩尔定律

  安迪-比尔定律

  反摩尔定律

 

- 运算器

 

  算数、逻辑单元(arithmetic、logic unit):用于完成数值运算(+,-,*。/)和逻辑运算(比较)。

 

- 控制器

 

  控制单元(control unit):控制代码指令,流程。用于控制和协调其他组件的动作)。

 

- 存储器

 

- 存储设备

 

  内存存取数据的速度比硬盘的存取速度快10倍。而cpu的速度比内存不知道还要快多少倍。把程序从硬盘放到内存后,cpu就直接在内存运行程序,cpu操作的数据都来自于内存,读内存中的数据做运算。

 

  Java在数据当中怎么分配。内存解析。

 

  电脑慢了,调大内存,在内存不够的情况下。换固态硬盘,硬盘给数据速度更快。

 

- 硬盘Hard Disk(ROM手机内存)

 

  写在磁盘上的是永久保存的。

 

- USB

 

- 内存(RAM)Random-Access Memory

 

  数据是如何存储在计算机中的:计算机就是一系列的电路开关,每个电路存在两种状态off(0)和on(1)。

 

  一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。

 

  计算机中最基本的存储单元是字节(byte)。每个字节由8个比特bit构成。

 

  千字节(Kilobyte)1KB=1024B

  兆字节(Megabyte)1MB=1024KB

  千兆字节(Gigabyte)1GB=1024MB

  万亿字节(Terabyte)1TB=1024GB

 

  内存中的信息断电会丢失。

 

  内存:由一个有序的字节序列组成,用于存储程序及程序需要的数据。

 

  一个程序和它的数据再被cpu执行前必须移动到计算机的内存中。

 

  每个字节都有一个唯一的地址。使用这个地址确定字节的位置,以便于存储和获取数据。

 

  一个计算机具有的RAM越多,它的运行速度越快,但是此规律是有限制的。

 

- 输入/输出

- 通讯设备

 

  调制解调器,网卡

 

- 软件Software

 

  软件是看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务。

 

  软件:即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。

 

  分为:

  操作系统

  应用软件(软件开发=程序设计):

  创建或开发软件。

 

  人机交互方式:

  图形化界面(GUI):

  命令行方式(CLI): 需要有一个控制台,输入特定的指令,让计算机完成一些操作。

 

- 软件

 

- 操作系统软件operating system

 

  是运行在计算机上的最重要的程序,可以管理和控制计算机的活动。

 

  和硬件打交道。

  控制程序。

  用户也可以直接控制操作系统。

 

  window mac linus nuix android ios

 

- 电脑系统

- 手机系统

 

- 应用软件/应用程序

 

  program = Algorithm + data structure

 

  例如:排序

  算法:程序正确与否

  数据结构:载体与效率的问题

 

- 计算机语言/程序设计

 

  程序设计语言:写指令用的语言。

  计算机编程语言介绍:

  第一代语言:机器语言,二进制代码

  第二代语言:汇编语言,助记符

  第三代语言:高级语言,

  面向过程:

  面向对象:java,python,scala,JS

 

  tiobe:语言排行榜

 

- 面向过程

 

  c和c++的开发效率低,执行效率高,做底层

 

- 面向对象

 

  java的开发效率高,执行效率低,社区活跃,第三方框架多,社会web开发

 

  python的开发效率更高,执行效率更低

 

  C#社区活跃和开源不如java

 

- Java语言概述/历史发展

 

  是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以 在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使 用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。 

 

 

  后台开发:java大公司,php,python小公司,go,node.js,

 

  javase-javaee-javame

  JAVASE(standard)桌面级应用

  JAVAEE(enterprise)web应用程序

  JAVAME(micro)移动端

 

 

 

 

 

  • 移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手 机、PDA、机顶盒、汽车通信设备等。 

 

 

  Java虚拟机 (Java Virtal Machine) 垃圾收集机制 (Garbage Collection)

 

- 开发环境

 

- 环境搭建

 

- 环境变量

 

- 常用的java开发工具IDE

 

  (Integrated Development Environment)

 

 

 

- Hello World

 

 

 

 

  } 

 

  对第一个java程序进行总结:

  编写:我们将编写的java代码保存在以“.java”结尾的源文件中

 

  编译:使用javac.exe命令编译我们的java源文件。生成字节码文件.class,有几个class生成几个。

  javac ChairMan(文件名).java

 

  运行:使用java.exe命令解释运行我么的字节码文件。只运行包含main方法的类。

 

  在一个java源文件中可以声明多个class,但是只有一个public,只能是和文件名同名的类上。

  java ChairMan(类名)

 

 

 

  输出语句System.out.println 先输出后换行

 

 

 

  Java方法由一条条语句构成,每个语句以“;”结束。

  大括号都是成对出现的,缺一不可。

 

- 编写

 

- 编译

 

  语法层面报错

 

- 运行

 

  计算上的错误

 

- 编程风格

 

  行尾风格

 

  运算符和符号两边各加一个空格。

 

- 注释comment

 

 

 

 

 

  格式: /* 注释文字 */ 

 

  作用:

  1.对所写的程序进行解释说明,增强可读性。方便自己,方便别人。

  2.调试所写代码,对怀疑有问题的代码进行注释,排查bug。

 

 

 

 

 

   文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形 式体现的该程序的说明文档。

 

- 单行

 

- 多行

 

- 文本

 

- debug断点异常调试

- Java API

 

  。。。

 

- Java新特性

- Subtopic 4

 

- 万维网www(简称web)

 

  是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个 全局“统一资源标识符”( URI )标识 ;这些资源通过 超文本传输协议( Hypertext Transfer Protocol 传送给用户,而后者通过点击链接来获得资源 。

 

  就是平时上网的过程。

 

  互联网>因特网>万维网

 

- web客户端

 

  常用浏览器,访问web服务器上的页面。

 

  B/S browser server:浏览器(特殊的客户端)

 

  C/S client server:客户端 wechat,QQ。。

 

- web服务器程序

 

### 基础程序设计

 

- 基础语法

 

- 关键字Key Word/保留字reserved word

 

  关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写

  官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

 

- 标识符Identifier

 

  标识符:

  Java 对各种变量、方法和类,接口,包等要素命名时使用的字符序列称为标识符 技巧:凡是自己可以起名字的地方都叫标识符。

 

- 组成和注意事项

 

 

 

 

 

  Java中严格区分大小写,长度无限制。 标识符不能包含空格。

 

- 命名规则

 

 

 

  类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz (大驼峰)

  变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz (小驼峰)

 

 

 

   注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

 

- 常用内部类API(直接可用的功能)

 

  API写好的

  直接拿过来用

 

- 输入scanner/输出print

 

  scanner键盘录入提高交互性

  使用:

  1导包,写好的直接用(放在class上面)

  import java.util.scanner

  2创建对象

  scanner sc = new Scanner(System.in)

  这一步可快速导包

  System.out.println("请输入一个数据:")

  3接收数据

  int x = sc.nexInt

  System.out.println(x)

 

  println 输出再换行

  print不换行

 

  控制台程序

 

- Random随机生成

 

  Random类 生成随机数 用法同scanner

  创建对象:

  Random rd = new Random();

  获取随机数:

  Int num = rd.nextline(20);

  -0-19不包括20

  -contrl+shift+O导入包

  产生1-50的随机数:

  Int num = rd.nextline(50)+1;

  获取多次随机数,中间加入循环语句:

  for(int i=1, i<20, i++){

  sys...

  }

 

 

  练习

 

- ...

 

- Java中的内存分配

 

  Java中的内存分配:程序在执行过程中,需要在内存中分配空间。为了提高运算效果,对内存空间进行了不同区域的划分,每一片区域都有特定的处理数据的方式和内存管理方式。

 

  栈:储存局部变量:定义在方法中的变量

  堆:存储new出来的东西,实例对象:每一个对象都有地址值;每一个对象数据都有默认值,byte,short,int,long是0,float,double是0.0,char是\u000,boolean是false,引用是null。

  方法区:面向对象的。。。

  本地方法区:和系统有关

  寄存器:给cpu使用

 

  空指针问题:

  array = null 数组已经不指向堆内存数据,无法再访问到,空指针问题

 

- 栈内存Stack

- 堆内存Heap

 

- new

 

- 方法区

 

- 变量/常量

 

  java变量是有类型的

  在使用变量前必须定义(初始化)

 

- 变量概念

 

  变量的概念:

  内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值 

 

  表达式:

  数据类型 变量名 = 存储的值(初始化值)

 

  final 数据类型 变量名 =

  final变量不能被更改

 

 

 

 

 

 

  同一个作用域内,不能定义重名的变量

 

- 变量表达式

 

  声明变量

 

 

 

   变量的赋值

 

 

 

   声明和赋值变量

 

   例如:int var = 10;

 

- 标识符

 

- 标识符命名

 

- 变量注意

 

  1.变量必须先声明、赋值之后再使用。

  2.变量都有所定义的作用域,一对{}内。

  3.同一个作用域内不可以声明两个同名的变量。

 

 

 

 

 

 

 

  同一个作用域内,不能定义重名的变量

 

- 变量的分类

 

- 按数据类型不同

 

  对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分变量的分类-按数据类型 配了不同大小的内存空间。

 

- 基本数据类型primitive

 

  8种基本数据类型

 

- 数值型

 

- 整数类型

 

  正负都可以

 

 

 

 

 

 

    (一个byte表256个数,负128正127)

 

 

 

 

 

 

 

 

 

  bit: 计算机中的最小存储单位。

  byte:计算机中基本存储单元。

 

- byte, short, int, long

 

  byte b1 = 12;

  byte b2 = -128;

  short s1 = 123;

  int i1 = 1234;

  long l1 = 343556736225L;

 

- 浮点类型

 

 

 

  浮点型常量有两种表示形式:

 

 

   Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。

 

- float, double

 

 

     

 

 

  -1.798E308 ~ 1.798E308

 

- 字符型

 

 

 

 

 

 

 

 

  char类型是可以进行运算的。因为它都对应有Unicode码。

 

- char

 

  char c2 = '1';

  char c3 = '中‘;

 

 

 

  可以声明为转义字符:

   Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’; // '\n'表示换行符 

  c5 = '\t'; 表示制表符tab键

 

  char类型是可以进行运算的。因为它都对应有Unicode码。 (ascII码)【字符编码集】

  char c6 = '\u0043';

 

- 字符编码集

 

  计算机的底层都是二进制的码

 

- ascII码

- unicode

 

- utf-8

- GBK-ANSI

 

- 布尔型

 

- boolean:true/false

 

  true,1

  false,0

 

 

 

 

 

  Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的 boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false 用0表示。———《java虚拟机规范 8版》

 

- 基本类型转换/运算

 

  不包含boolean类型,只有其他7种类参与转换、计算。

 

- 算数运算

 

  7种

 

- 自动类型提升

 

  当容量小的数据类型与容量大的数据类型的变量做各种运算时,结果自动提升为大的类型。

  往高级的靠,不然会精度损失,一部分值存不下来。。。

  此时的容量大小指的是,表示数的范围的大小。比如float>long。

 

  =int />short

 

 

  量大小排序为: 

  byte,char,short->int->long->float->double

 

 

  boolean类型不能与其它数据类型运算。

 

- byte,char,short->int->long->float->double

 

  特别的:当byte,char,short三种类型的变量做运算时,结果为int类型。同种类型做运算结果也是int型来接收。

 

- 强制类型转换:损失精度

 

  需要使用强转符()

 

  自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使 用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。 

 

  如果本来的数据就小,就没有精度损失

 

  boolean类型不可以转换为其它的数据类型。

 

- 使用强转符()

 

  小数点是截断,不是四舍五入,损失了精度。

 

 

  int i1 = 128;

  byte b = (byte)i1;

  System.out.println(b);

 

  结果为-128(用二进制来解释)

 

- 两个特殊情况

 

  编码情况1:

  123213; (int转long可以)

  long 2 = 278945872950802;(不加L就不行超过int了)

  float f1 = 12.3;(不加F是double比float大不能自动转换)

 

  编码情况2:

  整型常量,默认类型为int型

  浮点型常量,默认类型为double型

 

- 连接运算

 

  8种

 

  +前后只要有一个类型是string,就是连接的。

 

- 基本数据类型+“字符串”

 

  当把任何(8种)基本数据类型的值和字符串(String)进行连接运算时(+连接符号),基本数据类 型的值将自动转化为字符串(String)类型。 

 

   String不是基本数据类型,属于引用数据类型

   使用方式与基本数据类型一致。例如:String str = “abcd”;

 

 

  int n = 100;

  str = str + n; 

 

 

  如: String a = “43”; int i = Integer.parseInt(a); 

 

  “”可以

  ’‘不可以

  ’ ‘可以,存了个空格

 

- 变量之进制

 

   所有数字在计算机底层都以二进制形式存在。 

 

 

 

  十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0 

 

  呈现出来的都是十进制

 

- 二进制0b/0B

 

  6

 

- 十进制

 

  110

 

- 八进制0

 

  87

 

- 十六进制0x/0X

 

  4362

 

- 进制转化

 

- 二与十

- 二与八和十六

 

- 引用数据类型reference

 

- 数组Array

 

  Java数组时一种数据的容器

  1.数组中的元素数据类型相同

  2.数组长度length,即有多少个数组

  3.元素数据有排序位置:索引(从0开始,长度-1)

 

  数组可以存储多个变量。是可以存储多个相同数据类型(元素)的有序容器。

  基本数据类型,引用数据类型

 

- 创建数组

 

 

 

  int a[];

  int[] a1;

  double b[];

 

 

   Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法 

 

  创建定义数组格式:

  --多用这个

  数据类型 数组名[];

 

 

 

 

 

  2 第二种定义方式, 和第一种本质一样,只是写法不一样:

 

 

  3 第三种定义方式, 定义就只是定义, 没给赋初始值:

 

  长度 

  定义好数组变量后, 可以这样给单个单个数组元素赋值, 这是第三种赋值方式: arr[0] = 11;

  arr[1] = 12;

 

  给数组元素赋值,除了可以直接用字面量常数外,也是可以赋值另一个变量的。 int a = 10;

  int b = 20 ;

 

  arr[0] = a; arr[1] = b;

 

- 初始化数组

 

  定义之后并没有储存

 

  数组初始化:为数组开辟内存空间,并为数组中的每个元素赋予初始化值

 

  两种方式:数值为0

  1.动态初始化 只需要给出数组的长度,系统会默认给出初始化值。

  数类型[] 数组名 = new 数类型[长度]

  int[] array = new int[10]

  2.静态初始化 可以直接给出初始化值,由系统决定数组长度,数组元素个数。

  []:声明这是一个数组

  new:为数组申请内存分配的,开辟内存空间,堆空间储存

 

- 动态初始化

 

  动态初始化:

  int[] array = new int [3]

  array[0]=1

  array[1]=2

  array[2]=3

 

- 静态初始化

 

  指定每个数组元素的初始化值,长度由系统决定

  数据类型[]数组名=new 数据类型[]{元素1,2,3}

 

- 数组内存

 

  栈:储存局部变量:定义在方法中的变量

  堆:存储new出来的东西,实例对象:每一个对象都有地址值;每一个对象数据都有默认值,byte,short,int,long是0,float,double是0.0,char是\u000,boolean是false,引用是null。

 

- 默认初始值

 

  对于基本数据类型而言,默认初始化值各有不同 对于引用数据类型而言,默认初始化值为null(注意与0不同!)

 

- 一个数组

- 两个数组

- 两个数组指向同一个地址

 

  一个数组地址赋值给第二个,两个数组指向同一个地址。

  int[] array2= array1;

 

- 数组中元素的获取

 

  直接输出数组名获取的是地址值。

  我们想获取数组中的元素,数组中每个元素都是有编号(索引下标)的,从0开始,最大的编号是数组长度-1。

  数组名[索引]

 

  获取数组的长度(个数)

  array.length

 

- 取值

 

  取值: 取出数组元素的值是通过数组的变量名+索引值的方式取出,

  语法: 变量名 [索引值] 

  System.out.println(array[0])

 

 

  System.out.println(array)

  直接打印输出数组名获取的是数组的地址值。

 

- 数组遍历

 

  获得数组中所有数据

  遍历:依次输出数据中的每一个元素

  通过for循环实现

 

 

 

 

 

 

 

  }

 

- 获取最值

 

  获取最大值、最小值

 

  int max = array[0]

 

  for.....

if(array[x]>max){

max=array[x];

 

- 数组类型

 

- 一维数组

- 二维数组

 

- 二维数组遍历

 

- 多维数组

 

- 面向对象数组

 

  通过数组类的构造方法构造数组:

 

  public static void main...

 

  class ArrayClass{

  用类的属性封装数组变量

private long[] arr;

private int nElems;当前存在数组长度

 

  用构造函数初始化数组

public ArrayClass(int maxSize){最大长度

arr=new long[maxSize];

nElems=0;

  }

  }

  }

 

- 类Class

 

- 字符串string类

 

  使用方式与基本数据类型一致。例如:String str = “abcd”;

 

- ....

 

- 接口API(interface)

 

- 按声明的位置不同

 

 

   在方法体内部声明的变量称为局部变量。 

 

  ●注意:二者在初始化值方面的异同:

 

  异:局部变量除形参外,需显式初始化。

 

- 成员变量

 

- 实例变量(不以static修饰)

- 类变量(以static修饰)

 

- 局部变量

 

- 代码块局部变量(在代码内定义)

- 方法局部变量(在方法内定义)

- 形参(方法、构造器中定义的变量)

 

- 运算符

 

  运算符是对常量和变量进行代码操作的符号

 

- 算数运算符

 

- +, -, *, / ,%, ++ ,--

 

  1.整数相除/只能得到整数

  2.字符串”“参与+运算实际上是拼接

  3.字符参与运算是字符在计算机里储存的数据值参与运算A=65 a=97

  4.自增自减运算符++,--对变量做加1减1操作(++a/a++),前++和后++。

  5.自增自减运算符既可以放在变量的后面使用,也可以放在前面。单独使用,无论放在前面还是后面,结果一样。

  6.参与运算时,放在后面,变量先做操作再做加减1;放在前面,先做加减1再做操作。

  ia = 3;

  int ib = ia++

ib=3

  intid =++ia

ib=4

  --------

  System.out.println(ia++);//4(结束以后ia是5)

  System.out.println(++Ia);//6(5+1=6)

  7.%取余运算符,模

 

- 除以/

 

  除号/

  int num1 = 12;

  int num2 = 5;

  int result = num1 / num2; //2

  //10

  double result3 = num1 / num2; //2.0

  double result4 = num1 / num2 + 0.0; //2.0

  double result5 = num1 / (num2 + 0.0);//2.4

  double result6 = (double)num1 / num2;

 

- 取模%

 

  最终结果的符号和被模数一样。

  开发中,经常使用%来判断能否被除尽的情况。

 

- 自加子减++,--

 

  自增1

 

  先自增1,然后再运行。

  前++

  前--

 

 

 

  先运行,然后再自增1。

 

  后--

 

 

  自增1不会改变本身的数据类型

  short s1 = 10;

  s1 = s1 + 1; //编译失败

  s1 = (short) (s1 + 1); //right

  s1++; result will be short type.

 

  开发中需要自增1都用++

 

  byte bb1 = 127;

  bb1++; //-128(originally)

 

- 前++,后++

- 前--,后--

 

- 字符串连接+(见上)

 

- 赋值运算符

 

- 简单赋值运算符=

 

  int a = 10

  把10赋值给int类型变量a

 

 

 

 

  支持连续赋值。

  i2 = j2 = 10;

  i3 =10, j3 = 20;

 

- 复合赋值运算符+=,-=,*=,/=,%=

 

  加赋值,减赋值,。。。。取余赋值

 

- 关系/比较运算符

 

- ==, !=, >, <, >=, <=

 

  1.用来比较两个表达式大小或值大小关系的标识符,

  2.关系运算符的结果是boolean类型的:true,false

  3.不支持10<= ia <= 99这种语法格式

  通过逻辑运算符来处理

  boolean = c = (a==b)

  System.out.println(c)

 

- 逻辑运算符

 

- &&(与) ||(或)!(非)

 

  操作数为boolean表达式

  &&与 相当于并且 同真为真 一假为假

  ||或 相当于或者 一真为真 同假为假

  !非 相当于取反 真为假 假为真

 

- 条件/三元(目)运算符

 

- (a>b)?a:b

 

  语法格式:

条件表达式?表达式1:表达式2;

  执行流程

先来计算关系表达式的结果,看是true还是false

若成立true,则执行表达式1

若不成立false ,则执行表达式2

  int a = 10

  int b =20

 

  in c = (a>b)?a:b

 

  temp max

 

- 位运算符

- 位移运算符

- 运算符之间的优先级

 

- 流程控制语句

 

- 顺序结构

- 选择结构

 

  1.if语句

  第一种格式:

  if(关系表达式){

  语句体;

  }

  true执行 false不执行语句体

  第二种格式:两种情况判断

  if(关系表达式){

语句体1;

  }else{

语句体2;

  }

  第三种格式:多种情况判断

  if(关系表达式1){

  语句体1;

  }else if(关系表达式2){

  语句体2;

  }else if(关系表达式3){

  语句体3;

  }

  ...

  else{语句体你;

  }

 

  2.switch语句,依次比较

  switch(){

  case 值1:

  语句体1;

  break;

  case 值2:

  语句体2;

  break;

  case 值3:

  语句体3;

  break;

  ...

  default:

  语句体n;

  break

  }

  格式说明:

表达式:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是字符串

Case的值:就是用来和表达式进行匹配的

break:中断的意思,没有会穿透

default:最后都不满足执行的语句体

 

 

 

  枚举:

  enum Colour{green,yellow,red

  }

  switch(Colour.red)

 

- if

 

  1.if语句

  第一种格式:

  if(关系表达式){

  语句体;

  }

  true执行 false不执行语句体

  第二种格式:两种情况判断

  if(关系表达式){

语句体1;

  }else{

语句体2;

  }

  第三种格式:多种情况判断

  if(关系表达式1){

  语句体1;

  }else if(关系表达式2){

  语句体2;

  }else if(关系表达式3){

  语句体3;

  }

  ...

  else{语句体你;

  }

 

- switch

 

  2.switch语句,依次比较

  switch(){

  case 值1:

  语句体1;

  break;

  case 值2:

  语句体2;

  break;

  case 值3:

  语句体3;

  break;

  ...

  default:

  语句体n;

  break

  }

  格式说明:

表达式:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是字符串

Case的值:就是用来和表达式进行匹配的

break:中断的意思,没有会穿透

default:最后都不满足执行的语句体

 

 

 

  枚举:

  enum Colour{green,yellow,red

  }

  switch(Colour.red)

 

- break停止

 

- 循环结构

 

  实战开发中用的最多的,需要反复执行某一段代码时使用

 

  4个组成:

  初始化语句

  判断条件语句:关系表达式

  控制条件语句:循环执行部分

  循环语句:循环结束后++--

 

  三种循环语句

  1.for循环

  2.while循环

  ...while循环

 

- for

 

  for(初始化;判断条件;控制条件){

循环体语句;

  }

  执行流程:

  1.初始化语句

  2.判断条件语句 false结束 true继续

  3.执行循环体语句

  4.执行控制条件语句

  5.回到第二部继续

  for(i=1, i>+10, i++){

  循环体语句

  }

 

  练习

  求1-100的和

  偶数和

 

- while

 

  初始化语句

  while(判断条件语句){

  循环体语句

  控制条件语句

  }

 

 

  while(i>+10){

  sys....

  i++/break

  }

 

  成立就继续执行

  while(true){

  循环体语句

  break

  }

 

  练习1-100的和

 

- continue跳过

 

  在循环语句中使用,离开循环场景无法使用

 

  for(int i=1,i<+10, i++){

  if(i==5){

  continue

}

  }

  t跳过第5次循环

 

- do...while