首页 > 编程语言 >Java基础篇(三)(超详细整理,建议收藏!!!)

Java基础篇(三)(超详细整理,建议收藏!!!)

时间:2024-10-31 18:17:46浏览次数:3  
标签:语句 Java int 收藏 运算符 详细 3.1 2.5

目录

一、Java的诞生与发展历史

        1.1 Java的出生地:SUN Microsystems Inc.

1.2  Java技术体系

     1.3  Java语言的特点

1.4  Java程序的运行机制

1.4.1  JVM与跨平台

1.4.2  JVM、JRE、JDK

1.5  java开发环境

1.6  java开发流程

1.6.1  结构化编程与面向对象编程

1.6.2  编写和运行Java程序的三个步骤

1.6.3  源文件与class文件

1.6.4  main()方法

1.7  常用命令

1.7.1  Dos命令

1.7.2  Java命令

二、标识符、关键字、数据类型

2.1  注释

2.2  分隔符、代码块

2.3  标识符

2.3.1  标识符的概念

2.3.2  标识符的语法要求

2.3.2  标识符的命名规范(驼峰)

2.3.2.1  大驼峰

2.3.2.2  小驼峰

2.3.2.3  常量命名规范

2.4  Java的关键字

2.4.1  Java中的全部关键字

2.4.2  目前已经接触到的关键字

2.5  基本数据类型

2.5.1  数据类型的分类

2.5.2  整型

2.5.2.1  类型、宽度、范围

2.5.2.2  字面值/直接量

2.5.3  浮点型

2.5.3.1  类型、宽度、范围

2.5.3.2  浮点数字面值

2.5.4  字符型

2.5.4.1  char类型与字符编码

2.5.4.2  char类型字面值

2.5.5  布尔型

2.6  变量与常量

2.6.1  变量的声明与赋值

2.6.2  常量的声明与赋值

2.6.3  实例变量与局部变量

2.6.3.1  实例变量及作用范围

2.6.3.2  局部变量及作用范围

2.7  类型转换

2.7.1  自动类型转换

2.7.2  强制类型转换

2.8  面向对象初步(先了解)

2.8.1  了解类和对象

2.8.2  创建对象

三、运算符&表达式&选择结构

3.1  运算符

3.1.1  赋值运算符

3.1.2  算术运算符

3.1.2.1  算术与赋值复合运算符

3.1.2.2  自增与自减

3.1.2.3  表达式

3.1.3  关系运算符

3.1.4  布尔逻辑运算符

3.1.5  位运算符

3.1.5.1  左移与右移

3.1.5.2  位逻辑运算符

3.1.5.3  位运算符与赋值运算符的结合

3.1.6  ?:运算符

3.2  运算符的优先级

3.3  流程控制-选择结构

3.3.1  if-else

3.3.2  多分支语句switch

3.3.2.1  switch语句的结构

3.3.2.2  switch语句需要注意的问题

3.3.3  if-else与Switch的区别

   四、 控制语句

4.1  while循环结构

4.2  do while循环结构

4.3  while和do while的区别

4.4  for循环结构

4.4.1  语法

4.4.2  增强 for 循环

4.5 跳转语句


 

一、Java的诞生与发展历史

        1.1 Java的出生地:SUN Microsystems Inc.

SUN:Stanford University Network

Oracle(甲骨文)sun公司被Oracle收购了!

Java之父:James Gosling(詹姆斯·高斯林)

1995年发布Java第一版 1.0

Java发展历史中的几个重要版本:

  1. Java 1.2  从该版本开始,把Java分成J2SE、J2ME、J2EE三部分。
  2. Java 5  2004年9月30日18:00PM,J2SE 1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0
  3. Java 6  Java的各种版本更名,以取消其中的数字 "2":J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

2009年04月20日,甲骨文(Oracle)74亿美元收购Sun。取得java的版权。

1.2  Java技术体系

    Java技术分为三个体系:

  1. Java SE(J2SE)(Platform Standard Edition,java平台标准版)开发桌面应用程序。它是学习Java EE的基础,也是本教学周期学习的内容
  2. Java EE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)开发面向Internet的应用程序 Java Web
  3. Java ME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)开发运行于智能设备的程序。

     1.3  Java语言的特点

    1、面向对象

 在Java中,一切都是对象。 Java可以很容易地扩展,因为它基于对象模型。
