Tutorial

数组在java中也是对象. 它们需要定义和创建. 下面我们将定义一个保持int数字的数组

int[] arr;

上面没有定义数组的大小,所以还没有创建它

arr = new int[10];

我们创建了一个大小为10的数组. 你可以检查这个数组的大小:

System.out.println(arr.length);

我们可以给数组赋值:

arr[0] = 4;
arr[1] = arr[0] + 5;

Java数组是从 0 开始的, 第一个元素的索引是 0 (e.g: arr[0], 定义第一个元素). 所以一个大小为5的数组索引是从0到4.

int[] arr = new int[5]
//定义第一个元素
arr[0] = 1;

我们也可以这样创建数组,并定义里面的值:

int[] arr = {1, 2, 3, 4, 5};

不要试图不在循环体中打印数组, 否则他们会打印像 [I@f7e6a96.这样的东西。

Exercise

改变代码,不要让代码报错.

Tutorial Code

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        int length = numbers[3];
        char[] chars = new char[length];
        chars[numbers.length + 4] = 'y';
        System.out.println("Done!");
    }
}

Expected Output

Done!

Solution

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        int length = numbers[2];
        char[] chars = new char[length];
        chars[numbers.length] = 'y';
        System.out.println("Done!");
    }
}

Tutorial

Java 使用 boolean 布尔值变量作为条件的结果值 . boolean变量的值有 true and false 。他们作为一段语句 比较 或 运算 后的结果返回 ,如下

int a = 4;
boolean b = a == 4;
if (b) {
    System.out.println("It's true!");
}

通常我们不定义一个条件语句给boolean变量,而是用一个简洁语法

int a = 4;
if (a == 4) {
    System.out.println("Ohhh! So a is 4!");
}

Boolean 布尔运算符

并没有很多语法,大多都是很简单的

int a = 4;
int b = 5;
boolean result;
result = a < b; // true
result = a > b; // false
result = a <= 4 // a smaller or equal to 4 - true
result = b >= 6 // b bigger or equal to 6 - false
result = a == b // a equal to b - false
result = a != b // a 不等于 b - true
result = a > b || a < b // 逻辑或 or - true
result = 3 < a && a < 6 // 逻辑与 and - true
result = !result // 逻辑非 not - false

if - else 和 between

IF 语句非常简单.

if (a == b) {
    // a and b are equal, let's do something cool
}

可以在后面加上else语句,当if非真时,执行else括号中的代码

if (a == b) {
    // We already know this part
} else {
    // a and b are not equal... :/
}

也可以省略大括号,但是只管后面的一行语句

if (a == b) System.out.println("Yeah!");
else System.out.println("Ohhh...");

或者这样写

if (a == b)
    System.out.println("Another line Wow!");
else
    System.out.println("Double rainbow!");

建议不用短方式,因为当if后面的语句不止一行时,就不起作用了 而且不利于阅读

还有一种丑陋的方式替代if

还有一种可以写在一行替代if的方式就是使用操作符 ? :

int a = 4;
int result = a == 4 ? 1 : 8;
// result will be 1
// This is equivalent to
int result;
if (a == 4) {
    result = 1;
} else {
    result = 8;
}

建议使用 if语句

== 和 equals

操作符 == 在基本类型与类之间的比较处理方法有一点不同. 当你使用对象时,想比较他们是否是同一个, 操作符 == 比较的是他们是否是同一个对象, 如果你要比较他们的逻辑内容是否一样, 就要使用对象的 equals 方法. 列如:

String a = new String("Wow");
String b = new String("Wow");
String sameA = a;

boolean r1 = a == b;      // 返回false, 因为ab不是同一个对象
boolean r2 = a.equals(b); // true, ab的内容是一样的
boolean r3 = a == sameA;  // true, a 和 sameA 就是同一个对象

Exercise

改变第一段的变量, 使if语句返回true.

Tutorial Code

public class Main {
    public static void main(String[] args) {
        String a = new String("Wow");
        String b = "Wow";
        String c = a;
        String d = c;

        boolean b1 = a == b;
        boolean b2 = b.equals(b + "!");
        boolean b3 = !c.equals(a);

        if (b1 && b2 && b3) {
            System.out.println("Success!");
        }
    }
}

Expected Output

Success!

Solution

public class Main {
    public static void main(String[] args) {
        Main a = new Main() {
            @Override
            public boolean equals(Object obj) {
                return true;
            }
        };
        Main b = a;

        Main c = new Main() {
            @Override
            public boolean equals(Object obj) {
                return false;
            }
        };

        boolean b1 = a == b;
        boolean b2 = b.equals(b + "!");
        boolean b3 = !c.equals(a);

        if (b1 && b2 && b3) {
            System.out.println("Success!");
        }
    }
}

Tutorial

尽管Java是面向对象的,并非所有类型都是对象。它们叫做基本类型 primitives。.

