【Java】(二)基础语法


Hello World!

首先看一个简单的 Java 程序,它将输出字符串 Hello World

public class HelloWorld {
   /* 第一个Java程序
    * 它将输出字符串 Hello World
    */
   public static void main(String[] args) {
       System.out.println("Hello World"); // 输出 Hello World
   }
}

在这里插入图片描述
编写 Java 程序时,应注意以下几点:
1️⃣ 主方法入口:所有的 Java 程序由 public static void main(String []args) 方法开始执行。
2️⃣ 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
3️⃣ 命名规则

  • 标识符:由字母、数字、下画线“"-"和美元符“$"组成,但数字不能开头,不能用关键字作标识符。
  • 类名和接口名:采用完整的英文描述符,并且所有单词的第一个字母大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如HelloWorld。
  • 变量和方法名:采用完整的英文描述符,第一个字母小写,任何中间的单词首字母大写,遵循驼峰命名法。
  • 包名:采用完整的英文描述符,且都是由小写字母组成。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。

1、Java标识符

Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于 Java 标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary
  • java中的单引号和双引号

单引号引的数据是char类型,char类型的值用单引号引起来的单个字符 如: char a = ‘b’,单引号只能引一个字符(表示单个字符)
双引号引的数据是String类型,双引号表示字符串、一个或多个字符,如:String c = “abc” 、String d=“a” ,双引号可以引0个及其以上字符(引用字符串)

2、Java关键字

下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Java修饰符

Java语言提供了很多修饰符,主要分为以下两类:

  • 访问控制修饰符 :default, public , protected, private
  • 非访问控制修饰符 : final, abstract, static

修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明:

public class ClassName {
   // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
   // 方法体
}

- 访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
我们可以通过以下表来说明访问权限:

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
publicYYYYY
protectedYYYY/N(说明)N
defaultYYYNN
privateYNNNN

① default-默认访问修饰符

使用默认访问修饰符声明的变量和方法,不使用任何关键字,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。

如下例所示,变量和方法的声明可以不使用任何修饰符。
实例

String version = "1.5.1";
boolean processOrder() {
   return true;
}

② private-私有访问修饰符

私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。
声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

下面的类使用了私有访问修饰符:

public class Logger {
   private String format;
   public String getFormat() {
      return this.format;
   }
   public void setFormat(String format) {
      this.format = format;
   }
}

实例中,Logger 类中的 format 变量为私有变量,所以其他类不能直接得到和设置该变量的值。为了使其他类能够操作该变量,定义了两个 public 方法:getFormat() (返回 format的值)和 setFormat(String)(设置 format 的值)

③ public-公有访问修饰符

被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。

如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

以下函数使用了公有访问控制:

public static void main(String[] arguments) {
   // ...
}

Java 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类。

④ protected-受保护的访问修饰符

protected 需要从以下两个点来分析说明:

  • 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;

  • 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。
接口及接口的成员变量和成员方法不能声明为 protected。 可以看看下图演示:

在这里插入图片描述
子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。
下面的父类使用了 protected 访问修饰符,子类重写了父类的 openSpeaker() 方法。

class AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}
 
class StreamingAudioPlayer extends AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}
  • 如果把 openSpeaker() 方法声明为 private,那么除了 AudioPlayer 之外的类将不能访问该方法。
  • 如果把 openSpeaker() 声明为 public,那么所有的类都能够访问该方法。
  • 如果我们只想让该方法对其所在类的子类可见,则将该方法声明为 protected。

请注意以下方法继承的规则:

  • 父类中声明为 public 的方法在子类中也必须为 public。

  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。

  • 父类中声明为 private 的方法,不能够被继承。

- 非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

① static 修饰符

用来修饰类方法和类变量。

  • 静态变量:
    static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。

  • 静态方法:
    static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。

② final 修饰符

用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

  • final 变量:
    final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。
    final 修饰符通常和 static 修饰符一起使用来创建类常量

实例

public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";
 
  public void changeValue(){
     value = 12; //将输出一个错误
  }
}
  • final 方法
    父类中的 final 方法可以被子类继承,但是不能被子类重写。
    声明 final 方法的主要目的是防止该方法的内容被修改。

如下所示,使用 final 修饰符声明方法。

public class Test{
    public final void changeName(){
       // 方法体
    }
}
  • final 类
    final 类不能被继承,没有类能够继承 final 类的任何特性。

实例

public final class Test {
   // 类体
}

③ abstract 修饰符

用来创建抽象类和抽象方法。不能修饰类中的成员变量。

  • 抽象类:
    抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
    一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
    抽象类可以包含抽象方法和非抽象方法。