独立于平台 - 与许多其他编程语言(包括C和C++)不同,在编译Java时,它不会编译到特定于平台的机器中,而是编译为与平台无关的字节代码。
此字节代码通过Web分发,并由虚拟机(JVM)在其运行的任何平台上进行解析。



2、安全

借助Java的安全功能,它可以开发无病毒,无篡改的系统。身份验证技术基于公钥加密。
体系结构中立 -  Java编译器生成体系结构中立的目标文件格式,这使得编译的代码可以在许多处理器上执行,并且存在Java运行时系统。


3、可移植

 由于体系结构中立且没有与规范相关的实现,因此Java可移植。 Java中的编译器是用ANSI C编写的,具有干净的可移植性边界,它是一个POSIX子集。

4、健壮

可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。


5、多线程性

 使用Java的多线程功能,可以编写可以同时执行许多任务的程序。此设计功能允许开发人员构建   可以顺利运行的交互式应用程序。


6、解释性语言

Java字节代码即时转换为本机机器指令,不存储在任何地方。开发过程更加快速和分析,因为链接是一个渐进和轻量级的过程。


7、高性能 

Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。


8、分布性

Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。

1.4  Java程序的运行机制

1.4.1  JVM与跨平台

Java程序不是直接在操作系统之上运行,而是运行于JVM(java虚拟机)之上。

针对不同的操作系统开发相应的JVM,Java程序运行于不同的JVM之上,因此Java程序可以在不同修改的情况下运行于不同的操作系统之上,从而实现了所谓的跨平台。

Java源代码(.java文件)经编译器编译成字节码(.class文件)字节码文件是计算机可识别的二进制文件,JVM本质上就是一个负责解释执行Java字节码的程序。

JVM执行Java程序的过程:

  1. 加载.class文件
  2. 管理并分配内存
  3. 执行垃圾收集

1.4.2  JVM、JRE、JDK

JVM:Java虚拟机

JRE:Java运行时环境(JVM+类库)  //后面编写代码时在强调类库

JDK:Java开发工具包(JRE+编译工具)

JDK的全称:Java  Development  kit

提示:运行Java程序只需要安装JRE,开发Java程序则需要安装JDK。

1.5  java开发环境

JDK安装教程  

PS:小伙伴们可以阅读上一篇《JDK安装教程》详细介绍~    

1.6  java开发流程

1.6.1  结构化编程与面向对象编程

结构化编程:函数

面向对象编程:类

java类的基本结构:变量 + 方法(函数)

1.6.2  编写和运行Java程序的三个步骤

  1. 编写源代码,保存到源代码文件中,例如 HelloWorld.java
  2. 编译源代码,例如javac  HelloWorld.java  生成.class文件(字节码)
  3. 执行字节码,例如java  HelloWorld  //区分大小写,无扩展名

编译:编译器对源代码的语法进行检查,生成字节码文件

运行:JVM执行变成生成的字节码

1.6.3  源文件与class文件

在Java中源文件的名称必须是文件中主类的名称,扩展名必须为.java。源文件中可以包含多个类,但是最多只能有一个类使用public修饰,使用public修饰的类就是主类。在Java中,源文件还被作为编译单元,即一个源文件就是一个编译单元。

编译器会为源代码中的每个类生成一个.class文件,.class文件的名称是类的名称,扩展名为.class。

1.6.4  main()方法

方法名:只能是main,不能是Main等形式。

修饰符:public  static  void 三个缺一不可,多一个不行

参数:

1、参数类型为字符串数组 String[]

2、参数名称只要符合Java中标识符命名要求即可

3、参数声明的两种方式:String[]  args, 或  String  args[]

1.7  常用命令

1.7.1  Dos命令

命  令

功    能

盘符

转换到指定分区

cd 目录

进入指定的目录

Dir

查看当前路径下的目录和文件

cd ..

进入上一级目录,..表示上一级目录

Cls

清屏

 Cd desktop

打开C盘

1.7.2  Java命令

javac   //后跟文件名称,需要包含扩展名.java

javac  -d  //指明存放字节码文件(class)文件的位置

java       //后跟类名

javadoc    //生成注释文档

二、标识符、关键字、数据类型

2.1  注释

注释的三种形式:单行注释、多行注释、文档注释