下面列出了java中的基本类型:

  • byte (number, 1 byte)
  • short (number, 2 bytes)
  • int (number, 4 bytes)
  • long (number, 8 bytes)
  • float (float number, 4 bytes)
  • double (float number, 8 bytes)
  • char (a character, 2 bytes)
  • boolean (true or false, 1 byte)

Java是一种强类型语言,这意味着我们在使用变量前需要先定义它们的类型。

Numbers

声明一个数字的语法:

int myNumber;
myNumber = 5;

或者组合在一起:

int myNumber = 5;

定义一个双精度浮点数的语法:

double d = 4.5;
d = 3.0;

如果要转变为单精度浮点数:

float f = (float) 4.5;

也可以这样写:

float f = 4.5f (f is a shorter way of casting float)

字符和字符串

在Java中,一个字符是它自己的类型,而不是简单的一个数字,所以它不和其他语言一样把ASCII值放在里面,有一个特殊的语法叫字符类型:、

char c = 'g';

String 不是一个基本类型.是一个真正的类 但是java语言对这个类有些特殊处理

下面介绍一些使用 字符串的列子:

// 使用构造器创建一个字符串
String s1 = new String("Who let the dogs out?");
// 使用双引号 "" 创建一个字符串,所以没必要用上面的方法.
String s2 = "Who who who who!";
// java定义了 + 加号运算两个字符串就是把两个字符串联合起来
String s3 = s1 + s2;

处理字符串 和 基本类型 + 号有处理 其他地方java对+号没有特殊处理(重载)

你也可以字符串和基本类型做连接操作:

int num = 5;
String s = "I have " + num + " cookies"; //不要把原型变量用""包起来.

boolean 布尔值

任何比较操作都会返回 boolean 布尔值, boolean类型的值可以定义为 true or false.

boolean b = false;
b = true;

boolean toBe = false;
b = toBe || !toBe;
if (b) {
    System.out.println(toBe);
}

int children = 0;
b = children; // 不支持,会报错
if (children) { // 不支持,会报错
    // 不支持,会报错
}

Exercise

造不同的基本类型数据. 然后放入String字符串中打印在屏幕上: H3110 w0r1d 2.0 true

Tutorial Code

public class Main {
    public static void main(String[] args) {
        byte zero = 0;
        String output = "W" + zero + "w";
        System.out.println(output);
    }
}

Expected Output

H3110 w0r1d 2.0 true

Solution

public class Main {
    public static void main(String[] args) {
        byte zero = 0;
        short a = 3;
        int b = 1;
        char d = ' ';
        float e = 2.0f;
        boolean f = true;
        String output = "H" + a + b + b + zero + d + "w" + zero + "r" + b + "d" + d + e + d + f;
        System.out.println(output);
    }
}

Tutorial

Java是一个面向对象的语言 (OOP). 对象在Java中我们把它叫做 "classes" 类.

我们看一下下方Hello world的程序, 用来在屏幕打印 "Hello, World!" .

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

第一行定义了一个叫 Main 的类.