实例

abstract class Caravan{
   private double price;
   private String model;
   private String year;
   public abstract void goFast(); //抽象方法
   public abstract void changeColor();
}
  • 抽象方法
    抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
    抽象方法不能被声明成 final 和 static。
    任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
    如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
    抽象方法的声明以分号结尾,例如:public abstract sample();。

实例

public abstract class SuperClass{
    abstract void m(); //抽象方法
}
 
class SubClass extends SuperClass{
     //实现抽象方法
      void m(){
          .........
      }
}

4、Java运算符

在这里插入图片描述
六种位运算符:

&     按位与
|      按位或
^      按位异或
~      取反
<<    左移,相当与*2
>>    右移,正数高位补0,负数由计算机决定

循环左移k次 (x<<k) | (x >> (32-k)),

循环右移k次 (x>>k) | (x << (32-k))

- 算术运算符:+ - * / % ++ –

1.取模:% 取余数,结果的符号取决于被模数的符号。
2.++:让变量的值自增1
1)前++:++在变量的前面,先自增1,后运算
2)后++:++在变量的后面,先运算,再自增1
3.–:让变量的值自减1
1)前–:--在变量的前面,先自减1,再运算
2)后–:--在变量的后面,先运算,再自减1

- 赋值运算符: = += -= *= /= %=

- 比较运算符:== < > <= >= !=

- 逻辑运算符: & && | || ! ^

1.逻辑与和短路与的区别: & &&
1)逻辑与:& 无论左端是否为false,右端都会执行。
2)短路与:&& 只要左端是false,则右端不执行,结果都为false。
2.逻辑或和短路或的区别:| ||
1)逻辑或:| 无论左端是否为true,右端都会执行。
2)短路或:|| 只要左端是true,则右端不执行,结果都为true。
注意:在日常开发中,我们建议使用短语与、短路或;同时运算符两端是条件表达式

5、Java注释

  • 单行注释“//”
  • 多行注释"/* */"
  • 文档注释“/** */”
public class HelloWorld {
   /* 这是第一个Java程序
    * 它将输出 Hello World
    * 这是一个多行注释的示例
    */
    public static void main(String[] args){
       // 这是单行注释的示例
       /* 这个也是单行注释的示例 */
       System.out.println("Hello World"); 
    }
}

6、Java数据类型

- 基本数据类型(8种)

①数值型

  • 整型:byte(-128~127) short int long
  • 浮点型: float double

②字符型:char

char类型占的是一个字符=两个字节=十六位

③布尔型:boolean

注意,布尔类型的变量只有两种值:true false

- 字符串

字符串广泛应用在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

- Java String 类

① 创建字符串

创建字符串最简单的方式如下:

String str = "Runoob";

在代码中遇到字符串常量时,这里的值是 “Runoob”",编译器会使用该值创建一个 String 对象。

和其它对象一样,可以使用关键字和构造方法来创建 String 对象。

用构造函数创建字符串:

String str2=new string("Runoob");

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:

String s1 = "Runoob";              // String 直接创建
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

- Java StringBuffer 和 StringBuilder 类

和String 类不同,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

实例

public class RunoobTest{
    public static void main(String args[]){
        StringBuilder sb = new StringBuilder(10);
        sb.append("Runoob..");
        System.out.println(sb);  
        sb.append("!");
        System.out.println(sb); 
        sb.insert(8, "Java");
        System.out.println(sb); 
        sb.delete(5,8);
        System.out.println(sb);  
    }
}

运行过程:
在这里插入图片描述
运行结果如下:

Runoob..
Runoob..!
Runoob..Java!
RunooJava!

- 数据类型转换

  • 发生的场景:不同类型的变量之间进行运算
  • 数据类型的转换分为两种:

1)自动类型转换:byte short char== >int==>long==>float==>double

注意:
a.当byte short char 之间进行运算时结果属于int型;
b.boolean类型不可以转换为其它的数据类型。

2)强制类型转换:将容量大的数据类型强制转换成容量小的数据类型,必须使用"(目标数据类型)"符号;
格式是:小的数据类型 = (小的数据类型)大的数据类型。

注意:强转后会造成精度的损失(丢失),丢的是高位。

7、Java变量

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier [ = value][, identifier [= value] ...] ;
格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。

以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "runoob";  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

Java 中主要有如下几种类型的变量

  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)

实例

public class Variable{
    static int allClicks=0;    // 类变量
 
    String str="hello world";  // 实例变量
 
    public void method(){
 
        int i =0;  // 局部变量
 
    }
}