文档注释(documentation comment)以“/**”开始,以“*/”结束。使用文档注释可以将关于程序的信息嵌入到程序自身中。/*  */

javadoc命令可以文档注释中的内容提取出来,将其放入到一个HTML文件中。文档注释方便了程序的文档化。

2.2  分隔符、代码块

每行功能代码以 作为结束符号

空格没有实际意义,可以利用空格无意义,将代码合理缩进,易读

{}包含的代码称之为代码块, 例如类if(){}、方法{}、类{}等等

2.3  标识符

2.3.1  标识符的概念

Java中类、方法和变量的名称,称之为标识符。

2.3.2  标识符的语法要求

(1)以字母、数字、_或$组成

(2)不能以数字开头

(3)不能使用java的关键字和保留字

注意:

1、标识符的长度没有限制

2、Java是大小写敏感的,所有标识符区分大小写  main  Main

2.3.2  标识符的命名规范(驼峰)

Java中的标识符通常是由多个英文单词构造,每个单词除了首字母外其他字母小写。

2.3.2.1  大驼峰

第一个单词的首字母大写。以大写字母开头,用于类名、接口名

class  Account {…}  //类名

class  HelloWorld{…}  //类名

interface  AccountBase {…}  //接口名

2.3.2.2  小驼峰

第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变量名、方法名

String  studentName;  //变量名

String  getStudentName() {…}  //方法名

2.3.2.3  常量命名规范

常量是使用final修饰的存储单元。(最终的)

全部为大写字母表示

final  int  DAYS_WEEK = 7;  //常量必须在声明时赋初值

final  double  PI = 3.1415926;

2.4  Java的关键字

2.4.1  Java中的全部关键字

目前定义了50个关键字

Abstract

continue

for

new

switch

Assert

default

goto

package

synchronized

Boolean

Do

if

private

this

Break

double

implements

protected

throw

Byte

else

import

public

throws

Case

enum

instanceof

return

transient

Catch

extends

int

short

try

Char

final

interface

static

void

Class

finally

long

strictfp

volatile

Const

float

native

super

while

Java保留了const和goto关键字,但是没有使用。Java还保留了下面这些关键字:true、false和null。这些关键字是Java定义的数值。

2.4.2  目前已经接触到的关键字

    public      static     void     class      new

2.5  基本数据类型

2.5.1  数据类型的分类

注意:

基本数据类型也可以分成两大类:数值型、布尔型

通俗的理解编写代码的工作包括:定义变量,保存数据,进行处理(计算)

基本类型与引用类型的区别:

  1. 基本类型:变量保存实际的数据。
  2. 引用类型:变量不包含实际的数据,而是包含实际数据在内存中的位置。

例如:

int a = 10;

Student  stu= new  Student(“张三”, 18, 90);

2.5.2  整型

Java不支持无符号的、只是正值的整数。

2.5.2.1  类型、宽度、范围

名 称

宽 度

范    围

long

64/8

-9 223 372 036 854 775 808至9 223 372 036 854 775 807

int

32/4

-2 147 483 648至2 147 483 647     大约21亿

short

16/2

-32 768至32 767  65536

byte

8/1

-128至127

int类型的范围  -231  –  231-1

short类型的范围  -215  –  215-1

2.5.2.2  字面值/直接量

(1)整数字面值默认是int类型

(2)将字面值赋给byte或short变量时,如果字面值位于目标类型的范围之内,就不产生错误。

(3)大写或小写的L明确地标识其类型为long

(4)在字面值可以包含下划线,例如1_000_000_000

(5)十进制、八进制(0)、十六进制(0X/0x)、二进制(0B/0b)

2.5.3  浮点型

浮点数,也称为实数(real number),当计算需要小数精度的表达式时使用。

2.5.3.1  类型、宽度、范围

名称

宽度(位)

大致范围

            double(双精度)

64/8

4.9e-324~1.8e+308

float (单精度)

32/4

1.4e-045~3.4e+038

浮点数不精确,整数是精确的

2.5.3.2  浮点数字面值

(1)默认为double类型,为了指定float字面值,需要使用后缀F或f

(2)科学计数法。

  例如:

   6.022E23、314159E-5、2e+100

2.5.4  字符型

2.5.4.1  char类型与字符编码

(1)char是16位,Java在内部使用16位的整数表示字符(Unicode编码),char类型的范围0~65535。//全世界基本的语言符号基本都包含了