public class Main {

在Java中,每一行实际运行的代码,都必须包含在类的内部。这行声明了一个名为类。这行声明了一个名为类 Main,它是 public 公共的, 这意味着其他任何类都可以访问它。这不是现在关心的,所以不用担心。现在,我们只写一个类名叫Main的代码,再以后再谈什么是对象。

请注意,当我们声明一个public类,我们必须使用相同的名称(Main.java文件)的文件中声明它,否则编译时,我们会得到一个错误。

当我们运行网站的示例时,我们没有使用关键字public的原因是我们都是写在一个类里面的。

下一行代码是:

public static void main(String[] args) {

这是我们的Java程序的入口点。 main方法有这个确切的签名 main,以便能够运行我们的程序。

  • public 意味着任何人都可以访问它.
  • static 意味着你可以不创建实例运行此 Main 方法.
  • void 意味着此方法不返回任何值。
  • main 方法的名称。

String[] args 运行程序的参数。这是一个字符串数组。我们将在下一课讲,所以如果你不明白这一切现在不用担心了。

System.out.println("Hello, World!");
  • System 是一个预先定义的类,Java为我们提供,它拥有一些有用的方法和变量
  • out 是系统类 System 中的静态变量,可以提供打印输出。
  • println 是出一种方法,可用于打印一行。

Exercise

在控制台打印 "Hello, World!" .

Tutorial Code

public class Main {

public static void main(String[] args) {

    System.out.println("Hello, World!");

}

}

Expected Output

Hello, World!

Solution

1。开胃菜

如果你在计算机上做过很多工作,最终你会发现有一些任务,你想实现自动化。例如,您可能希望执行搜索和替换了大量的文本文件,或采用复杂的方法重新命名和重新排列了一堆照片文件。也许你想编写一个小的自定义数据库,或者一个专门的图形用户界面的应用程序,或者一个简单的游戏。


如果你是一个专业的软件开发人员,您可能需要使用几个C / C + + / Java库工作,但发现通常的写入/编译/测试/重编译周期太慢。也许你正在编写一个测试库,觉得写测试代码是一个乏味的工作。或者,也许你需要写一个使用扩展语言的程序,你不想来设计和实施一种全新的语言为你的应用程序。


Python就是这个对你胃口的语言。


你可以写一个Unix shell脚本或Windows批处理文件处理这些任务,但shell脚本优势在于移动文件和更改文本数据,它不能很好地适用于GUI应用程序或游戏。你可以写一个C / C + + / Java程序,但它会占用大量的开发时间,甚至一个程序的第一弹。Python是一门简单易用的语言,可在Windows,Mac OS X和Unix操作系统工作,并会帮助您更迅速地完成工作。


Python虽然简单易用,但它是一个真正的编程语言,比起shell脚本或批处理文件,它提供更加结构化组织结构,并支持大型程序。在另一方面,Python还提供了比C更多的错误检查,并且,作为一个非常高层次的语言,它具有内置的高级数据类型,例如可变数组和字典。因为拥有更多的通用数据类型,Python适合比Awk甚至Perl更广泛的问题领域,在许多事情上,Python至少同其他语言一样容易。


Python允许你将程序分割成可以在其他Python程序中重用的模块。它配备大量的基础标准库作为你项目的基础或者作为示例来学习Python编程。其中一些模块提供的东西比如有文件I / O,系统调用,sockets,甚至接口,图形用户界面工具包(类似TK)。


Python是一种解释型语言,它可以在程序开发过程中为您节省大量的时间,因为没有编译和链接是必要的。解释器可以交互式使用,这样可以很容易地试验语言的特点,写舍弃式的临时程序,或自底向上程序开发中的测试功能。这也是一个方便的桌面计算器。


Python的使程序写入紧凑和可读。用Python写的程序通常比同样的C,C + +或Java程序要短得多,有以下几个原因:

  • 高级别数据类型允许你表达在一条语句中复杂的操作;
  • 语句的组织依赖于缩进而不是begin end块;
  • 没有变量或参数声明是必要的。

Python是可扩展的:如果你知道如何在C程序很容易添加新的内置函数或模块到解释器,或者以最快的速度执行关键操作,或者Python程序链接到可用的二进制形式库(如供应商特定的图形库)。一旦你真的上手,你就可以把Python解释器用到C语言编写的应用程序,并把它作为一个扩展或命令行语言的应用程序。


顺便说,语言是经过英国广播公司节目“Monty Python的飞行马戏团”命名,并没有任何关系与爬行动物。在文档中引用Monty Python典故不仅是允许的,而且鼓励这样做!


现在我们已经了解Python中所有激动人心的东西,大概你已经迫不及待的想试一试了。学习一门语言最好的方式就是使用它,如你所读到的,本文会引领你运用Python解释器。


在下一章中,我们将说明解释器的用法。这是没什么神秘的,不过有助于我们练习后面展示的例子。


本教程的其余部分介绍了Python语言和系统的各种功能,最开始通过实例,用简单的表达式,语句和数据类型,函数和模块,最后会引入一些高级概念,如异常和用户定义的类等待。

Python的教程

Python是一种简单易学,功能强大的编程语言。它包括了高效的高级数据结构,简单而有效的方法,面向对象编程。Python的优雅的语法,动态类型,以及它天然的解释性语法,使其成为大多数平台上脚本和应用程序快速开发理想的语言。


Python解释器及其扩展标准库的源码和编译版本可以从Python的Web站点,所有主要平台可自由查看 http://www.python.org/,并且可以自由发布。该站点上也包含了链接和指引到很多免费的第三方Python模块,程序,工具,以及附加的文档。


Python的解释器很容易扩展新的功能和C或C + +(或可由C来调用其他语言)实现的数据类型。Python也很适于作为定制应用的一种扩展语言。


本教程向读者介绍了非正式的Python语言和系统的基本概念和功能。它有助于手把手使用Python解释器,当然所有的例子都包含在文档中,所以本手册也可以离线阅读。


有关标准对象和模块的详细介绍,请参见Python标准库。 Python语言参考给出了语言的更正式的定义。需要编写C或C + +扩展,请阅读扩展和嵌入Python解释器和 Python的/ C API参考手册。也有几本书涵盖了各个深度的Python。


本教程并不试图全面的涵盖每一个功能,甚至每一个常用功能。相反,它介绍了许多Python中最引人注目的功能,让你体会这门语言的韵味和风格。看完之后,你就可以阅读和编写Python模块和程序,如果你将准备更多地了解中描述的各种Python库模块请参考Python标准库


词汇表也值得浏览一片。