① 局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

② 实例变量

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

③ 类变量(静态变量)

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和- static类型的变量。常量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
  • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

8、Java数组

数组中基本数据类型的默认值:

  • 整数类型的默认值为0
  • 浮点类型的默认值为0.0
  • 字符类型的默认值为/u0000
  • 布尔类型的默认值为false
  • String 类型的默认值为null

数组是储存在堆上的对象,可以保存多个同类型变量

① 声明数组变量

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar;   // 首选的方法

dataType arrayRefVar[];  // 效果相同,但不是首选方法

注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[]
风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

实例
下面是这两种语法的代码示例:

double[] myList;         // 首选的方法

double myList[];         //  效果相同,但不是首选方法

② 创建数组

Java语言使用new操作符来创建数组,语法如下:

arrayRefVar = new dataType[arraySize];

上面的语法语句做了两件事:

① 使用 dataType[arraySize] 创建了一个数组。
② 把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

另外,你还可以使用如下的方式创建数组。

dataType[] arrayRefVar = {value0, value1, ..., valuek}; 

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

实例
下面的语句首先声明了一个数组变量 myList,接着创建了一个包含 10 个 double 类型元素的数组,并且把它的引用赋值给 myList 变量。

public class TestArray {
   public static void main(String[] args) {
      // 数组大小
      int size = 10;
      // 定义数组
      double[] myList = new double[size];
      myList[0] = 5.6;
      myList[1] = 4.5;
      myList[2] = 3.3;
      myList[3] = 13.2;
      myList[4] = 4.0;
      myList[5] = 34.33;
      myList[6] = 34.0;
      myList[7] = 45.45;
      myList[8] = 99.993;
      myList[9] = 11123;
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < size; i++) {
         total += myList[i];
      }
      System.out.println("总和为: " + total);
   }
}

以上实例输出结果为:

总和为: 11367.373

③ 初始化

你可以在声明数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化)。例如:

  • 静态初始化
    静态初始化的同时就为数组元素分配空间并赋值
type[][] typeName = new type[typeLength1][typeLength2];
//type 可以为基本数据类型和复合数据类型,arraylength1 和 arraylength2 必须为正整数,arraylength1 为行数,arraylength2 为列数。
int intArray[] = {1,2,3,4};
String stringArray[] = {"微学苑", "http://www.weixueyuan.net", "一切编程语言都是纸老虎"};
  • 动态初始化
String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");

解析:
s[0]=new String[2] 和 s[1]=new String[3] 是为最高维分配引用空间,也就是为最高维限制其能保存数据的最长的长度,然后再为其每个数组元素单独分配空间 s0=new String(“Good”) 等操作。

④ 引用

对二维数组中的每个元素,引用方式为 arrayName[index1][index2],例如:

num[1][0];

⑤ 数组作为函数的参数

数组可以作为参数传递给方法。

例如,下面的例子就是一个打印 int 数组中元素的方法:

public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}

调用 printArray 方法打印出 3,1,2,6,4 和 2:

printArray(new int[]{3, 1, 2, 6, 4, 2});

⑥ 数组的遍历

实际开发中,经常需要遍历数组以获取数组中的每一个元素。最容易想到的方法是for循环。
每个数组都有一个length属性来指明它的长度,例如 intArray.length 指明数组 intArray 的长度。
例如:

int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
for(int i=0,len=arrayDemo.length; i<len; i++){
System.out.println(arrayDemo[i] + ", ");
}

输出结果:
1, 2, 4, 7, 9, 192, 100,

9、Java基本控制语句

- 条件语句

① if语句

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

② switch case语句

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

switch case 语句有如下规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default
    分支不需要 break 语句。

  • switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

- 循环语句

① while循环和do……while循环

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

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

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

② for循环

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

实例
练习: 打印100以内能被4整除不到能被7整除的数据,每行打印6个

int count = 0;
for(int i = 1; i<=100; i++){
    if(i%4==0 && i%7!=0){
        System.out.print(i+"\t");
        count++;// 6 
        if(count%6==0){
            System.out.print("\n");
        }       
    }
}

Java 增强 for 循环

for(声明语句 : 表达式)
{
   //代码句子
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

public class Test {
   public static void main(String args[]){
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"James", "Larry", "Tom", "Lacy"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }
}

其实也就是for循环的简化而已,按正常的for循环也可以

- 跳转语句

① break 关键字(跳出当前循环语句块)

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。

② continue 关键字(结束当前循环进入下一次循环)

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

  • 在 for 循环中,continue 语句使程序立即跳转到更新语句。
  • 在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值