(2)char也可以用作整数类型,可以将整型字面值赋给char类型的变量,可以在char类型上执行算术运算。

(3)26个小写字母、26个大写字母、以及10个数字0-9,其编码是连续的。

2.5.4.2  char类型字面值

(1)字符型字面值使用单引号中的字符表示,例如’a’。

(2)转义字符

转义序列

描    述

\ddd

八进制字符(ddd)

\uxxxx

十六进制Unicode字符(xxxx)

\’

单引号

\”

双引号

\\

反斜杠

\r

回车符

\n

新行符(也称为换行符)

\f

换页符

\t

制表符

\b

回格符

字符串类型:

字符串类型是String,String是类,所以是引用类型。字符串字面值是使用双引号包围起来的内容。

2.5.5  布尔型

(1)boolean类型表示逻辑值,它只能是true或false

(2)boolean类型的值与整数0和1没有任何关系

2.6  变量与常量

2.6.1  变量的声明与赋值

说明:变量表示存储单元,变量名就是存储单元的名称,变量初始化之后就可以通过变量名访问存储单元。

1、变量声明    int i;   String str;  //还没有分配存储空间String是引用数据类型。

2、初始化(赋初值)  i=10;   str=”abc”;  //初始化之后就分配了存储空间

3、声明并赋值  int i = 10;   String str=”abc”;  //声明的同时进行初始化

注意:变量在使用之前必须先初始化(赋初值)。

2.6.2  常量的声明与赋值

声明常量需要使用final关键字,如,final double PI = 3.1415926。

常量通常在声明时赋值,并且赋值之后其值不能改变

常量标识符通常全部为大写。

2.6.3  实例变量与局部变量

根据变量声明的位置,变量可以分为实例变量和局部变量。

2.6.3.1  实例变量及作用范围

在类的{}内直接定义的变量,称为实例变量或成员变量。

作用范围:整个类中都可以使用

实例变量在创建对象时会自动初始化,并有初始值(默认值)

byte/short/int:0

long:0L

float:0.0f

double:0.0

boolean:false

引用类型:null

2.6.3.2  局部变量及作用范围

在方法中或代码块{}中定义的变量,称之为局部变量。

作用范围:直接包含它的{}内有效

局部变量不会自动初始化,没有默认值,使用之前必须要初始化。

2.7  类型转换

当将一种类型的变量或字面值赋给另外一种类型的变量时,就会发生类型转换。

Java中类型转换分自动类型转换和强制类型转换。

总结:对于数值类型,如果目标类型的范围包含了原类型的范围,则可以自动转换,否则就需要强制转换。

2.7.1  自动类型转换

类型兼容、小类型转换为大类型

byte-->int   short--->int  int--->long

long--->float   float--->double

String--->Object  (子类--->父类)

2.7.2  强制类型转换

大类型转换为小类型

int-->byte  int--->short   long--->int

float--->long  double--->float

Object--->String

2.8  面向对象初步(先了解)

2.8.1  了解类和对象

2.8.2  创建对象

三、运算符&表达式&选择结构

3.1  运算符

可以将大部分Java运算符划分为四组:算术运算符、位运算符、关系运算符以及逻辑运算符。

3.1.1  赋值运算符

赋值运算符有一个有趣的特性:它允许创建赋值链。

例如:

int x, y, z;

x = y = z = 100;   // set x, y, and z to 100

3.1.2  算术运算符

算术运算符用于数学表达式,其使用方法与在代数中的使用方法相同。

运算符

结  果

+

加法(也是一元加号)

-

减法(也是一元负号)

*

乘法

/

除法

%

求模(取余)

+=

加并赋值

-=

减并赋值

*=

乘并赋值

/=

除并赋值

%=

求模并赋值

++

自增

--

自减

注意:

(1)当将除法运算符用于整数类型时,其结果不会包含小数部分。

(2)求模运算符%,返回除法操作的余数。它既可以用于浮点数也可以用于整数。可以用于判断一个整数是否是奇数、偶数、是否是某个数的倍数。

示例:

public class Test {
 
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     int c = 25;
     int d = 25;
     System.out.println("a + b = " + (a + b) );
     System.out.println("a - b = " + (a - b) );
     System.out.println("a * b = " + (a * b) );
     System.out.println("b / a = " + (b / a) );
     System.out.println("b % a = " + (b % a) );
     System.out.println("c % a = " + (c % a) );
     System.out.println("a++   = " +  (a++) );
     System.out.println("a--   = " +  (a--) );
     // 查看  d++ 与 ++d 的不同
     System.out.println("d++   = " +  (d++) );
     System.out.println("++d   = " +  (++d) );
  }
}

以上实例编译运行结果如下:

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++   = 10
a--   = 11
d++   = 25
++d   = 27

3.1.2.1  算术与赋值复合运算符
int  a  = 1;

a += 2;  //相当于a = a+2;

(1)对于所有的二元算术运算符,都有相应的复合赋值运算符。

(2)复合赋值运算符的效率更高。所以在专业的Java程序中,会经常看到复合赋值运算符。

3.1.2.2  自增与自减

(1)自增运算符将其操作数加1。自减运算符将其操作数减1。

(2)自增与自减分前缀形式与后缀形式。++、--

前缀形式:先加1,后使用

int  i = 10;

int  a = ++ i;  //等同于 i=i+1; a=i;  // int a = i; 所以a=11, i= 11

后缀形式:先使用,后加1

int j = 10;

int  b = j++;  //等同于 int b = j;  j=j+1; 所以b=10,j = 11

3.1.2.3  表达式

(1)表达式的概念:由操作数与运算符组成  j++  a+b。最简单的表达式是字面值和单个变量。

(2)表达式的求值:表达式是有值的,需要注意表达式值的类型

(3)表达式中的类型提升规则:

表达式的类型会自动提升为所有操作数的最大类型。

对于操作数全为非long类型整数的表达式,其类型会自动提升为int。

3.1.3  关系运算符

关系运算符也称为比较运算符

运算符

结  果

==

等于

!=

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

(1)关系运算的结果为boolean型数值。                                          

(2)关系表达式最常用于if语句和各种循环语句中的控制条件。          

3.1.4  布尔逻辑运算符

布尔逻辑运算符,只能操作boolean型操作数。

运算符

结  果

&& (并且)

逻辑与(短路形式)

||  (或)

逻辑或(短路形式)

^

逻辑异或

!

逻辑一元非

&

逻辑与

|

逻辑或

布尔逻辑运算规则:

操作数

逻辑运算及结果

A

B

A || B

A && B

!A

A ^ B

False

false

false

false

True

false

True

false

true

false

False

true

False

true

true

false

True

true

True

true

true

true

False

false

运算规则说明:

对于||,只要有一个操作数为true,则结果为true;

对于&&,只要有一个操作数为false,则结果为false。

对于^,两个操作数不同,则结果为true,否则结果为false。

注意:&&和||(短路形式),  &和| (非短路形式)

这两个运算符是所谓短路形式的逻辑运算符。假如单独根据左操作数就能确定表达式的结果,那么就不会计算右操作数的值。

例如:

int a = 5;

int b = 6;

if( (a < b) || (a++ == b) )

//通过第一部分就能确定最终结果的话,第二部分就不会执行

{

System.out.println(a);

}    //分别使用 |  和 ||  测试效果(输出a的值)

3.1.5  位运算符

位运算符:针对整数的二进制表示形式中的每一位进行运算

3.1.5.1  左移与右移

(1)左移<<:左移动1位,低位补0,相当于乘以2

(2)右移>>:右移1位,高位补符号位,相当于除以2

(3)无符号右移 >>>:高位补0

3.1.5.2  位逻辑运算符

运算符

结  果

~

按位一元取反

&

按位与

|

按位或

^

按位异或

运算规则:

操作数

位运算及结果

A

B

A | B

A & B

A ^ B

~A

0

0

0

0

0

1

1

0

1

0

1

0

0

1

1

0

1

1

1

1

1

1

0

0

注意:

&和|,如果操作数为boolean类型,则为布尔逻辑运算符,如果操作数为整数则为位逻辑运算符。通常将&和|作为位运算符。

&&和||只能作为逻辑运算符,两个操作数只能是boolean类型。

3.1.5.3  位运算符与赋值运算符的结合

例如:

a >>= 4; 相当于a = a >> 4;

3.1.6  ?:运算符

条件运算符,三目(三元)运算符

运算规则

expression1 ? expression2 : expression3

expression1可以是任何结果为boolean型数值的表达式。如果expression1为true,则对expression2进行求值;否则对expression3进行求值。“?”运算的结果是对其进行求值的表达式。expression2和expression3都需要返回相同(或兼容)的类型,并且不能为void。

(1)使用?运算符解决除0问题

ratio = denom == 0 ? 0 : num / denom;

 //优美地解决了除0问题

(2)使用?运算符获取绝对值

int i=-10;

int k = i < 0 ? -i : i;  //k为i的绝对值

3.2  运算符的优先级

最高

++(后缀)

--(后缀)

++(前缀)

--(前缀)

~

!

+(一元)

-(一元)

(类型匹配)

*

/

%

+

-

>>

>>>

<<

>

>=

<

<=

instanceof

==

!=

&

^

|

&&

||

?:

op=

最低

大概顺序:算术运算符>移位运算符>关系运算符>逻辑运算符>赋值运算符

圆括号会提升其内部操作数的优先级。为了得到所期望的结果,这通常是必需的。圆括号(不管是否冗余)不会降低程序的性能。所以,为了减少模糊性而添加圆括号,不会对程序造成负面影响。

3.3  流程控制-选择结构

选择结构是通过分支语句实现的,分支语句有两种。

3.3.1  if-else

1、if语句的三种语法形式如下:

第一种形式:

if(expression){ 

// expression结果必须是boolean

}

第二种形式:

if(expression){

}

else{

}


第三种形式: 

//多分支

if(expression){

}

else if(expression){

}

...

else{

}

注意:

else 不能单独使用,要和if配对使用

if  else 都可以后面不跟{},但是只能控制下面的一行代码

3.3.2  多分支语句switch

3.3.2.1  switch语句的结构

语法格式如下:

switch (expression) {

case value1:

// statement sequence

break;

case value2:

// statement sequence

break;

...

case valueN :

// statement sequence

break;

default:

// default statement sequence

}

3.3.2.2  switch语句需要注意的问题

(1)switch(expression)中expression的结果必须是byte,short,char,int中的一种。新增:枚举类         型、String(JDK 7以后)

  注意:long不行

(2)在同一个switch语句中,两个case常量不允许具有相同的值

(3)每个case语句中需要加上break;语句。如果遗漏了break,则会继续进入到下一个case。

(4)可以省略default语句。

(5)default语句通常放在末尾,可以放在开始,中间或者末尾位置。

3.3.3  if-else与Switch的区别

(1)switch语句只能进行相等性测试,这一点与if语句不同,if语句可以对任何类型的布尔表达式进行求值。即,switch只查看表达式的值是否和某个case常量相匹配。

(2)相对于一系列嵌套的if语句,switch语句通常效率更高。

   四、 控制语句

选择语句(分支语句)、迭代语句(循环语句)、跳转语句

4.1  while循环结构

语法格式如下:

while( 布尔表达式 ) {
  //循环内容
}

一般在循环体内控制循环的结束条件:让循环条件为false或break。

4.2  do while循环结构

语法格式如下:

do {
       //代码语句
}while(布尔表达式);

至少执行一次循环。 

示例:

public class Test {
   public static void main(String[] args){
      int x = 10;
 
      do{
         System.out.print("value of x : " + x );
         x++;
         System.out.print("\n");
      }while( x < 20 );
   }
}

以上实例编译运行结果如下:

value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19

 

4.3  while和do while的区别

do  while先执行  后判断     所以它至少执行一次

while先判断条件  后执行     有可能一次也不执行

所有的循环,都可能出现死循环!!!

4.4  for循环结构

4.4.1  语法

语法格式如下:

for(初始化; 布尔表达式; 更新) {
    //代码语句
}

每次迭代前会测试布尔表达式。如果获得的结果是 false,就会执行 for 语句后面的代码;每次循环结束,会按照步进的值执行下一次循环。

4.4.2  增强 for 循环

Java5 引入了一种主要用于数组的增强型 for 循环。

语法格式如下:

for(声明语句 : 表达式)
{
   //代码句子
}

4.5 跳转语句

break 语句

我们在 switch 中已经见到了,它是用于终止循环的操作,实际上 break 语句在for、while、do···while循环语句中,用于强行退出当前循环,例如:

for(int i = 0;i < 5;i++){
	if(i == 1){
    break;
  }
}

continue 语句

continue 也可以放在循环语句中,它与 break 语句具有相反的效果,它的作用是用于执行下一次循环,而不是退出当前循环,例如:

for(int i = 0;i < 5;i++){
  
  System.out.printl(" i = " + i );
	if(i == 1){
    System.out.printl("continue ... ");
    continue;
  }
}

注意:

break:终止直接包含的循环体,结束(本层)循环

continue:终止本次循环,直接执行循环的下一次

break有两个作用:一是结束本层循环,二是跳出switch语句

     

标签:语句,Java,int,收藏,运算符,详细,3.1,2.5
From: https://blog.csdn.net/qq_41320700/article/details/143373530

相关文章

  • PHP和Java在后端开发上有哪些不同_1
    PHP和Java是两种广泛使用的后端开发语言,它们在多个方面具有显著的区别。PHP和Java在以下关键方面的不同:1.语言特性和开发环境;2.性能和速度;3.社区支持和资源;4.适用场景和项目类型;5.学习曲线和易用性。PHP作为一种动态脚本语言,被广泛用于快速开发和简单的网站项目,而Java作为一种强......
  • (教程)如何用 Java 读取和写入图像
    在这篇文章中,我将向您展示如何用Java读取和写入图像文件。我将演示两种不同的方法。第一种是使用 ImageIO,第二种是使用我们的 JDeli图像库。如果您只是在寻找图像查看器,JDeli包含一个内置图像查看器。 如何在Java中读取和写入图像Java为图像提供了一种称为Buffe......
  • 0基础学java之Day18
    包装类理解:基本数据类型对应的类出现原因:Java为纯面向对象语言,8种基本数据类型不能new对象,破坏了Java为纯面向对象语言的特征,所以Java有为8种基本数据类型分别匹配了对应的类,这种类叫做包装类/封装类基本数据类型引用数据类型继承关系byteByteObject.Number.Bytesh......
  • stm32入门教程--USART外设 超详细!!!
    目录简介什么是UART?什么是USART?简介USART(UniversalSynchron/AsynchronousReceiver/Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接......
  • Java——lambda表达式和StreamAPI
    一、lambda1. lambda表达式1.1Lambda表达式的使用举例:(o1,02)->Integer.compare(o1,o2);1.2Lambda表达式的格式举例:Lambda形参列表->lambda1.3Lambda表达式的格式lambda操作符或箭头操作符的左边:lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。的右......
  • java8 map每10个分一组
    在Java8中,如果你想要将一个Map的条目每10个分为一组,你可以使用流(Streams)来实现这一功能。这里是一个例子,假设我们有一个Map<Integer,String>,我们想要将其每10个元素分为一组。首先,我们需要将Map的entrySet()转换为流,然后使用流的操作来实现分组。 importjava.util.......
  • JavaScript基础教程前言
     ---------------------------------------------------------------------有人22岁就毕业了,但等了五年才找到好的工作;有人25岁就当上CEO,却在50岁去世;也有人迟到50岁才当上CEO,然后活到90岁。 有人依然单身,同时也有人已婚。奥巴马55岁就退休,川普70岁才开始当总统。......
  • 【网络安全零基础入门】Linux安全加固(非常详细)零基础入门到精通,收藏这一篇就够了
    大家好,我是向阳。今天将继续带大家入门网络安全linux系统篇安全加固教程,全程干货,建议收藏哈安全加固方案原则1.版本升级对于系统和应用在使用过程中暴露的安全缺陷,系统或应用厂商会及时发布解决问题的升级补丁包。升级系统或应用版本,可有效解决旧版本存在的安全风险。......
  • 牛客网刷题(4)(Java之(static)静态变量、静态方法、静态代码块、静态内部类)
    目录一、static关键字。(1)牛客网题目。(2)总结。<1>静态变量。(类变量)1、特点。2、补充与注意。3、代码演示。<2>静态方法1、特点。2、补充与注意。3、代码演示。<3>静态代码块。1、特点。2、补充与注意。3、代码演示。<4>静态内部类。1、特点。2、注意事项。3......
  • java+vue计算机毕设冬季供热有限公司网站建设【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着冬季气温的逐渐降低,供热服务成为了城市居民生活中不可或缺的一部分。冬季供热有限公司作为城市供热的主要提供者,承担着保障居民温暖过冬的重要职......